init
This commit is contained in:
commit
8d3c8b3974
77 changed files with 682928 additions and 0 deletions
164
data/polizei_accounts_geo.csv
Normal file
164
data/polizei_accounts_geo.csv
Normal file
|
@ -0,0 +1,164 @@
|
|||
Polizei Account Name Typ Bundesland Stadt LAT LONG
|
||||
bpol_11 Bundespolizei Spezialkräfte Bundespolizei - - -
|
||||
bpol_bepo Bundesbereitschaftspolizei Bundesbereitschaftspolizei - - - -
|
||||
bpol_air_fra Bundespolizei Flughafen Frankfurt am Main Bundespolizei Hessen Frankfurt am Main 50.1109221 8.6821267
|
||||
bpol_b Bundespolizei Berlin Bundespolizei Berlin Berlin 52.520007 13.404954
|
||||
bpol_b_einsatz Bundespolizei Berlin Einsatz Bundespolizei Berlin Berlin 52.520007 13.404954
|
||||
bpol_bw Bundespolizei Baden-Württemberg Bundespolizei Baden-Württemberg Böblingen 48.681331 9.008830
|
||||
bpol_by Bundespolizei Bayern Bundespolizei Bayern München 48.135125 11.581981
|
||||
bpol_koblenz Bundespolizei Koblenz Bundespolizei Rheinland-Pfalz Koblenz 50.356943 7.588996
|
||||
bpol_kueste Bundespolizei Küste Bundespolizei Schleswig-Holstein Bad Bramstedt 53.919582 9.882173
|
||||
bpol_nord Bundespolizei Nord Bundespolizei Niedersachsen Hannover 52.3744779 9.7385532
|
||||
bpol_nrw Bundespolizei NRW Bundespolizei Nordrhein-Westfalen Sankt Augustin 50.769478 7.187579
|
||||
bpol_pir Bundespolizei Mitteldeutschland Bundespolizei Sachsen-Anhalt Magdeburg 52.120533 11.627624
|
||||
bremenpolizei Polizei Bremen Polizei Bremen Bremen 53.079296 8.801694
|
||||
lkabawue Landeskriminalamt BW Landeskriminalamt Baden-Württemberg Stuttgart 48.775846 9.182932
|
||||
lka_bayern Bayerisches Landeskriminalamt Landeskriminalamt Bayern München 48.135125 11.581981
|
||||
lka_hessen Hessisches Landeskriminalamt Landeskriminalamt Hessen Wiesbaden 50.0820384 8.2416556
|
||||
lka_rlp Landeskriminalamt Rheinland-Pfalz Landeskriminalamt Rheinland-Pfalz Mainz 49.992862 8.247253
|
||||
pol_grafschaft Polizei Grf Bentheim Polizei Niedersachsen Nordhorn 52.429580 7.068571
|
||||
polizeiaalen Polizei Aalen Polizei Baden-Württemberg Aalen 48.836689 10.097116
|
||||
polizei_aur_wtm Polizei Aurich / WTM Polizei Niedersachsen Aurich 53.470839 7.484831
|
||||
polizei_badn Polizei Bad Nenndorf Polizei Niedersachsen Bad Nenndorf 52.336191 9.374258
|
||||
polizeibayern Polizei Bayern Polizei Bayern München 48.135125 11.581981
|
||||
polizeibb Polizei Brandenburg Polizei Brandenburg Potsdam 52.390569 13.064473
|
||||
polizeibb_e PolizeiBrandenburg_E Polizei Brandenburg Potsdam 52.390569 13.064473
|
||||
polizei_bbg Polizei Bückeburg Polizei Niedersachsen Bückeburg 52.259276 9.052123
|
||||
polizeiberlin Polizei Berlin Polizei Berlin Berlin 52.520007 13.404954
|
||||
polizeiberlin_e Polizei Berlin Einsatz Polizei Berlin Berlin 52.520007 13.404954
|
||||
polizeibhv Polizei Bremerhaven Polizei Bremen Bremerhaven 53.539584 8.580942
|
||||
polizei_bs Polizei Braunschweig Polizei Niedersachsen Braunschweig 52.268874 10.526770
|
||||
polizei_ce Polizei Celle Polizei Niedersachsen Celle 52.617596 10.062852
|
||||
polizei_clp_vec Polizei Cloppenburg/Vechta Polizei Niedersachsen Cloppenburg 52.844198 8.053016
|
||||
polizei_cux Polizei Cuxhaven Polizei Niedersachsen Cuxhaven 53.859336 8.687906
|
||||
polizei_del Polizei Delmenhorst/Oldenburg-Land/Wesermarsch Polizei Niedersachsen Delmenhorst 53.052189 8.635593
|
||||
polizei_dero Polizei Dessau-Roßlau Polizei Sachsen-Anhalt Dessau-Roßlau 51.842828 12.230393
|
||||
polizei_dh Polizei Diepholz Polizei Niedersachsen Diepholz 52.605646 8.370788
|
||||
polizei_el Polizei Emsland Polizei Niedersachsen Lingen 52.540308 7.329286
|
||||
polizei_ffm Polizei Frankfurt Polizei Hessen Frankfurt am Main 50.110922 8.682127
|
||||
polizeifr Polizei Freiburg Polizei Baden-Württemberg Freiburg 47.999008 7.842104
|
||||
polizei_ft Polizei Frankenthal Polizei Rheinland-Pfalz Frankenthal 49.533333 8.350000
|
||||
polizei_ger Polizei Germersheim Polizei Rheinland-Pfalz Germersheim 49.214024 8.366815
|
||||
polizei_gf Polizei Gifhorn Polizei Niedersachsen Gifhorn 52.480909 10.550783
|
||||
polizei_goe Polizei Göttingen Polizei Niedersachsen Göttingen 51.541280 9.915804
|
||||
polizei_gs Polizei Goslar Polizei Niedersachsen Goslar 51.905953 10.428996
|
||||
polizei_h Polizei Hannover Polizei Niedersachsen Hannover 52.3744779 9.7385532
|
||||
polizei_hal Polizei Halle (Saale) Polizei Sachsen-Anhalt Halle (Saale) 51.4825041 11.9705452
|
||||
polizeihamburg Polizei Hamburg Polizei Hamburg Hamburg 53.550341 10.000654
|
||||
polizei_hi Polizei Hildesheim Polizei Niedersachsen Hildesheim 52.1521636 9.9513046
|
||||
polizei_hk Polizei Heidekreis Polizei Niedersachsen Soltau 52.9859666 9.8433909
|
||||
polizei_hm Polizei Hameln Polizei Niedersachsen Hameln-Pyrmont 52.0895789 9.3875409
|
||||
polizeihn Polizei Heilbronn Polizei Baden-Württemberg Heilbronn 49.142291 9.218655
|
||||
polizei_hol Polizei Holzminden Polizei Niedersachsen Holzminden 51.828835 9.4466591
|
||||
polizei_hst Polizei Stralsund Polizei Mecklenburg-Vorpommern Stralsund 54.3096314 13.0820846
|
||||
polizei_ka Polizei Karlsruhe Polizei Baden-Württemberg Karlsruhe 49.0068705 8.4034195
|
||||
polizei_kl Polizei Kaiserslautern Polizei Rheinland-Pfalz Kaiserslautern 49.4432174 7.7689951
|
||||
polizei_ko Polizei Koblenz Polizei Rheinland-Pfalz Koblenz 50.3533278 7.5943951
|
||||
polizeikonstanz Polizei Konstanz Polizei Baden-Württemberg Konstanz 47.659216 9.1750718
|
||||
polizeilb Polizei Ludwigsburg Polizei Baden-Württemberg Ludwigsburg 48.8953937 9.1895147
|
||||
polizei_ler_emd Polizei Leer / Emden Polizei Niedersachsen Leer 53.2327625 7.4577265
|
||||
polizei_lg Polizei Lüneburg Polizei Niedersachsen Lüneburg 53.248706 10.407855
|
||||
polizeimainz Polizei Mainz Polizei Rheinland-Pfalz Mainz 50.0012314 8.2762513
|
||||
polizeimannheim Polizei Mannheim Polizei Baden-Württemberg Mannheim 49.4892913 8.4673098
|
||||
polizei_md Polizei Magdeburg Polizei Sachsen-Anhalt Magdeburg 52.1315889 11.6399609
|
||||
polizeimfr Polizei Mittelfranken Polizei Bayern Nürnberg 49.453872 11.077298
|
||||
polizei_mh Polizei Mittelhessen Polizei Hessen Gießen 50.5862066 8.6742306
|
||||
polizei_mse Polizei Mecklenburgische Seenplatte Polizei Mecklenburg-Vorpommern Neubrandenburg 53.5574458 13.2602781
|
||||
polizeimuenchen Polizei München Polizei Bayern München 48.135125 11.581981
|
||||
polizeinb Polizei Niederbayern Polizei Bayern Straubing 48.8819801 12.569716
|
||||
polizei_nbg Polizei Nienburg Polizei Niedersachsen Nienburg (Weser) 52.6487602 9.2578105
|
||||
polizeineustadt Polizei Neustadt Polizei Rheinland-Pfalz Neustadt an der Weinstraße 49.3539802 8.1350021
|
||||
polizei_nh Polizei Nordhessen Polizei Hessen Kassel 51.3154546 9.4924096
|
||||
polizeini_lka LKA Niedersachsen Landeskriminalamt Niedersachsen Hannover 52.3744779 9.7385532
|
||||
polizei_nom Polizei Northeim Polizei Niedersachsen Northeim 51.705401 9.9972782
|
||||
polizei_nrw_ac Polizei NRW AC Polizei Nordrhein-Westfalen Aachen 50.776351 6.083862
|
||||
polizei_nrw_bi Polizei NRW BI Polizei Nordrhein-Westfalen Bielefeld 52.0191005 8.531007
|
||||
polizei_nrw_bn Polizei NRW BN Polizei Nordrhein-Westfalen Bonn 50.735851 7.10066
|
||||
polizei_nrw_bo Polizei NRW BO Polizei Nordrhein-Westfalen Bochum 51.4818111 7.2196635
|
||||
polizei_nrw_bor Polizei NRW BOR Polizei Nordrhein-Westfalen Borken 51.8443183 6.8582247
|
||||
polizei_nrw_coe Polizei NRW COE Polizei Nordrhein-Westfalen Coesfeld 51.9458943 7.1691108
|
||||
polizei_nrw_d Polizei NRW D Polizei Nordrhein-Westfalen Düsseldorf 51.2254018 6.7763137
|
||||
polizei_nrw_dn Polizei NRW DN Polizei Nordrhein-Westfalen Düren 50.8031684 6.4820806
|
||||
polizei_nrw_do Polizei NRW DO Polizei Nordrhein-Westfalen Dortmund 51.5142273 7.4652789
|
||||
polizei_nrw_du Polizei NRW DU Polizei Nordrhein-Westfalen Duisburg 51.434999 6.759562
|
||||
polizei_nrw_e Polizei NRW E Polizei Nordrhein-Westfalen Essen 51.4582235 7.0158171
|
||||
polizei_nrw_en Polizei NRW EN Polizei Nordrhein-Westfalen Ennepe-Ruhr-Kreis 51.3481444 7.3351844
|
||||
polizei_nrw_eu Polizei NRW EU Polizei Nordrhein-Westfalen Euskirchen 50.6612623 6.7871219
|
||||
polizei_nrw_ge Polizei NRW GE Polizei Nordrhein-Westfalen Gelsenkirchen 51.5110321 7.0960124
|
||||
polizei_nrw_gm Polizei NRW GM Polizei Nordrhein-Westfalen Gummersbach 51.0277658 7.5630545
|
||||
polizei_nrw_gt Polizei NRW GT Polizei Nordrhein-Westfalen Gütersloh 51.9063997 8.3782078
|
||||
polizei_nrw_ha Polizei NRW HA Polizei Nordrhein-Westfalen Hagen 51.3582945 7.473296
|
||||
polizei_nrw_ham Polizei NRW HAM Polizei Nordrhein-Westfalen Hamm 51.6804093 7.815197
|
||||
polizei_nrw_hf Polizei NRW HF Polizei Nordrhein-Westfalen Herford 52.1152245 8.6711118
|
||||
polizei_nrw_hs Polizei NRW HS Polizei Nordrhein-Westfalen Heinsberg 51.0654268 6.0984461
|
||||
polizei_nrw_hsk Polizei NRW HSK Polizei Nordrhein-Westfalen Hochsauerlandkreis 51.3208247 8.2684925
|
||||
polizei_nrw_hx Polizei NRW HX Polizei Nordrhein-Westfalen Höxter 51.7747369 9.3816877
|
||||
polizei_nrw_k Polizei NRW K Polizei Nordrhein-Westfalen Köln 50.938361 6.959974
|
||||
polizei_nrw_kle Polizei NRW KLE Polizei Nordrhein-Westfalen Kleve 51.7854839 6.1313674
|
||||
polizei_nrw_kr Polizei NRW KR Polizei Nordrhein-Westfalen Krefeld 51.3331205 6.5623343
|
||||
polizei_nrw_lip Polizei NRW LIP Polizei Nordrhein-Westfalen Detmold 51.936284 8.8791526
|
||||
polizei_nrw_lka Polizei NRW LKA Landeskriminalamt Nordrhein-Westfalen Düsseldorf 51.2254018 6.7763137
|
||||
polizei_nrw_me polizei_nrw_me Polizei Nordrhein-Westfalen Mettmann 51.2527778 6.9777778
|
||||
polizei_nrw_mg Polizei NRW MG Polizei Nordrhein-Westfalen Mönchengladbach 51.1946983 6.4353641
|
||||
polizei_nrw_mi Polizei NRW MI Polizei Nordrhein-Westfalen Minden 52.2881045 8.9168852
|
||||
polizei_nrw_mk Polizei NRW MK Polizei Nordrhein-Westfalen Märkischer Kreis 51.2734857 7.7274266
|
||||
polizei_nrw_ms Polizei NRW MS Polizei Nordrhein-Westfalen Münster 51.9625101 7.6251879
|
||||
polizei_nrw_ob Polizei NRW OB Polizei Nordrhein-Westfalen Oberhausen 51.4696137 6.8514435
|
||||
polizei_nrw_oe Polizei NRW OE Polizei Nordrhein-Westfalen Olpe 51.0297603 7.8424193
|
||||
polizei_nrw_pb Polizei NRW PB Polizei Nordrhein-Westfalen Paderborn 51.7189596 8.7648698
|
||||
polizei_nrw_rbk Polizei NRW RBK Polizei Nordrhein-Westfalen Rheinisch-Bergischer-Kreis 51.0139774 7.1715584
|
||||
polizei_nrw_re Polizei NRW RE Polizei Nordrhein-Westfalen Recklinghausen 51.6143815 7.1978546
|
||||
polizei_nrw_rek Polizei NRW REK Polizei Nordrhein-Westfalen Rhein-Erft-Kreis 50.90334 6.763334
|
||||
polizei_nrw_rkn Polizei NRW RKN Polizei Nordrhein-Westfalen Rhein-Kreis Neuss 51.1758799 6.6600606
|
||||
polizei_nrw_si Polizei NRW SI Polizei Nordrhein-Westfalen Siegen-Wittgenstein 50.97444 8.23972
|
||||
polizei_nrw_so Polizei NRW SO Polizei Nordrhein-Westfalen Soest 51.5725501 8.1061259
|
||||
polizei_nrw_st Polizei NRW ST Polizei Nordrhein-Westfalen Steinfurt 52.1294289 7.3903454
|
||||
polizei_nrw_su Polizei NRW SU Polizei Nordrhein-Westfalen Rhein-Sieg-Kreis 50.7527986 7.3813038
|
||||
polizei_nrw_un Polizei NRW UN Polizei Nordrhein-Westfalen Unna 51.5348835 7.689014
|
||||
polizei_nrw_vie Polizei NRW VIE Polizei Nordrhein-Westfalen Viersen 51.2562118 6.3905476
|
||||
polizei_nrw_w Polizei NRW W Polizei Nordrhein-Westfalen Wuppertal 51.264018 7.1780374
|
||||
polizei_nrw_waf Polizei NRW WAF Polizei Nordrhein-Westfalen Warendorf 51.9532449 7.9912335
|
||||
polizei_nrw_wes Polizei NRW WES Polizei Nordrhein-Westfalen Wesel 51.6576909 6.617087
|
||||
polizeiobn Polizei Oberbayern N Polizei Bayern Ingolstadt 48.7630165 11.4250395
|
||||
polizeiobs PolizeiOberbayernSüd Polizei Bayern Rosenheim 47.8539273 12.127262
|
||||
polizeiofr Polizei Oberfranken Polizei Bayern Oberfranken 50.0553084 11.5455233
|
||||
polizeiog Polizei Offenburg Polizei Baden-Württemberg Offenburg 48.4716556 7.944378
|
||||
polizei_oh Polizei Osthessen Polizei Hessen Fulda 50.5521486 9.676511
|
||||
polizei_oha Polizei Osterode Polizei Niedersachsen Osterode am Harz 51.72784 10.2508204
|
||||
polizei_ol Polizei Oldenburg-Stadt/Ammerland Polizei Niedersachsen Oldenburg 53.1389753 8.2146017
|
||||
polizeiopf Polizei Oberpfalz Polizei Bayern Regensburg 49.0195333 12.0974869
|
||||
polizei_os Polizei Osnabrück Polizei Niedersachsen Osnabrück 52.266837 8.049741
|
||||
polizei_pf Polizei Pforzheim Polizei Baden-Württemberg Pforzheim 48.8908846 8.7029532
|
||||
polizei_pp_nb Polizeipräsidium NB Polizeipräsidium Mecklenburg-Vorpommern Neubrandenburg 53.5574458 13.2602781
|
||||
polizei_pp_ros Polizeipräsidium Rostock Polizeipräsidium Mecklenburg-Vorpommern Rostock 54.0924445 12.1286127
|
||||
polizei_ps Polizei Pirmasens Polizei Rheinland-Pfalz Pirmasens 49.1996961 7.6087847
|
||||
polizei_rostock Polizei Rostock Polizei Mecklenburg-Vorpommern Rostock 54.0924445 12.1286127
|
||||
polizei_row Polizei Rotenburg Polizei Niedersachsen Rotenburg (Wümme) 53.2520924 9.3151133
|
||||
polizeirt Polizei Reutlingen Polizei Baden-Württemberg Reutlingen 48.4919508 9.2114144
|
||||
polizeirv Polizei Ravensburg Polizei Baden-Württemberg Ravensburg 47.7811014 9.612468
|
||||
polizeisaarland Polizei Saarland Polizei Saarland Saarbrücken 49.234362 6.996379
|
||||
polizeisachsen Polizei Sachsen Polizei Sachsen Dresden 51.0493286 13.7381437
|
||||
polizei_sdl Polizei Stendal Polizei Sachsen-Anhalt Stendal 52.6050782 11.8594279
|
||||
polizei_sn Polizei Schwerin Polizei Mecklenburg-Vorpommern Schwerin 53.6288297 11.4148038
|
||||
polizei_soh Polizei Südosthessen Polizei Hessen Offenbach am Main 50.1055002 8.7610698
|
||||
polizei_std Polizei Stade Polizei Niedersachsen Stade 53.599794 9.475438
|
||||
polizei_sth Polizei Stadthagen Polizei Niedersachsen Stadthagen 52.3289688 9.2053496
|
||||
polizei_suedhe Polizei Südhessen Polizei Hessen Darmstadt 49.872775 8.651177
|
||||
polizeiswn Polizei Schwaben Nord Polizei Bayern Augsburg 48.3668041 10.8986971
|
||||
polizeisws Polizei Schwaben S/W Polizei Bayern Kempten (Allgäu) 47.7267063 10.3168835
|
||||
polizei_sz Polizei SZ / PE / WF Polizei Niedersachsen Salzgitter 52.1503721 10.3593147
|
||||
polizei_thuer Polizei Thüringen Polizei Thüringen Erfurt 50.9777974 11.0287364
|
||||
polizeitrier Polizei Trier Polizei Rheinland-Pfalz Trier 49.7596208 6.6441878
|
||||
polizeiufr Polizei Unterfranken Polizei Bayern Würzburg 49.79245 9.932966
|
||||
polizeiul Polizei Ulm Polizei Baden-Württemberg Ulm 48.3974003 9.9934336
|
||||
polizei_ver_ohz Polizei Verden/Osterholz Polizei Niedersachsen Verden 52.922341 9.228153
|
||||
polizeivg Polizei Vorpommern-Greifswald Polizei Mecklenburg-Vorpommern Anklam 53.8560526 13.688091
|
||||
polizei_wh Polizei Westhessen Polizei Hessen Wiesbaden 50.0820384 8.2416556
|
||||
polizei_whv_fri Polizei Wilhelmshaven/Friesland Polizei Niedersachsen Wilhelmshaven 53.5278793 8.106301
|
||||
polizeiwittlich Polizei Wittlich Polizei Rheinland-Pfalz Wittlich 49.9850353 6.88844
|
||||
polizei_wl Polizei LK Harburg Polizei Niedersachsen Harburg 53.3172237 9.9084936
|
||||
polizei_wob Polizei Wolfsburg Polizei Niedersachsen Wolfsburg 52.4205588 10.7861682
|
||||
polizei_zpd_ni Polizei ZPD NI Polizei Niedersachsen Hannover 52.3744779 9.7385532
|
||||
pp_rheinpfalz Polizei Rheinpfalz Polizei Rheinland-Pfalz Ludwigshafen am Rhein 49.4704113 8.4381568
|
||||
pp_stuttgart Polizei Stuttgart Polizei Baden-Württemberg Stuttgart 48.7784485 9.1800132
|
||||
sh_polizei Polizei SH Polizei Schleswig-Holstein Kiel 54.3227085 10.135555
|
|
84795
data/tweets-1679742620302.csv
Normal file
84795
data/tweets-1679742620302.csv
Normal file
File diff suppressed because it is too large
Load diff
266194
data/tweets-1679742698645.csv
Normal file
266194
data/tweets-1679742698645.csv
Normal file
File diff suppressed because it is too large
Load diff
11560
data/tweets-1679742702794.csv
Normal file
11560
data/tweets-1679742702794.csv
Normal file
File diff suppressed because it is too large
Load diff
282283
data/tweets.csv
Normal file
282283
data/tweets.csv
Normal file
File diff suppressed because it is too large
Load diff
23
ergebnisse_hackathon_repo/LICENSE
Normal file
23
ergebnisse_hackathon_repo/LICENSE
Normal file
|
@ -0,0 +1,23 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2021 copbird
|
||||
|
||||
Permission is hereby granted, free of charge, to any person, except associates
|
||||
of law enforcement agencies, obtaining a copy of this software and associated
|
||||
documentation files (the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to permit persons
|
||||
to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
Addition: permission for
|
30
ergebnisse_hackathon_repo/README.md
Normal file
30
ergebnisse_hackathon_repo/README.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
# CopBird Hackathon - Ergebnisse
|
||||
|
||||
Hier finden sich alle Ergebnisse der Teams, die an dem Hackathon teilgenommen habe.
|
||||
|
||||
## Anleitung für die Teams
|
||||
|
||||
1. Erstellt euch einen Gitlab-Account oder benutzt einen existierenden.
|
||||
2. Stellt einen Access Request für das Projekt: https://gitlab.com/copbird-hackathon/ergebnisse/-/project_members/request_access
|
||||
2. Klont euch das Repository:
|
||||
```
|
||||
git clone https://gitlab.com/copbird-hackathon/ergebnisse.git
|
||||
```
|
||||
3. Erstellt einen neuen Branch für euer Team in der Form `team-<Teamnummer>`, also z.B. für Team 1 heißt der Branch: `team-01`.
|
||||
```
|
||||
git checkout -b team-<Teamnummer>
|
||||
```
|
||||
4. Kopiert das, was ihr an Ergebnissen veröffentlichen wollt, in den jeweiligen Teamordner z.B. für Team 1 in den Ordner `team-01`.
|
||||
5. Übernehmt die Änderungen in Git (ersetzt das `<Teamnummer>` durch eure Teamnummer):
|
||||
```
|
||||
git add .
|
||||
```
|
||||
```
|
||||
git commit -m "Ergebnisse Team <Teamnummer> hinzugefügt"
|
||||
```
|
||||
6. Sobald wir euren Zugang gewährt haben, ladet eure Ergebnisse auf Gitlab hoch (ersetzt das `<Teamnummer>` durch eure Teamnummer).
|
||||
```
|
||||
git push -u origin team-<Teamnummer>
|
||||
```
|
||||
7. Erstellt einen neuen Merge Request unter [Merge Requests](https://gitlab.com/copbird-hackathon/ergebnisse/-/merge_requests) von eurem Teambranch `team-<Teamnummer` auf `main`.
|
||||
8. Wir schauen uns euren Merge Request an und mergen ihn in den `main`.
|
56
ergebnisse_hackathon_repo/team-11/.ipynb_checkpoints/copscrape-checkpoint.py
Executable file
56
ergebnisse_hackathon_repo/team-11/.ipynb_checkpoints/copscrape-checkpoint.py
Executable file
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import pandas as pd
|
||||
import snscrape.modules.twitter as sntwitter
|
||||
import datetime, time
|
||||
import os
|
||||
import plotly.express as px
|
||||
|
||||
|
||||
police_handles = ['PolizeiWittlich','LKA_Bayern','Polizei_SDL','PolizeiRV','Polizei_BadN','Polizei_ZPD_NI','Polizei_KO','PolizeiMainz','polizei_nrw_ob','PP_Rheinpfalz','PolizeiTrier',\
|
||||
'PolizeiSachsen','Polizei_Ffm','Polizei_nrw_ms','Polizei_NRW_E','Polizei_NRW_AC','polizei_nrw_bi','polizei_nrw_bo','polizei_nrw_bn','polizei_nrw_bor',\
|
||||
'polizei_nrw_coe','polizei_nrw_du','polizei_nrw_dn','polizei_nrw_d','polizei_nrw_w','polizei_nrw_en','polizei_nrw_waf','polizei_nrw_wes','polizei_nrw_un',\
|
||||
'polizei_nrw_eu','polizei_nrw_vie','polizei_nrw_st','polizei_nrw_ge','polizei_nrw_gt','polizei_nrw_so','polizei_nrw_si','polizei_nrw_su','polizei_nrw_rkn',\
|
||||
'polizei_nrw_rbk','polizei_nrw_re','polizei_nrw_rek','polizei_nrw_pb','polizei_nrw_gm','polizei_nrw_oe','polizei_nrw_mi','polizei_nrw_me','polizei_nrw_mk',\
|
||||
'polizei_nrw_mg','polizei_nrw_lip','polizei_nrw_hx','polizei_nrw_kr','polizei_nrw_hsk','polizei_nrw_kle','polizei_nrw_hs','polizei_nrw_ham','polizei_nrw_hf',\
|
||||
'polizei_nrw_ha','polizeiberlin','PolizeiBerlin_E','Polizei_PS','polizei_nrw_k','PolizeiMuenchen','Polizei_MD','PolizeiHamburg','polizeiOBS','Polizei_KA',\
|
||||
'Polizei_Thuer','Polizei_NH','bpol_bw','bpol_by','Polizei_PP_NB','LKA_Hessen','PolizeiVG','Polizei_SN','Polizei_HST','PolizeiBhv','Polizei_OH','PolizeiMannheim',\
|
||||
'PP_Stuttgart','Polizei_MSE','Polizei_soh','Polizei_DeRo','Polizei_FT','Polizei_HAL','PolizeiKonstanz','bpol_b','bpol_koblenz','bpol_kueste','bpol_bepo',\
|
||||
'bpol_air_fra','bpol_nord','bpol_pir','bpol_nrw','bpol_b_einsatz','Polizei_MH','PolizeiBB','PolizeiUFR','Polizei_WH','PolizeiBayern','polizeiNB','PolizeiLB',\
|
||||
'Polizei_SuedHE','Polizei_BS','Polizei_OS','PolizeiNI_lka','polizei_nrw_do','Polizei_LG','Polizei_H','Polizei_WL','Polizei_GOE','Polizei_HI','Polizei_EL',\
|
||||
'Polizei_HM','Polizei_NBG','Polizei_LER_EMD','Polizei_AUR_WTM','Polizei_NOM','Polizei_HOL','Polizei_OHA','Polizei_STH','Pol_Grafschaft','Polizei_STD','Polizei_BBG',\
|
||||
'Polizei_Rostock','Polizei_OL','PolizeiHN','PolizeiUL','polizeiSWN','Polizei_ROW','Polizei_CE','PolizeiAalen','PolizeiOFR','PolizeiSWS','polizeiopf','PolizeiMFR',\
|
||||
'BremenPolizei','PolizeiOG','SH_Polizei','Polizei_HK','LkaBaWue','polizeiOBN','PolizeiSaarland','PolizeiRT','Polizei_WOB','PolizeiFR','Polizei_GER','PolizeiNeustadt',\
|
||||
'bpol_11','Polizei_GF','Polizei_KL','Polizei_GS','LKA_RLP','Polizei_SZ','PolizeiBB_E','Polizei_CUX','Polizei_DH','Polizei_WHV_FRI','Polizei_DEL','Polizei_CLP_VEC',\
|
||||
'Polizei_VER_OHZ','Polizei_PP_ROS']
|
||||
|
||||
limit = None
|
||||
|
||||
names = []
|
||||
usernames = []
|
||||
followers = []
|
||||
|
||||
for row in police_handles:
|
||||
twitter_user_in = sntwitter.TwitterUserScraper(row, False)
|
||||
names += [ str(twitter_user_in.entity.displayname) ]
|
||||
usernames += [ str(twitter_user_in.entity.username) ]
|
||||
followers += [ int(twitter_user_in.entity.followersCount) ]
|
||||
|
||||
# Existenzprüfung von ./cops.csv
|
||||
if os.access('./cops.csv', mode = os.O_RDONLY) is False:
|
||||
add_headers = True
|
||||
else:
|
||||
add_headers = False
|
||||
|
||||
d = {'names' : names, 'user_id': usernames, 'followers': followers, 'date': str(datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S'))}
|
||||
df = pd.DataFrame(data = d)
|
||||
#df
|
||||
df.to_csv('./cops.csv', index = False, mode = 'a+', header = add_headers)
|
||||
|
||||
df_plot = pd.read_csv('./cops.csv')
|
||||
fig = px.line(df_plot, x="date", y="followers", color="names", hover_data=['user_id'], title="Twitter: Entwicklung der Polizei-Account Follower", labels = {'names':'Pozileidirektion','user_id':'Account', 'followers': 'Follower', 'date':'Datum'})
|
||||
fig.update_traces(mode='markers+lines')
|
||||
fig.update_layout(xaxis_title = 'Datum', yaxis_title = 'Follower', xaxis_tickformat = '%Y-%m-%d %H:%M:%S', yaxis_tickformat = ',', legend_traceorder="reversed")
|
||||
fig.write_html("./index.html")
|
||||
|
||||
fig.show() # TODO: Zeitangabe nicer machen, evtl. gruppieren? nach Bundesland? nach landeskriminalamt/polizei? oder urban vs. rural oder so?
|
15
ergebnisse_hackathon_repo/team-11/Pipfile
Normal file
15
ergebnisse_hackathon_repo/team-11/Pipfile
Normal file
|
@ -0,0 +1,15 @@
|
|||
[[source]]
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
plotly = "*"
|
||||
snscrape = {git = "https://github.com/JustAnotherArchivist/snscrape.git"}
|
||||
pandas = "*"
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[requires]
|
||||
python_version = "3.9"
|
||||
|
197
ergebnisse_hackathon_repo/team-11/README.md
Normal file
197
ergebnisse_hackathon_repo/team-11/README.md
Normal file
|
@ -0,0 +1,197 @@
|
|||
*Git Repository von Team 11 des Copbird Hackathon im Mai 2021*
|
||||
|
||||
### Fragestellungen
|
||||
|
||||
|
||||
Was wollen wir tun? (Frage- / Problemstellung)
|
||||
|
||||
1. Wie sieht die Entwicklung der Followeranzahl aus? Besonders interessant ist hierbei die Entwicklung im Rahmen bestimmer Events z.B. Demo's.
|
||||
2. Welche Tweets (von welcher User\*In) behandeln emotionale Thematiken (Sentiment Analyse) ?
|
||||
|
||||
Mögliche Hürden:
|
||||
|
||||
1. Analyse der Followerentwicklung nicht ohne weiteres möglich, da Twitter keine entsprechenden Information aus der Vergangenheit bereitstellt.
|
||||
Es können nur Daten ab einen bestimmten Zeitpunkt ausgewertet werden (in Form eines Python Twitter Scraper scripts, welches regelmäßig Twitter kontaktiert).
|
||||
2. Emotionale Themen auswerten birgt Fallstricke bzgl. Validität/Interpretation.
|
||||
|
||||
|
||||
|
||||
### Projekt
|
||||
|
||||
Wir schreiben ein Skript, das das nächste Jahr lang jeden Tag die Followerzahlen der deutschen Polizeiaccounts scrapen wird, auf einem Server abspeichert und auf einer Website grafisch ausgibt.
|
||||
Die Ergebnisse können dann auf einem eventuellen Copbird Hackathon 2022 ausgewertet werden <3
|
||||
|
||||
Welche Accounts wir dabei betrachten, findet ihr unten aufgelistet.
|
||||
|
||||
|
||||
### Ergebnis
|
||||
|
||||
Das Python-Skript findet ihr in diesem Repository. Es verwendet snscrape zum Scrapen der Followerzahlen der Polizeiaccounts (pip3 install git+https://github.com/JustAnotherArchivist/snscrape.git), und Plotly zur Visualisierung.
|
||||
Die Ergebnisse sind auf dieser Website visualisiert: https://deadc0de.dev/copscrap/
|
||||
|
||||
|
||||
### Liste der betrachteten Polizei-Twitter-Accounts (Twitter-Handles, Stand Mai 2021)
|
||||
|
||||
- PolizeiWittlich
|
||||
- LKA_Bayern
|
||||
- Polizei_SDL
|
||||
- PolizeiRV
|
||||
- Polizei_BadN
|
||||
- Polizei_ZPD_NI
|
||||
- Polizei_KO
|
||||
- PolizeiMainz
|
||||
- polizei_nrw_ob
|
||||
- PP_Rheinpfalz
|
||||
- PolizeiTrier
|
||||
- PolizeiSachsen
|
||||
- Polizei_Ffm
|
||||
- Polizei_nrw_ms
|
||||
- Polizei_NRW_E
|
||||
- Polizei_NRW_AC
|
||||
- polizei_nrw_bi
|
||||
- polizei_nrw_bo
|
||||
- polizei_nrw_bn
|
||||
- polizei_nrw_bor
|
||||
- polizei_nrw_coe
|
||||
- polizei_nrw_du
|
||||
- polizei_nrw_dn
|
||||
- polizei_nrw_d
|
||||
- polizei_nrw_w
|
||||
- polizei_nrw_en
|
||||
- polizei_nrw_waf
|
||||
- polizei_nrw_wes
|
||||
- polizei_nrw_un
|
||||
- polizei_nrw_eu
|
||||
- polizei_nrw_vie
|
||||
- polizei_nrw_st
|
||||
- polizei_nrw_ge
|
||||
- polizei_nrw_gt
|
||||
- polizei_nrw_so
|
||||
- polizei_nrw_si
|
||||
- polizei_nrw_su
|
||||
- polizei_nrw_rkn
|
||||
- polizei_nrw_rbk
|
||||
- polizei_nrw_re
|
||||
- polizei_nrw_rek
|
||||
- polizei_nrw_pb
|
||||
- polizei_nrw_gm
|
||||
- polizei_nrw_oe
|
||||
- polizei_nrw_mi
|
||||
- polizei_nrw_me
|
||||
- polizei_nrw_mk
|
||||
- polizei_nrw_mg
|
||||
- polizei_nrw_lip
|
||||
- polizei_nrw_hx
|
||||
- polizei_nrw_kr
|
||||
- polizei_nrw_hsk
|
||||
- polizei_nrw_kle
|
||||
- polizei_nrw_hs
|
||||
- polizei_nrw_ham
|
||||
- polizei_nrw_hf
|
||||
- polizei_nrw_ha
|
||||
- polizeiberlin
|
||||
- PolizeiBerlin_E
|
||||
- Polizei_PS
|
||||
- polizei_nrw_k
|
||||
- PolizeiMuenchen
|
||||
- Polizei_MD
|
||||
- PolizeiHamburg
|
||||
- polizeiOBS
|
||||
- Polizei_KA
|
||||
- Polizei_Thuer
|
||||
- Polizei_NH
|
||||
- bpol_bw
|
||||
- bpol_by
|
||||
- Polizei_PP_NB
|
||||
- LKA_Hessen
|
||||
- PolizeiVG
|
||||
- Polizei_SN
|
||||
- Polizei_HST
|
||||
- PolizeiBhv
|
||||
- Polizei_OH
|
||||
- PolizeiMannheim
|
||||
- PP_Stuttgart
|
||||
- Polizei_MSE
|
||||
- Polizei_soh
|
||||
- Polizei_DeRo
|
||||
- Polizei_FT
|
||||
- Polizei_HAL
|
||||
- PolizeiKonstanz
|
||||
- bpol_b
|
||||
- bpol_koblenz
|
||||
- bpol_kueste
|
||||
- bpol_bepo
|
||||
- bpol_air_fra
|
||||
- bpol_nord
|
||||
- bpol_pir
|
||||
- bpol_nrw
|
||||
- bpol_b_einsatz
|
||||
- Polizei_MH
|
||||
- PolizeiBB
|
||||
- PolizeiUFR
|
||||
- Polizei_WH
|
||||
- PolizeiBayern
|
||||
- polizeiNB
|
||||
- PolizeiLB
|
||||
- Polizei_SuedHE
|
||||
- Polizei_BS
|
||||
- Polizei_OS
|
||||
- PolizeiNI_lka
|
||||
- polizei_nrw_do
|
||||
- Polizei_LG
|
||||
- Polizei_H
|
||||
- Polizei_WL
|
||||
- Polizei_GOE
|
||||
- Polizei_HI
|
||||
- Polizei_EL
|
||||
- Polizei_HM
|
||||
- Polizei_NBG
|
||||
- Polizei_LER_EMD
|
||||
- Polizei_AUR_WTM
|
||||
- Polizei_NOM
|
||||
- Polizei_HOL
|
||||
- Polizei_OHA
|
||||
- Polizei_STH
|
||||
- Pol_Grafschaft
|
||||
- Polizei_STD
|
||||
- Polizei_BBG
|
||||
- Polizei_Rostock
|
||||
- Polizei_OL
|
||||
- PolizeiHN
|
||||
- PolizeiUL
|
||||
- polizeiSWN
|
||||
- Polizei_ROW
|
||||
- Polizei_CE
|
||||
- PolizeiAalen
|
||||
- PolizeiOFR
|
||||
- PolizeiSWS
|
||||
- polizeiopf
|
||||
- PolizeiMFR
|
||||
- BremenPolizei
|
||||
- PolizeiOG
|
||||
- SH_Polizei
|
||||
- Polizei_HK
|
||||
- LkaBaWue
|
||||
- polizeiOBN
|
||||
- PolizeiSaarland
|
||||
- PolizeiRT
|
||||
- Polizei_WOB
|
||||
- PolizeiFR
|
||||
- Polizei_GER
|
||||
- PolizeiNeustadt
|
||||
- bpol_11
|
||||
- Polizei_GF
|
||||
- Polizei_KL
|
||||
- Polizei_GS
|
||||
- LKA_RLP
|
||||
- Polizei_SZ
|
||||
- PolizeiBB_E
|
||||
- Polizei_CUX
|
||||
- Polizei_DH
|
||||
- Polizei_WHV_FRI
|
||||
- Polizei_DEL
|
||||
- Polizei_CLP_VEC
|
||||
- Polizei_VER_OHZ
|
||||
- Polizei_PP_ROS
|
||||
|
||||
|
56
ergebnisse_hackathon_repo/team-11/copscrape.py
Executable file
56
ergebnisse_hackathon_repo/team-11/copscrape.py
Executable file
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import pandas as pd
|
||||
import snscrape.modules.twitter as sntwitter
|
||||
import datetime, time
|
||||
import os
|
||||
import plotly.express as px
|
||||
|
||||
|
||||
police_handles = ['PolizeiWittlich','LKA_Bayern','Polizei_SDL','PolizeiRV','Polizei_BadN','Polizei_ZPD_NI','Polizei_KO','PolizeiMainz','polizei_nrw_ob','PP_Rheinpfalz','PolizeiTrier',\
|
||||
'PolizeiSachsen','Polizei_Ffm','Polizei_nrw_ms','Polizei_NRW_E','Polizei_NRW_AC','polizei_nrw_bi','polizei_nrw_bo','polizei_nrw_bn','polizei_nrw_bor',\
|
||||
'polizei_nrw_coe','polizei_nrw_du','polizei_nrw_dn','polizei_nrw_d','polizei_nrw_w','polizei_nrw_en','polizei_nrw_waf','polizei_nrw_wes','polizei_nrw_un',\
|
||||
'polizei_nrw_eu','polizei_nrw_vie','polizei_nrw_st','polizei_nrw_ge','polizei_nrw_gt','polizei_nrw_so','polizei_nrw_si','polizei_nrw_su','polizei_nrw_rkn',\
|
||||
'polizei_nrw_rbk','polizei_nrw_re','polizei_nrw_rek','polizei_nrw_pb','polizei_nrw_gm','polizei_nrw_oe','polizei_nrw_mi','polizei_nrw_me','polizei_nrw_mk',\
|
||||
'polizei_nrw_mg','polizei_nrw_lip','polizei_nrw_hx','polizei_nrw_kr','polizei_nrw_hsk','polizei_nrw_kle','polizei_nrw_hs','polizei_nrw_ham','polizei_nrw_hf',\
|
||||
'polizei_nrw_ha','polizeiberlin','PolizeiBerlin_E','Polizei_PS','polizei_nrw_k','PolizeiMuenchen','Polizei_MD','PolizeiHamburg','polizeiOBS','Polizei_KA',\
|
||||
'Polizei_Thuer','Polizei_NH','bpol_bw','bpol_by','Polizei_PP_NB','LKA_Hessen','PolizeiVG','Polizei_SN','Polizei_HST','PolizeiBhv','Polizei_OH','PolizeiMannheim',\
|
||||
'PP_Stuttgart','Polizei_MSE','Polizei_soh','Polizei_DeRo','Polizei_FT','Polizei_HAL','PolizeiKonstanz','bpol_b','bpol_koblenz','bpol_kueste','bpol_bepo',\
|
||||
'bpol_air_fra','bpol_nord','bpol_pir','bpol_nrw','bpol_b_einsatz','Polizei_MH','PolizeiBB','PolizeiUFR','Polizei_WH','PolizeiBayern','polizeiNB','PolizeiLB',\
|
||||
'Polizei_SuedHE','Polizei_BS','Polizei_OS','PolizeiNI_lka','polizei_nrw_do','Polizei_LG','Polizei_H','Polizei_WL','Polizei_GOE','Polizei_HI','Polizei_EL',\
|
||||
'Polizei_HM','Polizei_NBG','Polizei_LER_EMD','Polizei_AUR_WTM','Polizei_NOM','Polizei_HOL','Polizei_OHA','Polizei_STH','Pol_Grafschaft','Polizei_STD','Polizei_BBG',\
|
||||
'Polizei_Rostock','Polizei_OL','PolizeiHN','PolizeiUL','polizeiSWN','Polizei_ROW','Polizei_CE','PolizeiAalen','PolizeiOFR','PolizeiSWS','polizeiopf','PolizeiMFR',\
|
||||
'BremenPolizei','PolizeiOG','SH_Polizei','Polizei_HK','LkaBaWue','polizeiOBN','PolizeiSaarland','PolizeiRT','Polizei_WOB','PolizeiFR','Polizei_GER','PolizeiNeustadt',\
|
||||
'bpol_11','Polizei_GF','Polizei_KL','Polizei_GS','LKA_RLP','Polizei_SZ','PolizeiBB_E','Polizei_CUX','Polizei_DH','Polizei_WHV_FRI','Polizei_DEL','Polizei_CLP_VEC',\
|
||||
'Polizei_VER_OHZ','Polizei_PP_ROS']
|
||||
|
||||
limit = None
|
||||
|
||||
names = []
|
||||
usernames = []
|
||||
followers = []
|
||||
|
||||
for row in police_handles:
|
||||
twitter_user_in = sntwitter.TwitterUserScraper(row, False)
|
||||
names += [ str(twitter_user_in.entity.displayname) ]
|
||||
usernames += [ str(twitter_user_in.entity.username) ]
|
||||
followers += [ int(twitter_user_in.entity.followersCount) ]
|
||||
|
||||
# Existenzprüfung von ./cops.csv
|
||||
if os.access('./cops.csv', mode = os.O_RDONLY) is False:
|
||||
add_headers = True
|
||||
else:
|
||||
add_headers = False
|
||||
|
||||
d = {'names' : names, 'user_id': usernames, 'followers': followers, 'date': str(datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S'))}
|
||||
df = pd.DataFrame(data = d)
|
||||
#df
|
||||
df.to_csv('./cops.csv', index = False, mode = 'a+', header = add_headers)
|
||||
|
||||
df_plot = pd.read_csv('./cops.csv')
|
||||
fig = px.line(df_plot, x="date", y="followers", color="names", hover_data=['user_id'], title="Twitter: Entwicklung der Polizei-Account Follower", labels = {'names':'Pozileidirektion','user_id':'Account', 'followers': 'Follower', 'date':'Datum'})
|
||||
fig.update_traces(mode='markers+lines')
|
||||
fig.update_layout(xaxis_title = 'Datum', yaxis_title = 'Follower', xaxis_tickformat = '%Y-%m-%d %H:%M:%S', yaxis_tickformat = ',', legend_traceorder="reversed")
|
||||
fig.write_html("./index.html")
|
||||
|
||||
fig.show() # TODO: Zeitangabe nicer machen, evtl. gruppieren? nach Bundesland? nach landeskriminalamt/polizei? oder urban vs. rural oder so?
|
BIN
ergebnisse_hackathon_repo/team-16/Presse-vs.-Twitter.pdf
Normal file
BIN
ergebnisse_hackathon_repo/team-16/Presse-vs.-Twitter.pdf
Normal file
Binary file not shown.
20
ergebnisse_hackathon_repo/team-16/README.md
Normal file
20
ergebnisse_hackathon_repo/team-16/README.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
# CopBird Group 16
|
||||
|
||||
## Tools
|
||||
|
||||
* [Python](https://www.python.org/) Version >= 3.8
|
||||
* [Wekan](https://wekan.github.io/) als Arbeitsgrundlage mit einem Gruppen-Wekan-Board sowie Gesamt-Boards
|
||||
* [Matrix](https://matrix.org/) zur Kommunikation
|
||||
|
||||
Jupyter Notebook verwendet Kernels. Um ein Environment als Kernel zu verwenden, gibt es folgende
|
||||
Anleitung: https://queirozf.com/entries/jupyter-kernels-how-to-add-change-remove
|
||||
|
||||
## Daten
|
||||
|
||||
Die Tweets können nicht öffentlich gemacht werden, jedoch sind die Pressemitteilungen und Sentiment-Wörter unter data/ zu finden.
|
||||
|
||||
## Ergebnisse
|
||||
|
||||
Die wichtigsten Ergebnisse befinden sich in der [Presse-vs.-Twitter](Presse-vs.-Twitter.pdf) PDF.
|
||||
In den notebooks finden sich zusätzliche Details zur Datenextraktion und Analyse.
|
||||
|
0
ergebnisse_hackathon_repo/team-16/data/.gitkeep
Normal file
0
ergebnisse_hackathon_repo/team-16/data/.gitkeep
Normal file
BIN
ergebnisse_hackathon_repo/team-16/data/SentiWS.zip
Normal file
BIN
ergebnisse_hackathon_repo/team-16/data/SentiWS.zip
Normal file
Binary file not shown.
|
@ -0,0 +1,164 @@
|
|||
Polizei Account Name Typ Bundesland Stadt LAT LONG
|
||||
bpol_11 Bundespolizei Spezialkräfte Bundespolizei - - -
|
||||
bpol_bepo Bundesbereitschaftspolizei Bundesbereitschaftspolizei - - - -
|
||||
bpol_air_fra Bundespolizei Flughafen Frankfurt am Main Bundespolizei Hessen Frankfurt am Main 50.1109221 8.6821267
|
||||
bpol_b Bundespolizei Berlin Bundespolizei Berlin Berlin 52.520007 13.404954
|
||||
bpol_b_einsatz Bundespolizei Berlin Einsatz Bundespolizei Berlin Berlin 52.520007 13.404954
|
||||
bpol_bw Bundespolizei Baden-Württemberg Bundespolizei Baden-Württemberg Böblingen 48.681331 9.008830
|
||||
bpol_by Bundespolizei Bayern Bundespolizei Bayern München 48.135125 11.581981
|
||||
bpol_koblenz Bundespolizei Koblenz Bundespolizei Rheinland-Pfalz Koblenz 50.356943 7.588996
|
||||
bpol_kueste Bundespolizei Küste Bundespolizei Schleswig-Holstein Bad Bramstedt 53.919582 9.882173
|
||||
bpol_nord Bundespolizei Nord Bundespolizei Niedersachsen Hannover 52.3744779 9.7385532
|
||||
bpol_nrw Bundespolizei NRW Bundespolizei Nordrhein-Westfalen Sankt Augustin 50.769478 7.187579
|
||||
bpol_pir Bundespolizei Mitteldeutschland Bundespolizei Sachsen-Anhalt Magdeburg 52.120533 11.627624
|
||||
bremenpolizei Polizei Bremen Polizei Bremen Bremen 53.079296 8.801694
|
||||
lkabawue Landeskriminalamt BW Landeskriminalamt Baden-Württemberg Stuttgart 48.775846 9.182932
|
||||
lka_bayern Bayerisches Landeskriminalamt Landeskriminalamt Bayern München 48.135125 11.581981
|
||||
lka_hessen Hessisches Landeskriminalamt Landeskriminalamt Hessen Wiesbaden 50.0820384 8.2416556
|
||||
lka_rlp Landeskriminalamt Rheinland-Pfalz Landeskriminalamt Rheinland-Pfalz Mainz 49.992862 8.247253
|
||||
pol_grafschaft Polizei Grf Bentheim Polizei Niedersachsen Nordhorn 52.429580 7.068571
|
||||
polizeiaalen Polizei Aalen Polizei Baden-Württemberg Aalen 48.836689 10.097116
|
||||
polizei_aur_wtm Polizei Aurich / WTM Polizei Niedersachsen Aurich 53.470839 7.484831
|
||||
polizei_badn Polizei Bad Nenndorf Polizei Niedersachsen Bad Nenndorf 52.336191 9.374258
|
||||
polizeibayern Polizei Bayern Polizei Bayern München 48.135125 11.581981
|
||||
polizeibb Polizei Brandenburg Polizei Brandenburg Potsdam 52.390569 13.064473
|
||||
polizeibb_e PolizeiBrandenburg_E Polizei Brandenburg Potsdam 52.390569 13.064473
|
||||
polizei_bbg Polizei Bückeburg Polizei Niedersachsen Bückeburg 52.259276 9.052123
|
||||
polizeiberlin Polizei Berlin Polizei Berlin Berlin 52.520007 13.404954
|
||||
polizeiberlin_e Polizei Berlin Einsatz Polizei Berlin Berlin 52.520007 13.404954
|
||||
polizeibhv Polizei Bremerhaven Polizei Bremen Bremerhaven 53.539584 8.580942
|
||||
polizei_bs Polizei Braunschweig Polizei Niedersachsen Braunschweig 52.268874 10.526770
|
||||
polizei_ce Polizei Celle Polizei Niedersachsen Celle 52.617596 10.062852
|
||||
polizei_clp_vec Polizei Cloppenburg/Vechta Polizei Niedersachsen Cloppenburg 52.844198 8.053016
|
||||
polizei_cux Polizei Cuxhaven Polizei Niedersachsen Cuxhaven 53.859336 8.687906
|
||||
polizei_del Polizei Delmenhorst/Oldenburg-Land/Wesermarsch Polizei Niedersachsen Delmenhorst 53.052189 8.635593
|
||||
polizei_dero Polizei Dessau-Roßlau Polizei Sachsen-Anhalt Dessau-Roßlau 51.842828 12.230393
|
||||
polizei_dh Polizei Diepholz Polizei Niedersachsen Diepholz 52.605646 8.370788
|
||||
polizei_el Polizei Emsland Polizei Niedersachsen Lingen 52.540308 7.329286
|
||||
polizei_ffm Polizei Frankfurt Polizei Hessen Frankfurt am Main 50.110922 8.682127
|
||||
polizeifr Polizei Freiburg Polizei Baden-Württemberg Freiburg 47.999008 7.842104
|
||||
polizei_ft Polizei Frankenthal Polizei Rheinland-Pfalz Frankenthal 49.533333 8.350000
|
||||
polizei_ger Polizei Germersheim Polizei Rheinland-Pfalz Germersheim 49.214024 8.366815
|
||||
polizei_gf Polizei Gifhorn Polizei Niedersachsen Gifhorn 52.480909 10.550783
|
||||
polizei_goe Polizei Göttingen Polizei Niedersachsen Göttingen 51.541280 9.915804
|
||||
polizei_gs Polizei Goslar Polizei Niedersachsen Goslar 51.905953 10.428996
|
||||
polizei_h Polizei Hannover Polizei Niedersachsen Hannover 52.3744779 9.7385532
|
||||
polizei_hal Polizei Halle (Saale) Polizei Sachsen-Anhalt Halle (Saale) 51.4825041 11.9705452
|
||||
polizeihamburg Polizei Hamburg Polizei Hamburg Hamburg 53.550341 10.000654
|
||||
polizei_hi Polizei Hildesheim Polizei Niedersachsen Hildesheim 52.1521636 9.9513046
|
||||
polizei_hk Polizei Heidekreis Polizei Niedersachsen Soltau 52.9859666 9.8433909
|
||||
polizei_hm Polizei Hameln Polizei Niedersachsen Hameln-Pyrmont 52.0895789 9.3875409
|
||||
polizeihn Polizei Heilbronn Polizei Baden-Württemberg Heilbronn 49.142291 9.218655
|
||||
polizei_hol Polizei Holzminden Polizei Niedersachsen Holzminden 51.828835 9.4466591
|
||||
polizei_hst Polizei Stralsund Polizei Mecklenburg-Vorpommern Stralsund 54.3096314 13.0820846
|
||||
polizei_ka Polizei Karlsruhe Polizei Baden-Württemberg Karlsruhe 49.0068705 8.4034195
|
||||
polizei_kl Polizei Kaiserslautern Polizei Rheinland-Pfalz Kaiserslautern 49.4432174 7.7689951
|
||||
polizei_ko Polizei Koblenz Polizei Rheinland-Pfalz Koblenz 50.3533278 7.5943951
|
||||
polizeikonstanz Polizei Konstanz Polizei Baden-Württemberg Konstanz 47.659216 9.1750718
|
||||
polizeilb Polizei Ludwigsburg Polizei Baden-Württemberg Ludwigsburg 48.8953937 9.1895147
|
||||
polizei_ler_emd Polizei Leer / Emden Polizei Niedersachsen Leer 53.2327625 7.4577265
|
||||
polizei_lg Polizei Lüneburg Polizei Niedersachsen Lüneburg 53.248706 10.407855
|
||||
polizeimainz Polizei Mainz Polizei Rheinland-Pfalz Mainz 50.0012314 8.2762513
|
||||
polizeimannheim Polizei Mannheim Polizei Baden-Württemberg Mannheim 49.4892913 8.4673098
|
||||
polizei_md Polizei Magdeburg Polizei Sachsen-Anhalt Magdeburg 52.1315889 11.6399609
|
||||
polizeimfr Polizei Mittelfranken Polizei Bayern Nürnberg 49.453872 11.077298
|
||||
polizei_mh Polizei Mittelhessen Polizei Hessen Gießen 50.5862066 8.6742306
|
||||
polizei_mse Polizei Mecklenburgische Seenplatte Polizei Mecklenburg-Vorpommern Neubrandenburg 53.5574458 13.2602781
|
||||
polizeimuenchen Polizei München Polizei Bayern München 48.135125 11.581981
|
||||
polizeinb Polizei Niederbayern Polizei Bayern Straubing 48.8819801 12.569716
|
||||
polizei_nbg Polizei Nienburg Polizei Niedersachsen Nienburg (Weser) 52.6487602 9.2578105
|
||||
polizeineustadt Polizei Neustadt Polizei Rheinland-Pfalz Neustadt an der Weinstraße 49.3539802 8.1350021
|
||||
polizei_nh Polizei Nordhessen Polizei Hessen Kassel 51.3154546 9.4924096
|
||||
polizeini_lka LKA Niedersachsen Landeskriminalamt Niedersachsen Hannover 52.3744779 9.7385532
|
||||
polizei_nom Polizei Northeim Polizei Niedersachsen Northeim 51.705401 9.9972782
|
||||
polizei_nrw_ac Polizei NRW AC Polizei Nordrhein-Westfalen Aachen 50.776351 6.083862
|
||||
polizei_nrw_bi Polizei NRW BI Polizei Nordrhein-Westfalen Bielefeld 52.0191005 8.531007
|
||||
polizei_nrw_bn Polizei NRW BN Polizei Nordrhein-Westfalen Bonn 50.735851 7.10066
|
||||
polizei_nrw_bo Polizei NRW BO Polizei Nordrhein-Westfalen Bochum 51.4818111 7.2196635
|
||||
polizei_nrw_bor Polizei NRW BOR Polizei Nordrhein-Westfalen Borken 51.8443183 6.8582247
|
||||
polizei_nrw_coe Polizei NRW COE Polizei Nordrhein-Westfalen Coesfeld 51.9458943 7.1691108
|
||||
polizei_nrw_d Polizei NRW D Polizei Nordrhein-Westfalen Düsseldorf 51.2254018 6.7763137
|
||||
polizei_nrw_dn Polizei NRW DN Polizei Nordrhein-Westfalen Düren 50.8031684 6.4820806
|
||||
polizei_nrw_do Polizei NRW DO Polizei Nordrhein-Westfalen Dortmund 51.5142273 7.4652789
|
||||
polizei_nrw_du Polizei NRW DU Polizei Nordrhein-Westfalen Duisburg 51.434999 6.759562
|
||||
polizei_nrw_e Polizei NRW E Polizei Nordrhein-Westfalen Essen 51.4582235 7.0158171
|
||||
polizei_nrw_en Polizei NRW EN Polizei Nordrhein-Westfalen Ennepe-Ruhr-Kreis 51.3481444 7.3351844
|
||||
polizei_nrw_eu Polizei NRW EU Polizei Nordrhein-Westfalen Euskirchen 50.6612623 6.7871219
|
||||
polizei_nrw_ge Polizei NRW GE Polizei Nordrhein-Westfalen Gelsenkirchen 51.5110321 7.0960124
|
||||
polizei_nrw_gm Polizei NRW GM Polizei Nordrhein-Westfalen Gummersbach 51.0277658 7.5630545
|
||||
polizei_nrw_gt Polizei NRW GT Polizei Nordrhein-Westfalen Gütersloh 51.9063997 8.3782078
|
||||
polizei_nrw_ha Polizei NRW HA Polizei Nordrhein-Westfalen Hagen 51.3582945 7.473296
|
||||
polizei_nrw_ham Polizei NRW HAM Polizei Nordrhein-Westfalen Hamm 51.6804093 7.815197
|
||||
polizei_nrw_hf Polizei NRW HF Polizei Nordrhein-Westfalen Herford 52.1152245 8.6711118
|
||||
polizei_nrw_hs Polizei NRW HS Polizei Nordrhein-Westfalen Heinsberg 51.0654268 6.0984461
|
||||
polizei_nrw_hsk Polizei NRW HSK Polizei Nordrhein-Westfalen Hochsauerlandkreis 51.3208247 8.2684925
|
||||
polizei_nrw_hx Polizei NRW HX Polizei Nordrhein-Westfalen Höxter 51.7747369 9.3816877
|
||||
polizei_nrw_k Polizei NRW K Polizei Nordrhein-Westfalen Köln 50.938361 6.959974
|
||||
polizei_nrw_kle Polizei NRW KLE Polizei Nordrhein-Westfalen Kleve 51.7854839 6.1313674
|
||||
polizei_nrw_kr Polizei NRW KR Polizei Nordrhein-Westfalen Krefeld 51.3331205 6.5623343
|
||||
polizei_nrw_lip Polizei NRW LIP Polizei Nordrhein-Westfalen Detmold 51.936284 8.8791526
|
||||
polizei_nrw_lka Polizei NRW LKA Landeskriminalamt Nordrhein-Westfalen Düsseldorf 51.2254018 6.7763137
|
||||
polizei_nrw_me polizei_nrw_me Polizei Nordrhein-Westfalen Mettmann 51.2527778 6.9777778
|
||||
polizei_nrw_mg Polizei NRW MG Polizei Nordrhein-Westfalen Mönchengladbach 51.1946983 6.4353641
|
||||
polizei_nrw_mi Polizei NRW MI Polizei Nordrhein-Westfalen Minden 52.2881045 8.9168852
|
||||
polizei_nrw_mk Polizei NRW MK Polizei Nordrhein-Westfalen Märkischer Kreis 51.2734857 7.7274266
|
||||
polizei_nrw_ms Polizei NRW MS Polizei Nordrhein-Westfalen Münster 51.9625101 7.6251879
|
||||
polizei_nrw_ob Polizei NRW OB Polizei Nordrhein-Westfalen Oberhausen 51.4696137 6.8514435
|
||||
polizei_nrw_oe Polizei NRW OE Polizei Nordrhein-Westfalen Olpe 51.0297603 7.8424193
|
||||
polizei_nrw_pb Polizei NRW PB Polizei Nordrhein-Westfalen Paderborn 51.7189596 8.7648698
|
||||
polizei_nrw_rbk Polizei NRW RBK Polizei Nordrhein-Westfalen Rheinisch-Bergischer-Kreis 51.0139774 7.1715584
|
||||
polizei_nrw_re Polizei NRW RE Polizei Nordrhein-Westfalen Recklinghausen 51.6143815 7.1978546
|
||||
polizei_nrw_rek Polizei NRW REK Polizei Nordrhein-Westfalen Rhein-Erft-Kreis 50.90334 6.763334
|
||||
polizei_nrw_rkn Polizei NRW RKN Polizei Nordrhein-Westfalen Rhein-Kreis Neuss 51.1758799 6.6600606
|
||||
polizei_nrw_si Polizei NRW SI Polizei Nordrhein-Westfalen Siegen-Wittgenstein 50.97444 8.23972
|
||||
polizei_nrw_so Polizei NRW SO Polizei Nordrhein-Westfalen Soest 51.5725501 8.1061259
|
||||
polizei_nrw_st Polizei NRW ST Polizei Nordrhein-Westfalen Steinfurt 52.1294289 7.3903454
|
||||
polizei_nrw_su Polizei NRW SU Polizei Nordrhein-Westfalen Rhein-Sieg-Kreis 50.7527986 7.3813038
|
||||
polizei_nrw_un Polizei NRW UN Polizei Nordrhein-Westfalen Unna 51.5348835 7.689014
|
||||
polizei_nrw_vie Polizei NRW VIE Polizei Nordrhein-Westfalen Viersen 51.2562118 6.3905476
|
||||
polizei_nrw_w Polizei NRW W Polizei Nordrhein-Westfalen Wuppertal 51.264018 7.1780374
|
||||
polizei_nrw_waf Polizei NRW WAF Polizei Nordrhein-Westfalen Warendorf 51.9532449 7.9912335
|
||||
polizei_nrw_wes Polizei NRW WES Polizei Nordrhein-Westfalen Wesel 51.6576909 6.617087
|
||||
polizeiobn Polizei Oberbayern N Polizei Bayern Ingolstadt 48.7630165 11.4250395
|
||||
polizeiobs PolizeiOberbayernSüd Polizei Bayern Rosenheim 47.8539273 12.127262
|
||||
polizeiofr Polizei Oberfranken Polizei Bayern Oberfranken 50.0553084 11.5455233
|
||||
polizeiog Polizei Offenburg Polizei Baden-Württemberg Offenburg 48.4716556 7.944378
|
||||
polizei_oh Polizei Osthessen Polizei Hessen Fulda 50.5521486 9.676511
|
||||
polizei_oha Polizei Osterode Polizei Niedersachsen Osterode am Harz 51.72784 10.2508204
|
||||
polizei_ol Polizei Oldenburg-Stadt/Ammerland Polizei Niedersachsen Oldenburg 53.1389753 8.2146017
|
||||
polizeiopf Polizei Oberpfalz Polizei Bayern Regensburg 49.0195333 12.0974869
|
||||
polizei_os Polizei Osnabrück Polizei Niedersachsen Osnabrück 52.266837 8.049741
|
||||
polizei_pf Polizei Pforzheim Polizei Baden-Württemberg Pforzheim 48.8908846 8.7029532
|
||||
polizei_pp_nb Polizeipräsidium NB Polizeipräsidium Mecklenburg-Vorpommern Neubrandenburg 53.5574458 13.2602781
|
||||
polizei_pp_ros Polizeipräsidium Rostock Polizeipräsidium Mecklenburg-Vorpommern Rostock 54.0924445 12.1286127
|
||||
polizei_ps Polizei Pirmasens Polizei Rheinland-Pfalz Pirmasens 49.1996961 7.6087847
|
||||
polizei_rostock Polizei Rostock Polizei Mecklenburg-Vorpommern Rostock 54.0924445 12.1286127
|
||||
polizei_row Polizei Rotenburg Polizei Niedersachsen Rotenburg (Wümme) 53.2520924 9.3151133
|
||||
polizeirt Polizei Reutlingen Polizei Baden-Württemberg Reutlingen 48.4919508 9.2114144
|
||||
polizeirv Polizei Ravensburg Polizei Baden-Württemberg Ravensburg 47.7811014 9.612468
|
||||
polizeisaarland Polizei Saarland Polizei Saarland Saarbrücken 49.234362 6.996379
|
||||
polizeisachsen Polizei Sachsen Polizei Sachsen Dresden 51.0493286 13.7381437
|
||||
polizei_sdl Polizei Stendal Polizei Sachsen-Anhalt Stendal 52.6050782 11.8594279
|
||||
polizei_sn Polizei Schwerin Polizei Mecklenburg-Vorpommern Schwerin 53.6288297 11.4148038
|
||||
polizei_soh Polizei Südosthessen Polizei Hessen Offenbach am Main 50.1055002 8.7610698
|
||||
polizei_std Polizei Stade Polizei Niedersachsen Stade 53.599794 9.475438
|
||||
polizei_sth Polizei Stadthagen Polizei Niedersachsen Stadthagen 52.3289688 9.2053496
|
||||
polizei_suedhe Polizei Südhessen Polizei Hessen Darmstadt 49.872775 8.651177
|
||||
polizeiswn Polizei Schwaben Nord Polizei Bayern Augsburg 48.3668041 10.8986971
|
||||
polizeisws Polizei Schwaben S/W Polizei Bayern Kempten (Allgäu) 47.7267063 10.3168835
|
||||
polizei_sz Polizei SZ / PE / WF Polizei Niedersachsen Salzgitter 52.1503721 10.3593147
|
||||
polizei_thuer Polizei Thüringen Polizei Thüringen Erfurt 50.9777974 11.0287364
|
||||
polizeitrier Polizei Trier Polizei Rheinland-Pfalz Trier 49.7596208 6.6441878
|
||||
polizeiufr Polizei Unterfranken Polizei Bayern Würzburg 49.79245 9.932966
|
||||
polizeiul Polizei Ulm Polizei Baden-Württemberg Ulm 48.3974003 9.9934336
|
||||
polizei_ver_ohz Polizei Verden/Osterholz Polizei Niedersachsen Verden 52.922341 9.228153
|
||||
polizeivg Polizei Vorpommern-Greifswald Polizei Mecklenburg-Vorpommern Anklam 53.8560526 13.688091
|
||||
polizei_wh Polizei Westhessen Polizei Hessen Wiesbaden 50.0820384 8.2416556
|
||||
polizei_whv_fri Polizei Wilhelmshaven/Friesland Polizei Niedersachsen Wilhelmshaven 53.5278793 8.106301
|
||||
polizeiwittlich Polizei Wittlich Polizei Rheinland-Pfalz Wittlich 49.9850353 6.88844
|
||||
polizei_wl Polizei LK Harburg Polizei Niedersachsen Harburg 53.3172237 9.9084936
|
||||
polizei_wob Polizei Wolfsburg Polizei Niedersachsen Wolfsburg 52.4205588 10.7861682
|
||||
polizei_zpd_ni Polizei ZPD NI Polizei Niedersachsen Hannover 52.3744779 9.7385532
|
||||
pp_rheinpfalz Polizei Rheinpfalz Polizei Rheinland-Pfalz Ludwigshafen am Rhein 49.4704113 8.4381568
|
||||
pp_stuttgart Polizei Stuttgart Polizei Baden-Württemberg Stuttgart 48.7784485 9.1800132
|
||||
sh_polizei Polizei SH Polizei Schleswig-Holstein Kiel 54.3227085 10.135555
|
|
39
ergebnisse_hackathon_repo/team-16/keyword_search.py
Normal file
39
ergebnisse_hackathon_repo/team-16/keyword_search.py
Normal file
|
@ -0,0 +1,39 @@
|
|||
import pandas as pd
|
||||
import spacy
|
||||
from string import punctuation
|
||||
from tqdm import tqdm
|
||||
tqdm.pandas()
|
||||
|
||||
|
||||
tw_tweets = pd.read_csv(r'data\copbird_table_tweet_ext_state.csv')
|
||||
|
||||
nlp = spacy.load('de_core_news_lg')
|
||||
|
||||
|
||||
def clean_tweet(txt):
|
||||
doc = nlp(txt)
|
||||
token_list = []
|
||||
|
||||
for token in doc:
|
||||
if (token.text not in punctuation) and (token.is_stop is False):
|
||||
token_list.append(token.lemma_)
|
||||
else:
|
||||
pass
|
||||
return ' '.join(token_list)
|
||||
|
||||
|
||||
def get_topics_by_str_lst(topic, df, col_name):
|
||||
df_topiced = df[df[col_name].str.contains('|'.join(topic))]
|
||||
return df_topiced
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
topic_1 = ['demonstr', 'kundgeb']
|
||||
topic_2 = ['drogen', 'weed', 'graas', 'lsd', 'cannabis', 'ecstasy', 'kokain', 'meth', 'crystal']
|
||||
topic_3 = ['rassis', 'diskriminier', 'ausländerfeindlich', 'fremdenfeindlich', 'fremdenhass']
|
||||
topic_4 = ['antisem', 'juden', 'synagoge', 'judenhass', 'judenfeindlich', 'holocaust']
|
||||
|
||||
df_pm = pd.read_csv(r'data\2020-12_2021-05_presseportal.csv', na_filter=False)
|
||||
df_pm_col = 'content'
|
||||
|
||||
print(get_topics_by_str_lst(topic=topic_3, df=df_pm, col_name=df_pm_col).to_markdown())
|
|
@ -0,0 +1,394 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "7158ac22",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import pyLDAvis.sklearn\n",
|
||||
"from sklearn.decomposition import LatentDirichletAllocation\n",
|
||||
"from sklearn.feature_extraction.text import CountVectorizer\n",
|
||||
"import pandas as pd\n",
|
||||
"import spacy\n",
|
||||
"from multiprocess import Pool"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "69f33a46",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Funktionen zur Vorverarbeitung"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "1c66c06c",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def filterSentencesByMinWordCount(text, minWordCount):\n",
|
||||
" sentenceList = []\n",
|
||||
" doc = nlp(text)\n",
|
||||
" for sent in doc.sents:\n",
|
||||
" wordList = []\n",
|
||||
" sent.text.rstrip()\n",
|
||||
" for word in sent:\n",
|
||||
" wordList.append(word)\n",
|
||||
" if len(wordList) >= minWordCount:\n",
|
||||
" sentenceList.append(sent.text.rstrip())\n",
|
||||
" return sentenceList"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "3b9d084d",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def extractSentences(document):\n",
|
||||
" logging.debug('Extracting Sentences')\n",
|
||||
" text = extractBodyContent(document)\n",
|
||||
" sentenceList = filterSentencesByMinWordCount(text, 4)\n",
|
||||
" return sentenceList"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "7d85891e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def tokenizeSentence(doc):\n",
|
||||
" logging.debug('Tokenizing')\n",
|
||||
" tokenList = []\n",
|
||||
" for token in doc:\n",
|
||||
" childrenList = []\n",
|
||||
" for child in token.children:\n",
|
||||
" childToken = ScToken(child.text,\n",
|
||||
" child.lemma_,\n",
|
||||
" child.pos_, str(spacy.explain(child.pos_)),\n",
|
||||
" child.tag_, str(spacy.explain(child.tag_)),\n",
|
||||
" child.dep_, str(spacy.explain(child.dep_)),\n",
|
||||
" child.shape_, child.is_alpha, child.is_stop)\n",
|
||||
" childrenList.append(childToken)\n",
|
||||
"\n",
|
||||
" scToken = ScToken(token.text,\n",
|
||||
" token.lemma_,\n",
|
||||
" token.pos_, str(spacy.explain(token.pos_)),\n",
|
||||
" token.tag_, str(spacy.explain(token.tag_)),\n",
|
||||
" token.dep_, str(spacy.explain(token.dep_)),\n",
|
||||
" token.shape_, token.is_alpha, token.is_stop,\n",
|
||||
" childrenList)\n",
|
||||
" tokenList.append(scToken)\n",
|
||||
" return tokenList"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"id": "7564c883",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def chunkSentence(doc):\n",
|
||||
" logging.debug('Chunking')\n",
|
||||
" chunkList = []\n",
|
||||
" for chunk in doc.noun_chunks:\n",
|
||||
" scChunk = ScChunk(chunk.text, chunk.root.text,\n",
|
||||
" chunk.root.dep_, chunk.root.head.text)\n",
|
||||
" chunkList.append(scChunk)\n",
|
||||
" return chunkList"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"id": "5db74302",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def findEntitiesInSentence(doc):\n",
|
||||
" logging.debug('Extracting Named Entities')\n",
|
||||
" entityList = []\n",
|
||||
" for ent in doc.ents:\n",
|
||||
" entity = ScEntity(ent.text, ent.start_char, ent.end_char,\n",
|
||||
" ent.label_, str(spacy.explain(ent.label_)))\n",
|
||||
" entityList.append(entity)\n",
|
||||
" return entityList"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"id": "b6753a90",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def fillSentences(document):\n",
|
||||
" logging.info(\n",
|
||||
" 'Building Sentences (Tokenizing, Chunking, Named Entity Recognition)')\n",
|
||||
" sentenceList = []\n",
|
||||
" sentences = extractSentences(document)\n",
|
||||
" for i, sentence in enumerate(sentences):\n",
|
||||
" doc = nlp(sentence)\n",
|
||||
" id = i\n",
|
||||
" tokens = tokenizeSentence(doc)\n",
|
||||
" chunks = chunkSentence(doc)\n",
|
||||
" entities = findEntitiesInSentence(doc)\n",
|
||||
" scSentence = ScSentence(id, sentence, tokens, chunks, entities)\n",
|
||||
" sentenceList.append(scSentence)\n",
|
||||
"\n",
|
||||
" return sentenceList"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"id": "9af7a5c0",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def fillSentencesAsOneString(sentences):\n",
|
||||
" sentencesAsOneString = str()\n",
|
||||
" for sentence in sentences:\n",
|
||||
" sentencesAsOneString += sentence.text\n",
|
||||
" return sentencesAsOneString"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"id": "8f952c82",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def removeStopwords(text):\n",
|
||||
" doc = nlp(text)\n",
|
||||
" tokens = tokenizeSentence(doc)\n",
|
||||
" chunksNoStopwords = [\n",
|
||||
" t.text for t in tokens if (not t.isStopword)]\n",
|
||||
" return \" \".join(chunksNoStopwords)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"id": "28910141",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"ename": "NameError",
|
||||
"evalue": "name 'ScToken' is not defined",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[1;32m<ipython-input-14-7209b5cec518>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mdef\u001b[0m \u001b[0mnumberOfStopwords\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtokens\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mScToken\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mcount\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mt\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mtokens\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0misStopword\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mcount\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
|
||||
"\u001b[1;31mNameError\u001b[0m: name 'ScToken' is not defined"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def numberOfStopwords(tokens: [ScToken]):\n",
|
||||
" count = 0\n",
|
||||
" for t in tokens:\n",
|
||||
" if t.isStopword:\n",
|
||||
" count += 1\n",
|
||||
" return count"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ce7cc9c1",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Analyse"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"id": "1adb09b7",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
" tweet_csv = '../data/copbird_table_tweet.csv'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"id": "c0936ecb",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"NUM_TOPICS=10\n",
|
||||
"NUM_FEATURES=1000\n",
|
||||
"NUM_TOP_WORDS=25"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"id": "dbf0281f",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"c:\\users\\chris\\pycharmprojects\\copbird-group-16\\copbird-venv\\lib\\site-packages\\ipykernel\\ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n",
|
||||
" and should_run_async(code)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def get_tweets(path, limit=None):\n",
|
||||
" df_csv = pd.read_csv(path, nrows=limit, parse_dates=['created_at'],\n",
|
||||
" encoding='utf-8-sig')\n",
|
||||
"\n",
|
||||
" df_csv.drop(columns=['created_at', 'like_count', 'retweet_count', 'reply_count', 'quote_count'], inplace=True)\n",
|
||||
"\n",
|
||||
" nlp = spacy.load(\"de_core_news_lg\")\n",
|
||||
" nlp.Defaults.stop_words |= {\"&\", \"amp\"}\n",
|
||||
" nlp.add_pipe('emoji', first=True)\n",
|
||||
" return list(\n",
|
||||
" nlp.pipe(df_csv['tweet_text'], disable=[\"tok2vec\", \"tagger\", \"parser\", \"attribute_ruler\"], n_process=-1))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "2c39f658",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "copbird-env",
|
||||
"language": "python",
|
||||
"name": "copbird-env"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,490 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "cce66876",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Interface Presseportal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "f12d7022",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Das Presseportal bietet eine Platform, bei der mittels GET-requests die Pressemitteilungen verschiedener Institutionen (Polizei, Feuerwehr, ...), in bestimmten Zeiträumen in gegebenen Gebieten extrahiert werden können. Dafür gibt es auch eine API."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b07aef9f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Beispiel URL: `https://www.presseportal.de/blaulicht/d/polizei/l/hessen/30?startDate=2021-05-04&endDate=2021-05-04`"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "258338d0",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Da eine große Menge an Tweets angefragt werden und Requests ziemlich lange benötigen, muss die Anfrage optimiert werden:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "b07fac3c",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"import calendar\n",
|
||||
"import time\n",
|
||||
"import os\n",
|
||||
"import csv\n",
|
||||
"\n",
|
||||
"from tqdm.notebook import tqdm\n",
|
||||
"from datetime import datetime\n",
|
||||
"from bs4 import BeautifulSoup"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "0dfce15a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Um Pressemitteilungen sinnvoll zu speichern, werden sie als Klasse dargestellt:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "6c0b30a8",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"class Pressemitteilung:\n",
|
||||
" def __init__(self, article_id, timestamp, location, text, bundesland):\n",
|
||||
" self.article_id = article_id\n",
|
||||
" self.timestamp = timestamp\n",
|
||||
" self.location = location\n",
|
||||
" self.text = text\n",
|
||||
" self.bundesland=bundesland\n",
|
||||
" \n",
|
||||
" def __str__(self):\n",
|
||||
" return f\"[{self.article_id}] {self.timestamp} {self.location} | {' '.join(self.text.split()[:6])}\"\n",
|
||||
" \n",
|
||||
" def to_row(self):\n",
|
||||
" return [self.article_id, self.timestamp, self.location, self.bundesland, self.text]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "63cceebe",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Konstanten und Pfade**"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "8bcc877f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"REQUEST_HEADERS = {\n",
|
||||
" \"User-Agent\": (\n",
|
||||
" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 \"\n",
|
||||
" \"(KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36\"\n",
|
||||
" )\n",
|
||||
"}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "c637ac38",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"DATA_FOLDER = os.path.join(\"..\", \"data\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "f094dee0",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"BUNDESLAENDER = [\n",
|
||||
" \"baden-wuerttemberg\",\n",
|
||||
" \"bayern\",\n",
|
||||
" \"berlin-brandenburg\",\n",
|
||||
" \"bremen\",\n",
|
||||
" \"hamburg\",\n",
|
||||
" \"hessen\",\n",
|
||||
" \"mecklenburg-vorpommern\",\n",
|
||||
" \"niedersachsen\",\n",
|
||||
" \"nordrhein-westfalen\",\n",
|
||||
" \"rheinland-pfalz\",\n",
|
||||
" \"saarland\",\n",
|
||||
" \"sachsen\",\n",
|
||||
" \"sachsen-anhalt\",\n",
|
||||
" \"schleswig-holstein\",\n",
|
||||
" \"thueringen\",\n",
|
||||
"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "84632391",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def requests_get(request):\n",
|
||||
" return requests.get(request, headers=REQUEST_HEADERS)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "1af0bdbd",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_response(response, bundesland=None):\n",
|
||||
" \"\"\"Extrahiere aus der Response einer Request alle Pressemitteilungen\n",
|
||||
" \n",
|
||||
" Args:\n",
|
||||
" response (:obj:`Response`)\n",
|
||||
" bundesland (:obj:`str`): Kann mit angegeben, falls es in der Suche relevant war. Default = None\n",
|
||||
" \n",
|
||||
" Returns:\n",
|
||||
" list of :obj:`Pressemitteilung`\n",
|
||||
" \"\"\"\n",
|
||||
" \n",
|
||||
" mitteilungen = []\n",
|
||||
" \n",
|
||||
" soup = BeautifulSoup(response.content, 'html.parser')\n",
|
||||
" for article in soup.find_all('article'):\n",
|
||||
" data_url = article['data-url']\n",
|
||||
" article_id = '-'.join(article['data-url'].split('/')[-2:])\n",
|
||||
" meta = article.find('div')\n",
|
||||
" \n",
|
||||
" timestamp_str = meta.find(class_=\"date\")\n",
|
||||
" \n",
|
||||
" if timestamp_str is not None:\n",
|
||||
" timestamp_str = timestamp_str.text\n",
|
||||
" timestamp = datetime.strptime(timestamp_str, '%d.%m.%Y – %H:%M')\n",
|
||||
" else:\n",
|
||||
" timestamp = None\n",
|
||||
" \n",
|
||||
" location_str = meta.find(class_=\"news-topic\")\n",
|
||||
" location_str = location_str.text if location_str is not None else None\n",
|
||||
" \n",
|
||||
" p_texts = article.findAll('p')\n",
|
||||
" if len(p_texts) > 1:\n",
|
||||
" text = p_texts[1].text\n",
|
||||
" else:\n",
|
||||
" text = ''\n",
|
||||
" \n",
|
||||
" mitteilungen.append(Pressemitteilung(article_id, timestamp, location_str, text, bundesland))\n",
|
||||
" \n",
|
||||
" return mitteilungen"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "c62c06c9",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def create_get_request(*, site=1, location=None, start_date=None, end_date=None):\n",
|
||||
" \"\"\"Simulation einer API: Erzeuge aus Parametern eine URL\n",
|
||||
" \n",
|
||||
" Args:\n",
|
||||
" site (int, default=1): Aktuelle Seite, auf der man sich befinden soll. Ist in der URL in 30er Schritten angegeben\n",
|
||||
" location (:obj:`str`, default=None): Bundesland bzw. Stadt\n",
|
||||
" start_date (:obj:`str`, default=None)\n",
|
||||
" end_date (:obj:`str`, default=None)\n",
|
||||
" Returns:\n",
|
||||
" str: URL\n",
|
||||
" \"\"\"\n",
|
||||
" url = f\"https://www.presseportal.de/blaulicht/d/polizei\"\n",
|
||||
" \n",
|
||||
" if location is not None:\n",
|
||||
" url += f\"/l/{location}\"\n",
|
||||
" \n",
|
||||
" if site > 1:\n",
|
||||
" url += f\"/{site*30}\"\n",
|
||||
" \n",
|
||||
" if start_date is not None or end_date is not None:\n",
|
||||
" url += \"?\"\n",
|
||||
" \n",
|
||||
" if start_date is not None:\n",
|
||||
" url += f\"startDate={start_date}\"\n",
|
||||
" \n",
|
||||
" if end_date is not None:\n",
|
||||
" url += \"&\"\n",
|
||||
" \n",
|
||||
" if end_date is not None:\n",
|
||||
" url += f\"endDate={end_date}\"\n",
|
||||
" \n",
|
||||
" return url"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "1c67c9bc",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Beispiel: Hamburg "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"id": "aff924d6",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"'https://www.presseportal.de/blaulicht/d/polizei/l/hamburg/90?startDate=2021-01-13&endDate=2021-03-20'"
|
||||
]
|
||||
},
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"url = create_get_request(location=\"hamburg\", site=3, start_date=\"2021-01-13\", end_date=\"2021-03-20\")\n",
|
||||
"url"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"id": "6e2b9091",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[6337-4840243] 2021-02-16 17:41:00 Hamburg | Hamburg (ots) - Tatzeit: 15.02.2021, 08:15\n",
|
||||
"[6337-4839937] 2021-02-16 13:14:00 Hamburg | Hamburg (ots) - Tatzeiten: a. 15.02.2021,\n",
|
||||
"[6337-4839709] 2021-02-16 11:33:00 Hamburg | Hamburg (ots) - Tatzeit: 15.02.2021, 18:25\n",
|
||||
"[6337-4839544] 2021-02-16 10:31:00 Hamburg | Hamburg (ots) - Zeit: 15.02.2021, 01:34\n",
|
||||
"[6337-4838489] 2021-02-15 11:48:00 Hamburg | Hamburg (ots) - Tatzeit: 14.02.2021; 19:17\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for mitteilung in extract_response(requests_get(url))[:5]:\n",
|
||||
" print(mitteilung)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e50af557",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Effizientes Einlesen"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b4a9580a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Um die Dateien sinnhaft zu extrahieren, ohne auf einen Schlag zu viele Anfragen zu tätigen, läuft das Programm synchron mit Pausen (1Sek / Anfrage). Die Hauptfunktion sucht für einen gegebenen Tag alle Pressemeldungen der Polizei und sortiert diese nach Bundesland bzw. Stadt."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"id": "da927e30",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def _get_meldungen_for_date_and_bundesland(year, month, day, bundesland):\n",
|
||||
" \"\"\"Suche alle Meldungen für ein Bundesland zu einem konkreten Tag\"\"\"\n",
|
||||
"\n",
|
||||
" meldungen = []\n",
|
||||
" site = 1\n",
|
||||
" \n",
|
||||
" start_date = datetime(year, month, day).strftime(\"%Y-%m-%d\")\n",
|
||||
" end_date = datetime(year, month, day).strftime(\"%Y-%m-%d\")\n",
|
||||
" request = create_get_request(site=site, location=bundesland, start_date=start_date, end_date=end_date)\n",
|
||||
" \n",
|
||||
" new_meldungen = extract_response(requests_get(request), bundesland=bundesland)\n",
|
||||
" meldungen.extend(new_meldungen)\n",
|
||||
" \n",
|
||||
" pbar = tqdm(desc=bundesland)\n",
|
||||
" while len(new_meldungen) != 0:\n",
|
||||
" time.sleep(1)\n",
|
||||
" site += 1\n",
|
||||
" \n",
|
||||
" request = create_get_request(\n",
|
||||
" site=site, location=bundesland, start_date=start_date, end_date=end_date,\n",
|
||||
" )\n",
|
||||
" \n",
|
||||
" new_meldungen = extract_response(requests_get(request), bundesland=bundesland)\n",
|
||||
" meldungen.extend(new_meldungen)\n",
|
||||
" pbar.update(1)\n",
|
||||
" pbar.close()\n",
|
||||
" \n",
|
||||
" return meldungen"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"id": "85508758",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def get_meldungen_for_date(year, month, day):\n",
|
||||
" \"\"\"Extrahiere alle Meldungen für einen Tag\n",
|
||||
" \n",
|
||||
" Args:\n",
|
||||
" year (int): Jahr\n",
|
||||
" month (int): Monat\n",
|
||||
" day (int): Tag\n",
|
||||
" \"\"\"\n",
|
||||
"\n",
|
||||
" meldungen_dict = {}\n",
|
||||
" \n",
|
||||
" for bundesland in BUNDESLAENDER:\n",
|
||||
" meldungen = _get_meldungen_for_date_and_bundesland(year, month, day, bundesland)\n",
|
||||
" meldungen_dict[bundesland] = meldungen\n",
|
||||
" \n",
|
||||
" return meldungen_dict"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "f938d8a9",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Speichern der Daten in CSV-Dateien"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "67374d3b",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Zur sinnvollen Speicherung werden alle Daten eines Tages in genau einer CSV-Datei gespeichert. Diese können danach (manuell) als ZIP des Monats zusammengefasst werden. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"id": "276e700d",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def store_meldungen_in_csv(year, month, day):\n",
|
||||
" \"\"\"Speichere alle Meldungen für ein Datum in einer CSV. Im Namen der CSV steht das Datum.\"\"\"\n",
|
||||
"\n",
|
||||
" filename = f\"{year}-{month}-{day}_presseportal.csv\"\n",
|
||||
" path = os.path.join(DATA_FOLDER, filename)\n",
|
||||
" meldungen_per_bundesland = get_meldungen_for_date(year, month, day)\n",
|
||||
" \n",
|
||||
" with open(path, 'w', newline='', encoding='UTF8') as f:\n",
|
||||
" writer = csv.writer(f)\n",
|
||||
" writer.writerow(['article_id', 'timestamp', 'location', 'bundesland', 'content'])\n",
|
||||
" \n",
|
||||
" for bundesland, meldungen in meldungen_per_bundesland.items():\n",
|
||||
" for meldung in meldungen:\n",
|
||||
" writer.writerow(meldung.to_row())\n",
|
||||
" \n",
|
||||
" print(f\"File '{filename}' created\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"id": "c5d0bdbd",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def store_month(year, month):\n",
|
||||
" month_end_day = calendar.monthrange(year, month)[1]\n",
|
||||
" \n",
|
||||
" for i in range(0, month_end_day):\n",
|
||||
" store_meldungen_in_csv(year, month, i+1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d9f3e24b",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Auswertung: Wie viele Einträge pro Bundesland?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "9f600d3c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Für fortführende Visualisierung und um zu testen, ob der Algorithmus richtig funktioniert, werden hier alle Pressemitteilungen aller Bundesländer ausgezählt:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 51,
|
||||
"id": "b7c85078",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"counter = {}\n",
|
||||
"\n",
|
||||
"for filename in os.listdir('../data/'):\n",
|
||||
" if filename.endswith(\"_presseportal.csv\"):\n",
|
||||
" path = '../data/' + filename\n",
|
||||
" \n",
|
||||
" with open(path, 'r', encoding='UTF8') as f_in:\n",
|
||||
" reader = csv.reader(f_in)\n",
|
||||
" next(reader)\n",
|
||||
" for row in reader:\n",
|
||||
" bundesland = row[3]\n",
|
||||
" if bundesland not in counter:\n",
|
||||
" counter[bundesland] = 1\n",
|
||||
" else:\n",
|
||||
" counter[bundesland] += 1\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "copbird-env",
|
||||
"language": "python",
|
||||
"name": "copbird-env"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
1058
ergebnisse_hackathon_repo/team-16/notebooks/keywords-tweets.ipynb
Normal file
1058
ergebnisse_hackathon_repo/team-16/notebooks/keywords-tweets.ipynb
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,490 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "cce66876",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Interface Presseportal"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "f12d7022",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Das Presseportal bietet eine Platform, bei der mittels GET-requests die Pressemitteilungen verschiedener Institutionen (Polizei, Feuerwehr, ...), in bestimmten Zeiträumen in gegebenen Gebieten extrahiert werden können. Dafür gibt es auch eine API."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b07aef9f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Beispiel URL: `https://www.presseportal.de/blaulicht/d/polizei/l/hessen/30?startDate=2021-05-04&endDate=2021-05-04`"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "258338d0",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Da eine große Menge an Tweets angefragt werden und Requests ziemlich lange benötigen, muss die Anfrage optimiert werden:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "b07fac3c",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import requests\n",
|
||||
"import calendar\n",
|
||||
"import time\n",
|
||||
"import os\n",
|
||||
"import csv\n",
|
||||
"\n",
|
||||
"from tqdm.notebook import tqdm\n",
|
||||
"from datetime import datetime\n",
|
||||
"from bs4 import BeautifulSoup"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "0dfce15a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Um Pressemitteilungen sinnvoll zu speichern, werden sie als Klasse dargestellt:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "6c0b30a8",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"class Pressemitteilung:\n",
|
||||
" def __init__(self, article_id, timestamp, location, text, bundesland):\n",
|
||||
" self.article_id = article_id\n",
|
||||
" self.timestamp = timestamp\n",
|
||||
" self.location = location\n",
|
||||
" self.text = text\n",
|
||||
" self.bundesland=bundesland\n",
|
||||
" \n",
|
||||
" def __str__(self):\n",
|
||||
" return f\"[{self.article_id}] {self.timestamp} {self.location} | {' '.join(self.text.split()[:6])}\"\n",
|
||||
" \n",
|
||||
" def to_row(self):\n",
|
||||
" return [self.article_id, self.timestamp, self.location, self.bundesland, self.text]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "63cceebe",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"**Konstanten und Pfade**"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "8bcc877f",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"REQUEST_HEADERS = {\n",
|
||||
" \"User-Agent\": (\n",
|
||||
" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 \"\n",
|
||||
" \"(KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36\"\n",
|
||||
" )\n",
|
||||
"}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "c637ac38",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"DATA_FOLDER = os.path.join(\"..\", \"data\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "f094dee0",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"BUNDESLAENDER = [\n",
|
||||
" \"baden-wuerttemberg\",\n",
|
||||
" \"bayern\",\n",
|
||||
" \"berlin-brandenburg\",\n",
|
||||
" \"bremen\",\n",
|
||||
" \"hamburg\",\n",
|
||||
" \"hessen\",\n",
|
||||
" \"mecklenburg-vorpommern\",\n",
|
||||
" \"niedersachsen\",\n",
|
||||
" \"nordrhein-westfalen\",\n",
|
||||
" \"rheinland-pfalz\",\n",
|
||||
" \"saarland\",\n",
|
||||
" \"sachsen\",\n",
|
||||
" \"sachsen-anhalt\",\n",
|
||||
" \"schleswig-holstein\",\n",
|
||||
" \"thueringen\",\n",
|
||||
"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "84632391",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def requests_get(request):\n",
|
||||
" return requests.get(request, headers=REQUEST_HEADERS)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "1af0bdbd",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def extract_response(response, bundesland=None):\n",
|
||||
" \"\"\"Extrahiere aus der Response einer Request alle Pressemitteilungen\n",
|
||||
" \n",
|
||||
" Args:\n",
|
||||
" response (:obj:`Response`)\n",
|
||||
" bundesland (:obj:`str`): Kann mit angegeben, falls es in der Suche relevant war. Default = None\n",
|
||||
" \n",
|
||||
" Returns:\n",
|
||||
" list of :obj:`Pressemitteilung`\n",
|
||||
" \"\"\"\n",
|
||||
" \n",
|
||||
" mitteilungen = []\n",
|
||||
" \n",
|
||||
" soup = BeautifulSoup(response.content, 'html.parser')\n",
|
||||
" for article in soup.find_all('article'):\n",
|
||||
" data_url = article['data-url']\n",
|
||||
" article_id = '-'.join(article['data-url'].split('/')[-2:])\n",
|
||||
" meta = article.find('div')\n",
|
||||
" \n",
|
||||
" timestamp_str = meta.find(class_=\"date\")\n",
|
||||
" \n",
|
||||
" if timestamp_str is not None:\n",
|
||||
" timestamp_str = timestamp_str.text\n",
|
||||
" timestamp = datetime.strptime(timestamp_str, '%d.%m.%Y – %H:%M')\n",
|
||||
" else:\n",
|
||||
" timestamp = None\n",
|
||||
" \n",
|
||||
" location_str = meta.find(class_=\"news-topic\")\n",
|
||||
" location_str = location_str.text if location_str is not None else None\n",
|
||||
" \n",
|
||||
" p_texts = article.findAll('p')\n",
|
||||
" if len(p_texts) > 1:\n",
|
||||
" text = p_texts[1].text\n",
|
||||
" else:\n",
|
||||
" text = ''\n",
|
||||
" \n",
|
||||
" mitteilungen.append(Pressemitteilung(article_id, timestamp, location_str, text, bundesland))\n",
|
||||
" \n",
|
||||
" return mitteilungen"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "c62c06c9",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def create_get_request(*, site=1, location=None, start_date=None, end_date=None):\n",
|
||||
" \"\"\"Simulation einer API: Erzeuge aus Parametern eine URL\n",
|
||||
" \n",
|
||||
" Args:\n",
|
||||
" site (int, default=1): Aktuelle Seite, auf der man sich befinden soll. Ist in der URL in 30er Schritten angegeben\n",
|
||||
" location (:obj:`str`, default=None): Bundesland bzw. Stadt\n",
|
||||
" start_date (:obj:`str`, default=None)\n",
|
||||
" end_date (:obj:`str`, default=None)\n",
|
||||
" Returns:\n",
|
||||
" str: URL\n",
|
||||
" \"\"\"\n",
|
||||
" url = f\"https://www.presseportal.de/blaulicht/d/polizei\"\n",
|
||||
" \n",
|
||||
" if location is not None:\n",
|
||||
" url += f\"/l/{location}\"\n",
|
||||
" \n",
|
||||
" if site > 1:\n",
|
||||
" url += f\"/{site*30}\"\n",
|
||||
" \n",
|
||||
" if start_date is not None or end_date is not None:\n",
|
||||
" url += \"?\"\n",
|
||||
" \n",
|
||||
" if start_date is not None:\n",
|
||||
" url += f\"startDate={start_date}\"\n",
|
||||
" \n",
|
||||
" if end_date is not None:\n",
|
||||
" url += \"&\"\n",
|
||||
" \n",
|
||||
" if end_date is not None:\n",
|
||||
" url += f\"endDate={end_date}\"\n",
|
||||
" \n",
|
||||
" return url"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "1c67c9bc",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Beispiel: Hamburg "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"id": "aff924d6",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"'https://www.presseportal.de/blaulicht/d/polizei/l/hamburg/90?startDate=2021-01-13&endDate=2021-03-20'"
|
||||
]
|
||||
},
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"url = create_get_request(location=\"hamburg\", site=3, start_date=\"2021-01-13\", end_date=\"2021-03-20\")\n",
|
||||
"url"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"id": "6e2b9091",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[6337-4840243] 2021-02-16 17:41:00 Hamburg | Hamburg (ots) - Tatzeit: 15.02.2021, 08:15\n",
|
||||
"[6337-4839937] 2021-02-16 13:14:00 Hamburg | Hamburg (ots) - Tatzeiten: a. 15.02.2021,\n",
|
||||
"[6337-4839709] 2021-02-16 11:33:00 Hamburg | Hamburg (ots) - Tatzeit: 15.02.2021, 18:25\n",
|
||||
"[6337-4839544] 2021-02-16 10:31:00 Hamburg | Hamburg (ots) - Zeit: 15.02.2021, 01:34\n",
|
||||
"[6337-4838489] 2021-02-15 11:48:00 Hamburg | Hamburg (ots) - Tatzeit: 14.02.2021; 19:17\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for mitteilung in extract_response(requests_get(url))[:5]:\n",
|
||||
" print(mitteilung)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e50af557",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Effizientes Einlesen"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b4a9580a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Um die Dateien sinnhaft zu extrahieren, ohne auf einen Schlag zu viele Anfragen zu tätigen, läuft das Programm synchron mit Pausen (1Sek / Anfrage). Die Hauptfunktion sucht für einen gegebenen Tag alle Pressemeldungen der Polizei und sortiert diese nach Bundesland bzw. Stadt."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"id": "da927e30",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def _get_meldungen_for_date_and_bundesland(year, month, day, bundesland):\n",
|
||||
" \"\"\"Suche alle Meldungen für ein Bundesland zu einem konkreten Tag\"\"\"\n",
|
||||
"\n",
|
||||
" meldungen = []\n",
|
||||
" site = 1\n",
|
||||
" \n",
|
||||
" start_date = datetime(year, month, day).strftime(\"%Y-%m-%d\")\n",
|
||||
" end_date = datetime(year, month, day).strftime(\"%Y-%m-%d\")\n",
|
||||
" request = create_get_request(site=site, location=bundesland, start_date=start_date, end_date=end_date)\n",
|
||||
" \n",
|
||||
" new_meldungen = extract_response(requests_get(request), bundesland=bundesland)\n",
|
||||
" meldungen.extend(new_meldungen)\n",
|
||||
" \n",
|
||||
" pbar = tqdm(desc=bundesland)\n",
|
||||
" while len(new_meldungen) != 0:\n",
|
||||
" time.sleep(1)\n",
|
||||
" site += 1\n",
|
||||
" \n",
|
||||
" request = create_get_request(\n",
|
||||
" site=site, location=bundesland, start_date=start_date, end_date=end_date,\n",
|
||||
" )\n",
|
||||
" \n",
|
||||
" new_meldungen = extract_response(requests_get(request), bundesland=bundesland)\n",
|
||||
" meldungen.extend(new_meldungen)\n",
|
||||
" pbar.update(1)\n",
|
||||
" pbar.close()\n",
|
||||
" \n",
|
||||
" return meldungen"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"id": "85508758",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def get_meldungen_for_date(year, month, day):\n",
|
||||
" \"\"\"Extrahiere alle Meldungen für einen Tag\n",
|
||||
" \n",
|
||||
" Args:\n",
|
||||
" year (int): Jahr\n",
|
||||
" month (int): Monat\n",
|
||||
" day (int): Tag\n",
|
||||
" \"\"\"\n",
|
||||
"\n",
|
||||
" meldungen_dict = {}\n",
|
||||
" \n",
|
||||
" for bundesland in BUNDESLAENDER:\n",
|
||||
" meldungen = _get_meldungen_for_date_and_bundesland(year, month, day, bundesland)\n",
|
||||
" meldungen_dict[bundesland] = meldungen\n",
|
||||
" \n",
|
||||
" return meldungen_dict"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "f938d8a9",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Speichern der Daten in CSV-Dateien"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "67374d3b",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Zur sinnvollen Speicherung werden alle Daten eines Tages in genau einer CSV-Datei gespeichert. Diese können danach (manuell) als ZIP des Monats zusammengefasst werden. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"id": "276e700d",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def store_meldungen_in_csv(year, month, day):\n",
|
||||
" \"\"\"Speichere alle Meldungen für ein Datum in einer CSV. Im Namen der CSV steht das Datum.\"\"\"\n",
|
||||
"\n",
|
||||
" filename = f\"{year}-{month}-{day}_presseportal.csv\"\n",
|
||||
" path = os.path.join(DATA_FOLDER, filename)\n",
|
||||
" meldungen_per_bundesland = get_meldungen_for_date(year, month, day)\n",
|
||||
" \n",
|
||||
" with open(path, 'w', newline='', encoding='UTF8') as f:\n",
|
||||
" writer = csv.writer(f)\n",
|
||||
" writer.writerow(['article_id', 'timestamp', 'location', 'bundesland', 'content'])\n",
|
||||
" \n",
|
||||
" for bundesland, meldungen in meldungen_per_bundesland.items():\n",
|
||||
" for meldung in meldungen:\n",
|
||||
" writer.writerow(meldung.to_row())\n",
|
||||
" \n",
|
||||
" print(f\"File '{filename}' created\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"id": "c5d0bdbd",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def store_month(year, month):\n",
|
||||
" month_end_day = calendar.monthrange(year, month)[1]\n",
|
||||
" \n",
|
||||
" for i in range(0, month_end_day):\n",
|
||||
" store_meldungen_in_csv(year, month, i+1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d9f3e24b",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Auswertung: Wie viele Einträge pro Bundesland?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "9f600d3c",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Für fortführende Visualisierung und um zu testen, ob der Algorithmus richtig funktioniert, werden hier alle Pressemitteilungen aller Bundesländer ausgezählt:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 51,
|
||||
"id": "b7c85078",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"counter = {}\n",
|
||||
"\n",
|
||||
"for filename in os.listdir('../data/'):\n",
|
||||
" if filename.endswith(\"_presseportal.csv\"):\n",
|
||||
" path = '../data/' + filename\n",
|
||||
" \n",
|
||||
" with open(path, 'r', encoding='UTF8') as f_in:\n",
|
||||
" reader = csv.reader(f_in)\n",
|
||||
" next(reader)\n",
|
||||
" for row in reader:\n",
|
||||
" bundesland = row[3]\n",
|
||||
" if bundesland not in counter:\n",
|
||||
" counter[bundesland] = 1\n",
|
||||
" else:\n",
|
||||
" counter[bundesland] += 1\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "python-scientific kernel",
|
||||
"language": "python",
|
||||
"name": "python-scientific"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.9"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
1787
ergebnisse_hackathon_repo/team-16/notebooks/simons-notebook.ipynb
Normal file
1787
ergebnisse_hackathon_repo/team-16/notebooks/simons-notebook.ipynb
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,40 @@
|
|||
"""
|
||||
Aim: Building a connection between all tweets (tweet-id) and the state (Bundesland; Stadt) of the corresponding
|
||||
police station (user_id; name; handle)
|
||||
"""
|
||||
|
||||
import pandas as pd
|
||||
from match_blaulich_tw_accounts import extend_blaulicht_data
|
||||
|
||||
tw_tweets = pd.read_csv(r'data\copbird_table_tweet.csv')
|
||||
tw_user_data = pd.read_csv(r'data\copbird_table_user.csv')
|
||||
tw_pol_geo_data = pd.read_csv(r'geolocations\polizei_accounts_geo.csv', delimiter='\t')
|
||||
|
||||
|
||||
def get_tweets_by_user_id():
|
||||
tweet_ids_user_ids = pd.DataFrame(tw_tweets, columns=['user_id', 'id'], dtype=str).rename(
|
||||
columns={"id": "tweet_id"})
|
||||
grouped_tweets = tweet_ids_user_ids.groupby('user_id')
|
||||
return grouped_tweets
|
||||
|
||||
|
||||
def add_state_to_user_df():
|
||||
tw_user_df = tw_user_data.rename(columns={"id": "user_id"})
|
||||
tw_pol_geo_df = tw_pol_geo_data.rename(columns={"Name": "name", "Bundesland": "bundesland", "Stadt": "stadt"})
|
||||
|
||||
return pd.merge(tw_user_df, tw_pol_geo_df[['name', 'stadt', 'bundesland']], on='name', how='left')
|
||||
|
||||
|
||||
def add_state_to_tweets_df():
|
||||
tw_tweets_ext = pd.merge(tw_tweets, add_state_to_user_df()[['user_id', 'stadt', 'bundesland', 'name', 'handle'
|
||||
]], on='user_id', how='left')
|
||||
return tw_tweets_ext[['id', 'tweet_text', 'created_at', 'user_id', 'name', 'handle', 'stadt', 'bundesland'
|
||||
]].rename(columns={'id': 'tweet_id', 'name': 'user_name'})
|
||||
|
||||
|
||||
def save_to_csv(df: pd, file_name: str):
|
||||
df.to_csv(path_or_buf=f'{file_name}.csv', index=False)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
save_to_csv(extend_blaulicht_data(), '2020-12_2021-05_presseportal')
|
|
@ -0,0 +1,44 @@
|
|||
import pandas as pd
|
||||
from os import listdir
|
||||
from os.path import join, isdir
|
||||
|
||||
df_tw_user = pd.read_csv('copbird_table_user_ext.csv').rename(columns={'name': 'user_name'})
|
||||
dir_blaulicht = 'data/presseportal'
|
||||
|
||||
def concat_blaulicht_dfs():
|
||||
df = pd.DataFrame()
|
||||
for dir in listdir(dir_blaulicht):
|
||||
dir = join(dir_blaulicht, dir)
|
||||
if isdir(dir):
|
||||
for f in listdir(dir):
|
||||
f = join(dir, f)
|
||||
csv = pd.read_csv(f)
|
||||
df = df.append(csv)
|
||||
return df
|
||||
|
||||
def extend_blaulicht_data():
|
||||
df_blaulicht = concat_blaulicht_dfs()
|
||||
mapping = map_bl_tw_citys()
|
||||
df_blaulicht['tw_user_id'] = df_blaulicht['location'].apply(lambda x: find_location(x, mapping))
|
||||
return df_blaulicht
|
||||
|
||||
def find_location(txt, mp):
|
||||
mapped_blaulicht = mp.get(txt, "")
|
||||
return mapped_blaulicht[1] if mapped_blaulicht != "" else ""
|
||||
|
||||
def map_bl_tw_citys():
|
||||
import re
|
||||
df_blaulicht = concat_blaulicht_dfs()
|
||||
df_blaulicht.sort_index(inplace=True)
|
||||
tw_locations = list(df_tw_user[['stadt', 'user_id']].itertuples(index=False, name=None))
|
||||
tw_locations = [(loc, id) for loc, id in tw_locations if len(str(loc)) > 1]
|
||||
bl_locations = list(set([str(city) for city in df_blaulicht['location'].values]))
|
||||
bl_tw_locations = {}
|
||||
for bl_loc in bl_locations:
|
||||
for tw_loc, tw_id in tw_locations:
|
||||
if re.search(r'\b' + re.escape(str(tw_loc).lower()) + r'\b', str(bl_loc).lower()):
|
||||
bl_tw_locations[bl_loc] = [tw_loc, tw_id]
|
||||
return bl_tw_locations
|
||||
|
||||
if __name__ == '__main__':
|
||||
extend_blaulicht_data()
|
|
@ -0,0 +1,40 @@
|
|||
"""
|
||||
Aim: Building a connection between all tweets (tweet-id) and the state (Bundesland; Stadt) of the corresponding
|
||||
police station (user_id; name; handle)
|
||||
"""
|
||||
|
||||
import pandas as pd
|
||||
from match_blaulich_tw_accounts import extend_blaulicht_data
|
||||
|
||||
tw_tweets = pd.read_csv(r'data\copbird_table_tweet.csv')
|
||||
tw_user_data = pd.read_csv(r'data\copbird_table_user.csv')
|
||||
tw_pol_geo_data = pd.read_csv(r'geolocations\polizei_accounts_geo.csv', delimiter='\t')
|
||||
|
||||
|
||||
def get_tweets_by_user_id():
|
||||
tweet_ids_user_ids = pd.DataFrame(tw_tweets, columns=['user_id', 'id'], dtype=str).rename(
|
||||
columns={"id": "tweet_id"})
|
||||
grouped_tweets = tweet_ids_user_ids.groupby('user_id')
|
||||
return grouped_tweets
|
||||
|
||||
|
||||
def add_state_to_user_df():
|
||||
tw_user_df = tw_user_data.rename(columns={"id": "user_id"})
|
||||
tw_pol_geo_df = tw_pol_geo_data.rename(columns={"Name": "name", "Bundesland": "bundesland", "Stadt": "stadt"})
|
||||
|
||||
return pd.merge(tw_user_df, tw_pol_geo_df[['name', 'stadt', 'bundesland']], on='name', how='left')
|
||||
|
||||
|
||||
def add_state_to_tweets_df():
|
||||
tw_tweets_ext = pd.merge(tw_tweets, add_state_to_user_df()[['user_id', 'stadt', 'bundesland', 'name', 'handle'
|
||||
]], on='user_id', how='left')
|
||||
return tw_tweets_ext[['id', 'tweet_text', 'created_at', 'user_id', 'name', 'handle', 'stadt', 'bundesland'
|
||||
]].rename(columns={'id': 'tweet_id', 'name': 'user_name'})
|
||||
|
||||
|
||||
def save_to_csv(df: pd, file_name: str):
|
||||
df.to_csv(path_or_buf=f'{file_name}.csv', index=False)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
save_to_csv(extend_blaulicht_data(), '2020-12_2021-05_presseportal')
|
|
@ -0,0 +1,44 @@
|
|||
import pandas as pd
|
||||
from os import listdir
|
||||
from os.path import join, isdir
|
||||
|
||||
df_tw_user = pd.read_csv('copbird_table_user_ext.csv').rename(columns={'name': 'user_name'})
|
||||
dir_blaulicht = 'data/presseportal'
|
||||
|
||||
def concat_blaulicht_dfs():
|
||||
df = pd.DataFrame()
|
||||
for dir in listdir(dir_blaulicht):
|
||||
dir = join(dir_blaulicht, dir)
|
||||
if isdir(dir):
|
||||
for f in listdir(dir):
|
||||
f = join(dir, f)
|
||||
csv = pd.read_csv(f)
|
||||
df = df.append(csv)
|
||||
return df
|
||||
|
||||
def extend_blaulicht_data():
|
||||
df_blaulicht = concat_blaulicht_dfs()
|
||||
mapping = map_bl_tw_citys()
|
||||
df_blaulicht['tw_user_id'] = df_blaulicht['location'].apply(lambda x: find_location(x, mapping))
|
||||
return df_blaulicht
|
||||
|
||||
def find_location(txt, mp):
|
||||
mapped_blaulicht = mp.get(txt, "")
|
||||
return mapped_blaulicht[1] if mapped_blaulicht != "" else ""
|
||||
|
||||
def map_bl_tw_citys():
|
||||
import re
|
||||
df_blaulicht = concat_blaulicht_dfs()
|
||||
df_blaulicht.sort_index(inplace=True)
|
||||
tw_locations = list(df_tw_user[['stadt', 'user_id']].itertuples(index=False, name=None))
|
||||
tw_locations = [(loc, id) for loc, id in tw_locations if len(str(loc)) > 1]
|
||||
bl_locations = list(set([str(city) for city in df_blaulicht['location'].values]))
|
||||
bl_tw_locations = {}
|
||||
for bl_loc in bl_locations:
|
||||
for tw_loc, tw_id in tw_locations:
|
||||
if re.search(r'\b' + re.escape(str(tw_loc).lower()) + r'\b', str(bl_loc).lower()):
|
||||
bl_tw_locations[bl_loc] = [tw_loc, tw_id]
|
||||
return bl_tw_locations
|
||||
|
||||
if __name__ == '__main__':
|
||||
extend_blaulicht_data()
|
512
ergebnisse_hackathon_repo/team-16/r-scripts/.Rhistory
Normal file
512
ergebnisse_hackathon_repo/team-16/r-scripts/.Rhistory
Normal file
|
@ -0,0 +1,512 @@
|
|||
pm_csv <- c(pm_csv, str_c("data/2021-1-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-2-", 1:28, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-3-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-4-", 1:30, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-5-", 1:21, "_presseportal.csv"))
|
||||
pm_list <- lapply(pm_csv, read_csv)
|
||||
pm_list <- lapply(pm_csv, read_csv)
|
||||
pm <- do.call(rbind, pm_list)
|
||||
pm_demo <- read_csv("data/copbird_table_pm_topiced_demonstr.csv")
|
||||
tw_demo <- read_csv("data/copbird_table_tweet_topiced_demonstr.csv")
|
||||
pm_text <- pm$content
|
||||
pm_text <- pm_text[-which(is.na(pm_text))] # remove missing values
|
||||
length(grep("(ots)", pm_text)) == length(pm_text) # every report contains "ots"
|
||||
length(grep("(ots)", pm_text)) == length(pm_text) # every report contains "ots"
|
||||
pm_text <- gsub("^(.*?\\(ots\\) - )", "", pm_text, perl = TRUE) # remove <Ort (ots) - >
|
||||
pm_text <- gsub("^(.*?\\(ots\\) - )", "", pm_text, perl = TRUE) # remove <Ort (ots) - >
|
||||
pm_text <- gsub("( \\.\\.\\.)$", "", pm_text) # remove < ...>
|
||||
pm_text <- gsub("( \\.\\.\\.)$", "", pm_text) # remove < ...>
|
||||
content_ber <- rep(NA, nrow(pm))
|
||||
content_ber <- rep(NA, nrow(pm))
|
||||
content_ber[which(!is.na(pm$content))] <- pm_text
|
||||
content_ber[which(!is.na(pm$content))] <- pm_text
|
||||
pm <- cbind(pm, content_ber)
|
||||
pm_text <- gsub("[^[:alnum:] ]", "", pm_text)
|
||||
pm_text <- gsub("[^[:alnum:] ]", "", pm_text)
|
||||
content_ber_satzzeichen <- rep(NA, nrow(pm))
|
||||
content_ber_satzzeichen <- rep(NA, nrow(pm))
|
||||
content_ber_satzzeichen[which(!is.na(pm$content))] <- pm_text
|
||||
pm <- cbind(pm, content_ber_satzzeichen)
|
||||
head(pm)
|
||||
pm_text <- pm_demo$content
|
||||
pm_text <- gsub("^(.*?\\(ots\\) - )", "", pm_text, perl = TRUE) # remove <Ort (ots) - >
|
||||
pm_text <- gsub("( \\.\\.\\.)$", "", pm_text) # remove < ...>
|
||||
content_ber <- rep(NA, nrow(pm_demo))
|
||||
content_ber[which(!is.na(pm_demo$content))] <- pm_text
|
||||
pm_demo <- cbind(pm_demo, content_ber)
|
||||
pm_text <- gsub("[^[:alnum:] ]", "", pm_text)
|
||||
content_ber_satzzeichen <- rep(NA, nrow(pm_demo))
|
||||
content_ber_satzzeichen[which(!is.na(pm_demo$content))] <- pm_text
|
||||
pm_demo <- cbind(pm_demo, content_ber_satzzeichen)
|
||||
head(pm_demo)
|
||||
readAndflattenSentiWS <- function(filename) {
|
||||
words = readLines(filename, encoding="UTF-8")
|
||||
words <- sub("\\|[A-Z]+\t[0-9.-]+\t?", ",", words)
|
||||
words <- unlist(strsplit(words, ","))
|
||||
words <- tolower(words)
|
||||
return(words)
|
||||
}
|
||||
pos.words <- c(scan("data/positive-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("data/positive-words.txt"))
|
||||
neg.words <- c(scan("data/negative-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("data/negative-words.txt"))
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none')
|
||||
{
|
||||
#require(plyr)
|
||||
require(stringr)
|
||||
scores = laply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# we just want a TRUE/FALSE:
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none')
|
||||
{
|
||||
#require(plyr)
|
||||
require(stringr)
|
||||
scores = lapply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# we just want a TRUE/FALSE:
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_demo <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
ggplot(score_pm_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none')
|
||||
{
|
||||
#require(plyr)
|
||||
require(stringr)
|
||||
scores = lapply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# we just want a TRUE/FALSE:
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
library(plyr)
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none')
|
||||
{
|
||||
require(plyr)
|
||||
require(stringr)
|
||||
scores = lapply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# we just want a TRUE/FALSE:
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none')
|
||||
{
|
||||
require(plyr)
|
||||
require(stringr)
|
||||
scores = lapply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# we just want a TRUE/FALSE:
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none') {
|
||||
require(plyr)
|
||||
require(stringr)
|
||||
scores = laply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# I don't just want a TRUE/FALSE! How can I do this?
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_demo <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
ggplot(score_pm_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
ggplot(score_tw_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
View(score_tw_demo)
|
||||
knitr::opts_chunk$set(echo = TRUE)
|
||||
library(tidyverse)
|
||||
library(stringi)
|
||||
pm_csv <- str_c("data/2020-12-", 1:26, "_presseportal.csv")
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-1-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-2-", 1:28, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-3-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-4-", 1:30, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-5-", 1:21, "_presseportal.csv"))
|
||||
pm_list <- lapply(pm_csv, read_csv)
|
||||
pm <- do.call(rbind, pm_list)
|
||||
pm_demo <- read_csv("data/copbird_table_pm_topiced_demonstr.csv")
|
||||
tw_demo <- read_csv("data/copbird_table_tweet_topiced_demonstr.csv")
|
||||
pm_text <- pm$content
|
||||
pm_text <- pm_text[-which(is.na(pm_text))] # remove missing values
|
||||
length(grep("(ots)", pm_text)) == length(pm_text) # every report contains "ots"
|
||||
pm_text <- gsub("^(.*?\\(ots\\) - )", "", pm_text, perl = TRUE) # remove <Ort (ots) - >
|
||||
pm_text <- gsub("( \\.\\.\\.)$", "", pm_text) # remove < ...>
|
||||
content_ber <- rep(NA, nrow(pm))
|
||||
content_ber[which(!is.na(pm$content))] <- pm_text
|
||||
pm <- cbind(pm, content_ber)
|
||||
pm_text <- gsub("[^[:alnum:] ]", "", pm_text)
|
||||
content_ber_satzzeichen <- rep(NA, nrow(pm))
|
||||
content_ber_satzzeichen[which(!is.na(pm$content))] <- pm_text
|
||||
pm <- cbind(pm, content_ber_satzzeichen)
|
||||
head(pm)
|
||||
# csvpath <- <your path>
|
||||
# write_csv(pm, str_c(csvpath, "/pressemeldungen.csv"))
|
||||
pm_text <- pm_demo$content
|
||||
pm_text <- gsub("^(.*?\\(ots\\) - )", "", pm_text, perl = TRUE) # remove <Ort (ots) - >
|
||||
pm_text <- gsub("( \\.\\.\\.)$", "", pm_text) # remove < ...>
|
||||
content_ber <- rep(NA, nrow(pm_demo))
|
||||
content_ber[which(!is.na(pm_demo$content))] <- pm_text
|
||||
pm_demo <- cbind(pm_demo, content_ber)
|
||||
pm_text <- gsub("[^[:alnum:] ]", "", pm_text)
|
||||
content_ber_satzzeichen <- rep(NA, nrow(pm_demo))
|
||||
content_ber_satzzeichen[which(!is.na(pm_demo$content))] <- pm_text
|
||||
pm_demo <- cbind(pm_demo, content_ber_satzzeichen)
|
||||
head(pm_demo)
|
||||
readAndflattenSentiWS <- function(filename) {
|
||||
words = readLines(filename, encoding="UTF-8")
|
||||
words <- sub("\\|[A-Z]+\t[0-9.-]+\t?", ",", words)
|
||||
words <- unlist(strsplit(words, ","))
|
||||
words <- tolower(words)
|
||||
return(words)
|
||||
}
|
||||
pos.words <- c(scan("data/positive-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("data/positive-words.txt"))
|
||||
neg.words <- c(scan("data/negative-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("data/negative-words.txt"))
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none') {
|
||||
require(plyr)
|
||||
require(stringr)
|
||||
scores = laply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# I don't just want a TRUE/FALSE! How can I do this?
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_demo <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
ggplot(score_pm_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
ggplot(score_tw_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
View(score_tw_demo)
|
||||
Ciew(score_pm_demo)
|
||||
View(score_pm_demo)
|
||||
score_pm_demo$text[3]
|
||||
knitr::opts_chunk$set(echo = TRUE)
|
||||
library(tidyverse)
|
||||
library(stringi)
|
||||
# Read in data
|
||||
pm_csv <- str_c("data/2020-12-", 1:26, "_presseportal.csv")
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-1-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-2-", 1:28, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-3-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-4-", 1:30, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-5-", 1:21, "_presseportal.csv"))
|
||||
pm_list <- lapply(pm_csv, read_csv)
|
||||
pm <- do.call(rbind, pm_list)
|
||||
summary(pm)
|
||||
tweets <- read_csv("data/copbird_table_tweet.csv")
|
||||
tweets <- tweets[tweets$created_at >= "2021-04-01", 1:4]
|
||||
usersX <- read_csv("data/copbird_table_user_ext.csv")
|
||||
# tweetXstate <- read_csv("data/copbird_table_tweet_ext_state.csv")
|
||||
# tweetXstate$stadt[tweetXstate$user_name == "Polizei Oldenburg-Stadt/Ammerl"] <- "Oldenburg"
|
||||
# tweetXstate$stadt[tweetXstate$user_name == "Polizei Mecklenburgische Seenp"] <- "Neubrandenburg"
|
||||
# tweetXstate$stadt[tweetXstate$user_name == "Polizei Wilhelmshaven/Frieslan"] <- "Wilhelmshaven"
|
||||
# tweetXstate$stadt[tweetXstate$user_name == "Bundespolizei Baden-Württember"] <- "Stuttgart"
|
||||
# tweetXstate$stadt[tweetXstate$user_name == "Landeskriminalamt Rheinland-Pf"] <- "Mainz"
|
||||
# tweetXstate$stadt[tweetXstate$user_name == "Bundespolizei Mitteldeutschlan"] <- "Pirna"
|
||||
# tweetXstate$stadt[tweetXstate$user_name == "Polizei Delmenhorst/Oldenburg-"] <- "Delmenhorst"
|
||||
# tweetXstate$stadt[tweetXstate$user_name == "Bundespolizei Flughafen Frankf"] <- "Frankfurt"
|
||||
# blaulicht <- read_csv("data/2020-12_2021-05_presseportal.csv")
|
||||
# users <- read_csv("data/copbird_table_user.csv")
|
||||
# str(users)
|
||||
# users$name <- as.factor(users$name)
|
||||
# users$handle <- as.factor(users$handle)
|
||||
pm_orte <- pm %>% group_by(bundesland) %>% count(location)
|
||||
head(pm_orte)
|
||||
head(pm_orte %>% arrange(desc(n)), n = 20)
|
||||
knitr::opts_chunk$set(echo = TRUE)
|
||||
library(tidyverse)
|
||||
library(stringi)
|
||||
pm_csv <- str_c("data/2020-12-", 1:26, "_presseportal.csv")
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-1-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-2-", 1:28, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-3-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-4-", 1:30, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-5-", 1:21, "_presseportal.csv"))
|
||||
pm_list <- lapply(pm_csv, read_csv)
|
||||
pm <- do.call(rbind, pm_list)
|
||||
tweets <- read_csv("data/copbird_table_tweet.csv")
|
||||
tweets <- tweets[tweets$created_at >= "2021-04-01", 1:4]
|
||||
usersX <- read_csv("data/copbird_table_user_ext.csv")
|
||||
tweetXstate <- read_csv("data/copbird_table_tweet_ext_state.csv")
|
||||
blaulicht <- read_csv("data/2020-12_2021-05_presseportal.csv")
|
||||
pm_demo <- read_csv("data/copbird_table_pm_topiced_demonstr.csv")
|
||||
tw_demo <- read_csv("data/copbird_table_tweet_topiced_demonstr.csv")
|
||||
pm_drogen <- read_csv("data/copbird_table_pm_topiced_drogen.csv")
|
||||
tw_drogen <- read_csv("data/copbird_table_tweet_topiced_drogen.csv")
|
||||
pm_rass <- read_csv("data/copbird_table_pm_topiced_rassis.csv")
|
||||
tw_rass <- read_csv("data/copbird_table_tweet_topiced_rassis.csv")
|
||||
head(usersX)
|
||||
head(tweetXstate[, 5:8])
|
||||
blaulicht$tw_user_id <- as.character(blaulicht$tw_user_id)
|
||||
head(blaulicht[, -c(2, 5)])
|
||||
land_tw <- full_join(tweets, usersX[c(1, 4)], by = "user_id")
|
||||
land_tw$bundesland[land_tw$bundesland == "-"] <- NA_character_
|
||||
land_tw <- land_tw %>% group_by(bundesland) %>% count()
|
||||
land_tw$bundesland <- as.factor(land_tw$bundesland)
|
||||
land_pm <- pm %>% group_by(bundesland) %>% count()
|
||||
land_pm$bundesland[land_pm$bundesland == "berlin-brandenburg"] <- "berlin"
|
||||
land_pm$bundesland <- stri_trans_totitle(land_pm$bundesland)
|
||||
land_pm$bundesland <- gsub("ue", "ü", land_pm$bundesland)
|
||||
land_pm$bundesland <- factor(land_pm$bundesland, levels = levels(land_tw$bundesland))
|
||||
land_pm_tw <- full_join(land_pm, land_tw, by = "bundesland")
|
||||
names(land_pm_tw)[2:3] <- c("Pressemeldung", "Twitter")
|
||||
land_pm_tw <- land_pm_tw[-which(is.na(land_pm_tw$bundesland)), ]
|
||||
land_pm_tw$Pressemeldung[which(is.na(land_pm_tw$Pressemeldung))] <- 0
|
||||
land_pm_tw <- gather(land_pm_tw, key = "Plattform", value = "count", -bundesland)
|
||||
ggplot(land_pm_tw) +
|
||||
geom_col(aes(x = bundesland, y = count, fill = Plattform)) +
|
||||
scale_fill_manual(values = c("#CC6699", "#0099CC")) +
|
||||
facet_wrap(~Plattform) +
|
||||
coord_flip() +
|
||||
guides(fill = FALSE) +
|
||||
labs(title = "Anzahl der Pressemeldungen und Tweets",
|
||||
subtitle = "Im Zeitraum April bis Mai 2021") +
|
||||
theme_minimal()
|
||||
ggplot(land_pm_tw) +
|
||||
geom_col(aes(x = bundesland, y = count, fill = Plattform), position = "fill") +
|
||||
scale_fill_manual(values = c("#CC6699", "#0099CC")) +
|
||||
coord_flip() +
|
||||
labs(title = "Anzahl der Pressemeldungen und Tweets",
|
||||
subtitle = "Im Zeitraum April bis Mai 2021") +
|
||||
theme_minimal()
|
||||
readAndflattenSentiWS <- function(filename) {
|
||||
words = readLines(filename, encoding="UTF-8")
|
||||
words <- sub("\\|[A-Z]+\t[0-9.-]+\t?", ",", words)
|
||||
words <- unlist(strsplit(words, ","))
|
||||
words <- tolower(words)
|
||||
return(words)
|
||||
}
|
||||
pos.words <- c(scan("data/positive-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("data/positive-words.txt"))
|
||||
neg.words <- c(scan("data/negative-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("data/negative-words.txt"))
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none') {
|
||||
require(plyr)
|
||||
require(stringr)
|
||||
scores = laply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# I don't just want a TRUE/FALSE! How can I do this?
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_demo <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
ggplot(score_pm_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
ggplot(score_tw_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
score_pm_drogen <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_drogen <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
ggplot(score_pm_drogen) +
|
||||
geom_bar(aes(x = score), fill = "darkgreen") +
|
||||
labs(title = "Topic: Drogen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
ggplot(score_tw_drogen) +
|
||||
geom_bar(aes(x = score), fill = "darkgreen") +
|
||||
labs(title = "Topic: Drogen", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
score_pm_rass <- score.sentiment(pm_rass$content, pos.words, neg.words)
|
||||
score_tw_rass <- score.sentiment(tw_rass$tweet_text, pos.words, neg.words)
|
||||
ggplot(score_pm_rass) +
|
||||
geom_bar(aes(x = score), fill = "purple") +
|
||||
labs(title = "Topic: Rassismus", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
ggplot(score_tw_rass) +
|
||||
geom_bar(aes(x = score), fill = "purple") +
|
||||
labs(title = "Topic: Rassismus", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
|
@ -0,0 +1,216 @@
|
|||
---
|
||||
title: "Team 16"
|
||||
author: "Christian, Simon und Cuca"
|
||||
date: "23 5 2021"
|
||||
output: pdf_document
|
||||
---
|
||||
|
||||
```{r setup, include=FALSE}
|
||||
knitr::opts_chunk$set(echo = TRUE)
|
||||
```
|
||||
|
||||
# Daten einlesen
|
||||
```{r, message = FALSE}
|
||||
library(tidyverse)
|
||||
library(stringi)
|
||||
|
||||
pm_csv <- str_c("data/2020-12-", 1:26, "_presseportal.csv")
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-1-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-2-", 1:28, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-3-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-4-", 1:30, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-5-", 1:21, "_presseportal.csv"))
|
||||
pm_list <- lapply(pm_csv, read_csv)
|
||||
pm <- do.call(rbind, pm_list)
|
||||
|
||||
tweets <- read_csv("data/copbird_table_tweet.csv")
|
||||
tweets <- tweets[tweets$created_at >= "2021-04-01", 1:4]
|
||||
usersX <- read_csv("data/copbird_table_user_ext.csv")
|
||||
tweetXstate <- read_csv("data/copbird_table_tweet_ext_state.csv")
|
||||
blaulicht <- read_csv("data/2020-12_2021-05_presseportal.csv")
|
||||
|
||||
pm_demo <- read_csv("data/copbird_table_pm_topiced_demonstr.csv")
|
||||
tw_demo <- read_csv("data/copbird_table_tweet_topiced_demonstr.csv")
|
||||
|
||||
pm_drogen <- read_csv("data/copbird_table_pm_topiced_drogen.csv")
|
||||
tw_drogen <- read_csv("data/copbird_table_tweet_topiced_drogen.csv")
|
||||
|
||||
pm_rass <- read_csv("data/copbird_table_pm_topiced_rassis.csv")
|
||||
tw_rass <- read_csv("data/copbird_table_tweet_topiced_rassis.csv")
|
||||
```
|
||||
|
||||
|
||||
# Scrapen der Pressemeldungen (seit Dezember 2020)
|
||||
|
||||
# Zuordnung von Orten der Pressemeldungen und Tweets
|
||||
```{r}
|
||||
head(usersX)
|
||||
head(tweetXstate[, 5:8])
|
||||
blaulicht$tw_user_id <- as.character(blaulicht$tw_user_id)
|
||||
head(blaulicht[, -c(2, 5)])
|
||||
```
|
||||
|
||||
# Anzahl Pressemeldungen vs. Tweets
|
||||
```{r}
|
||||
land_tw <- full_join(tweets, usersX[c(1, 4)], by = "user_id")
|
||||
land_tw$bundesland[land_tw$bundesland == "-"] <- NA_character_
|
||||
land_tw <- land_tw %>% group_by(bundesland) %>% count()
|
||||
land_tw$bundesland <- as.factor(land_tw$bundesland)
|
||||
|
||||
land_pm <- pm %>% group_by(bundesland) %>% count()
|
||||
land_pm$bundesland[land_pm$bundesland == "berlin-brandenburg"] <- "berlin"
|
||||
land_pm$bundesland <- stri_trans_totitle(land_pm$bundesland)
|
||||
land_pm$bundesland <- gsub("ue", "ü", land_pm$bundesland)
|
||||
land_pm$bundesland <- factor(land_pm$bundesland, levels = levels(land_tw$bundesland))
|
||||
|
||||
land_pm_tw <- full_join(land_pm, land_tw, by = "bundesland")
|
||||
names(land_pm_tw)[2:3] <- c("Pressemeldung", "Twitter")
|
||||
land_pm_tw <- land_pm_tw[-which(is.na(land_pm_tw$bundesland)), ]
|
||||
land_pm_tw$Pressemeldung[which(is.na(land_pm_tw$Pressemeldung))] <- 0
|
||||
land_pm_tw <- gather(land_pm_tw, key = "Plattform", value = "count", -bundesland)
|
||||
|
||||
ggplot(land_pm_tw) +
|
||||
geom_col(aes(x = bundesland, y = count, fill = Plattform)) +
|
||||
scale_fill_manual(values = c("#CC6699", "#0099CC")) +
|
||||
facet_wrap(~Plattform) +
|
||||
coord_flip() +
|
||||
guides(fill = FALSE) +
|
||||
labs(title = "Anzahl der Pressemeldungen und Tweets",
|
||||
subtitle = "Im Zeitraum April bis Mai 2021") +
|
||||
theme_minimal()
|
||||
|
||||
ggplot(land_pm_tw) +
|
||||
geom_col(aes(x = bundesland, y = count, fill = Plattform), position = "fill") +
|
||||
scale_fill_manual(values = c("#CC6699", "#0099CC")) +
|
||||
coord_flip() +
|
||||
labs(title = "Anzahl der Pressemeldungen und Tweets",
|
||||
subtitle = "Im Zeitraum April bis Mai 2021") +
|
||||
theme_minimal()
|
||||
```
|
||||
|
||||
# Topic modelling
|
||||
```{r, message=FALSE}
|
||||
# library(quanteda)
|
||||
# library(tidyverse)
|
||||
# library(topicmodels)
|
||||
# library(ldatuning)
|
||||
# library(stm)
|
||||
# library(wordcloud)
|
||||
#
|
||||
# pm <- pm[!is.na(pm$content), ]
|
||||
# tok <- tokens(pm$content_ber_satzzeichen)
|
||||
# mydfm <- dfm(tok, remove_numbers = TRUE, remove_punct = TRUE, remove_symbols = TRUE, remove = stopwords("german"))
|
||||
# mydfm.trim <- dfm_trim(mydfm, min_docfreq = 3, max_docfreq = 65)
|
||||
# # mydfm.trim
|
||||
#
|
||||
# anzahl.themen <- 10
|
||||
# anzahl.woerter <- 10
|
||||
# dfm2topicmodels <- convert(mydfm.trim, to = "topicmodels")
|
||||
# lda.modell <- LDA(dfm2topicmodels, anzahl.themen)
|
||||
# lda.modell
|
||||
# topmod <- as.data.frame(terms(lda.modell, anzahl.woerter))
|
||||
# topmod
|
||||
#
|
||||
# write_csv(topmod, "data/topicmodel.csv")
|
||||
```
|
||||
|
||||
### Auswahl der Keywords
|
||||
`topic_1 = ['demonstr', 'kundgeb']`
|
||||
|
||||
`topic_2 = ['drogen', 'weed', 'graas', 'lsd', 'cannabis', 'ecstasy', 'kokain', 'meth', 'crystal']`
|
||||
|
||||
`topic_3 = ['rassis', 'diskriminier', 'ausländerfeindlich', 'fremdenfeindlich', 'fremdenhass']`
|
||||
|
||||
`topic_4 = ['antisem', 'juden', 'synagoge', 'judenhass', 'judenfeindlich', 'holocaust']`
|
||||
|
||||
|
||||
|
||||
# Sentiment Analyse
|
||||
```{r}
|
||||
readAndflattenSentiWS <- function(filename) {
|
||||
words = readLines(filename, encoding="UTF-8")
|
||||
words <- sub("\\|[A-Z]+\t[0-9.-]+\t?", ",", words)
|
||||
words <- unlist(strsplit(words, ","))
|
||||
words <- tolower(words)
|
||||
return(words)
|
||||
}
|
||||
|
||||
pos.words <- c(scan("SentiWS/positive-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("SentiWS/positive-words.txt"))
|
||||
neg.words <- c(scan("SentiWS/negative-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("SentiWS/negative-words.txt"))
|
||||
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none') {
|
||||
require(plyr)
|
||||
require(stringr)
|
||||
scores = laply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# I don't just want a TRUE/FALSE! How can I do this?
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_demo <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
|
||||
ggplot(score_pm_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
|
||||
ggplot(score_tw_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
|
||||
score_pm_drogen <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_drogen <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
|
||||
ggplot(score_pm_drogen) +
|
||||
geom_bar(aes(x = score), fill = "darkgreen") +
|
||||
labs(title = "Topic: Drogen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
|
||||
ggplot(score_tw_drogen) +
|
||||
geom_bar(aes(x = score), fill = "darkgreen") +
|
||||
labs(title = "Topic: Drogen", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
|
||||
score_pm_rass <- score.sentiment(pm_rass$content, pos.words, neg.words)
|
||||
score_tw_rass <- score.sentiment(tw_rass$tweet_text, pos.words, neg.words)
|
||||
|
||||
ggplot(score_pm_rass) +
|
||||
geom_bar(aes(x = score), fill = "purple") +
|
||||
labs(title = "Topic: Rassismus", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
|
||||
ggplot(score_tw_rass) +
|
||||
geom_bar(aes(x = score), fill = "purple") +
|
||||
labs(title = "Topic: Rassismus", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
```
|
||||
|
||||
```{r}
|
||||
sessionInfo()
|
||||
```
|
|
@ -0,0 +1,216 @@
|
|||
---
|
||||
title: "Team 16"
|
||||
author: "Christian, Simon und Cuca"
|
||||
date: "23 5 2021"
|
||||
output: pdf_document
|
||||
---
|
||||
|
||||
```{r setup, include=FALSE}
|
||||
knitr::opts_chunk$set(echo = TRUE)
|
||||
```
|
||||
|
||||
# Daten einlesen
|
||||
```{r, message = FALSE}
|
||||
library(tidyverse)
|
||||
library(stringi)
|
||||
|
||||
pm_csv <- str_c("data/2020-12-", 1:26, "_presseportal.csv")
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-1-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-2-", 1:28, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-3-", 1:31, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-4-", 1:30, "_presseportal.csv"))
|
||||
pm_csv <- c(pm_csv, str_c("data/2021-5-", 1:21, "_presseportal.csv"))
|
||||
pm_list <- lapply(pm_csv, read_csv)
|
||||
pm <- do.call(rbind, pm_list)
|
||||
|
||||
tweets <- read_csv("data/copbird_table_tweet.csv")
|
||||
tweets <- tweets[tweets$created_at >= "2021-04-01", 1:4]
|
||||
usersX <- read_csv("data/copbird_table_user_ext.csv")
|
||||
tweetXstate <- read_csv("data/copbird_table_tweet_ext_state.csv")
|
||||
blaulicht <- read_csv("data/2020-12_2021-05_presseportal.csv")
|
||||
|
||||
pm_demo <- read_csv("data/copbird_table_pm_topiced_demonstr.csv")
|
||||
tw_demo <- read_csv("data/copbird_table_tweet_topiced_demonstr.csv")
|
||||
|
||||
pm_drogen <- read_csv("data/copbird_table_pm_topiced_drogen.csv")
|
||||
tw_drogen <- read_csv("data/copbird_table_tweet_topiced_drogen.csv")
|
||||
|
||||
pm_rass <- read_csv("data/copbird_table_pm_topiced_rassis.csv")
|
||||
tw_rass <- read_csv("data/copbird_table_tweet_topiced_rassis.csv")
|
||||
```
|
||||
|
||||
|
||||
# Scrapen der Pressemeldungen (seit Dezember 2020)
|
||||
|
||||
# Zuordnung von Orten der Pressemeldungen und Tweets
|
||||
```{r}
|
||||
head(usersX)
|
||||
head(tweetXstate[, 5:8])
|
||||
blaulicht$tw_user_id <- as.character(blaulicht$tw_user_id)
|
||||
head(blaulicht[, -c(2, 5)])
|
||||
```
|
||||
|
||||
# Anzahl Pressemeldungen vs. Tweets
|
||||
```{r}
|
||||
land_tw <- full_join(tweets, usersX[c(1, 4)], by = "user_id")
|
||||
land_tw$bundesland[land_tw$bundesland == "-"] <- NA_character_
|
||||
land_tw <- land_tw %>% group_by(bundesland) %>% count()
|
||||
land_tw$bundesland <- as.factor(land_tw$bundesland)
|
||||
|
||||
land_pm <- pm %>% group_by(bundesland) %>% count()
|
||||
land_pm$bundesland[land_pm$bundesland == "berlin-brandenburg"] <- "berlin"
|
||||
land_pm$bundesland <- stri_trans_totitle(land_pm$bundesland)
|
||||
land_pm$bundesland <- gsub("ue", "ü", land_pm$bundesland)
|
||||
land_pm$bundesland <- factor(land_pm$bundesland, levels = levels(land_tw$bundesland))
|
||||
|
||||
land_pm_tw <- full_join(land_pm, land_tw, by = "bundesland")
|
||||
names(land_pm_tw)[2:3] <- c("Pressemeldung", "Twitter")
|
||||
land_pm_tw <- land_pm_tw[-which(is.na(land_pm_tw$bundesland)), ]
|
||||
land_pm_tw$Pressemeldung[which(is.na(land_pm_tw$Pressemeldung))] <- 0
|
||||
land_pm_tw <- gather(land_pm_tw, key = "Plattform", value = "count", -bundesland)
|
||||
|
||||
ggplot(land_pm_tw) +
|
||||
geom_col(aes(x = bundesland, y = count, fill = Plattform)) +
|
||||
scale_fill_manual(values = c("#CC6699", "#0099CC")) +
|
||||
facet_wrap(~Plattform) +
|
||||
coord_flip() +
|
||||
guides(fill = FALSE) +
|
||||
labs(title = "Anzahl der Pressemeldungen und Tweets",
|
||||
subtitle = "Im Zeitraum April bis Mai 2021") +
|
||||
theme_minimal()
|
||||
|
||||
ggplot(land_pm_tw) +
|
||||
geom_col(aes(x = bundesland, y = count, fill = Plattform), position = "fill") +
|
||||
scale_fill_manual(values = c("#CC6699", "#0099CC")) +
|
||||
coord_flip() +
|
||||
labs(title = "Anzahl der Pressemeldungen und Tweets",
|
||||
subtitle = "Im Zeitraum April bis Mai 2021") +
|
||||
theme_minimal()
|
||||
```
|
||||
|
||||
# Topic modelling
|
||||
```{r, message=FALSE}
|
||||
# library(quanteda)
|
||||
# library(tidyverse)
|
||||
# library(topicmodels)
|
||||
# library(ldatuning)
|
||||
# library(stm)
|
||||
# library(wordcloud)
|
||||
#
|
||||
# pm <- pm[!is.na(pm$content), ]
|
||||
# tok <- tokens(pm$content_ber_satzzeichen)
|
||||
# mydfm <- dfm(tok, remove_numbers = TRUE, remove_punct = TRUE, remove_symbols = TRUE, remove = stopwords("german"))
|
||||
# mydfm.trim <- dfm_trim(mydfm, min_docfreq = 3, max_docfreq = 65)
|
||||
# # mydfm.trim
|
||||
#
|
||||
# anzahl.themen <- 10
|
||||
# anzahl.woerter <- 10
|
||||
# dfm2topicmodels <- convert(mydfm.trim, to = "topicmodels")
|
||||
# lda.modell <- LDA(dfm2topicmodels, anzahl.themen)
|
||||
# lda.modell
|
||||
# topmod <- as.data.frame(terms(lda.modell, anzahl.woerter))
|
||||
# topmod
|
||||
#
|
||||
# write_csv(topmod, "data/topicmodel.csv")
|
||||
```
|
||||
|
||||
### Auswahl der Keywords
|
||||
`topic_1 = ['demonstr', 'kundgeb']`
|
||||
|
||||
`topic_2 = ['drogen', 'weed', 'graas', 'lsd', 'cannabis', 'ecstasy', 'kokain', 'meth', 'crystal']`
|
||||
|
||||
`topic_3 = ['rassis', 'diskriminier', 'ausländerfeindlich', 'fremdenfeindlich', 'fremdenhass']`
|
||||
|
||||
`topic_4 = ['antisem', 'juden', 'synagoge', 'judenhass', 'judenfeindlich', 'holocaust']`
|
||||
|
||||
|
||||
|
||||
# Sentiment Analyse
|
||||
```{r}
|
||||
readAndflattenSentiWS <- function(filename) {
|
||||
words = readLines(filename, encoding="UTF-8")
|
||||
words <- sub("\\|[A-Z]+\t[0-9.-]+\t?", ",", words)
|
||||
words <- unlist(strsplit(words, ","))
|
||||
words <- tolower(words)
|
||||
return(words)
|
||||
}
|
||||
|
||||
pos.words <- c(scan("SentiWS/positive-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("SentiWS/positive-words.txt"))
|
||||
neg.words <- c(scan("SentiWS/negative-words.txt",what='character', comment.char=';', quiet=T),
|
||||
readAndflattenSentiWS("SentiWS/negative-words.txt"))
|
||||
|
||||
score.sentiment = function(sentences, pos.words, neg.words, .progress='none') {
|
||||
require(plyr)
|
||||
require(stringr)
|
||||
scores = laply(sentences, function(sentence, pos.words, neg.words)
|
||||
{
|
||||
# clean up sentences with R's regex-driven global substitute, gsub():
|
||||
sentence = gsub('[[:punct:]]', '', sentence)
|
||||
sentence = gsub('[[:cntrl:]]', '', sentence)
|
||||
sentence = gsub('\\d+', '', sentence)
|
||||
# and convert to lower case:
|
||||
sentence = tolower(sentence)
|
||||
# split into words. str_split is in the stringr package
|
||||
word.list = str_split(sentence, '\\s+')
|
||||
# sometimes a list() is one level of hierarchy too much
|
||||
words = unlist(word.list)
|
||||
# compare our words to the dictionaries of positive & negative terms
|
||||
pos.matches = match(words, pos.words)
|
||||
neg.matches = match(words, neg.words)
|
||||
# match() returns the position of the matched term or NA
|
||||
# I don't just want a TRUE/FALSE! How can I do this?
|
||||
pos.matches = !is.na(pos.matches)
|
||||
neg.matches = !is.na(neg.matches)
|
||||
# and conveniently enough, TRUE/FALSE will be treated as 1/0 by sum():
|
||||
score = sum(pos.matches) - sum(neg.matches)
|
||||
return(score)
|
||||
},
|
||||
pos.words, neg.words, .progress=.progress )
|
||||
scores.df = data.frame(score=scores, text=sentences)
|
||||
return(scores.df)
|
||||
}
|
||||
|
||||
score_pm_demo <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_demo <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
|
||||
ggplot(score_pm_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
|
||||
ggplot(score_tw_demo) +
|
||||
geom_bar(aes(x = score), fill = "blue") +
|
||||
labs(title = "Topic: Demonstrationen", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
|
||||
score_pm_drogen <- score.sentiment(pm_demo$content, pos.words, neg.words)
|
||||
score_tw_drogen <- score.sentiment(tw_demo$tweet_text, pos.words, neg.words)
|
||||
|
||||
ggplot(score_pm_drogen) +
|
||||
geom_bar(aes(x = score), fill = "darkgreen") +
|
||||
labs(title = "Topic: Drogen", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
|
||||
ggplot(score_tw_drogen) +
|
||||
geom_bar(aes(x = score), fill = "darkgreen") +
|
||||
labs(title = "Topic: Drogen", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
|
||||
score_pm_rass <- score.sentiment(pm_rass$content, pos.words, neg.words)
|
||||
score_tw_rass <- score.sentiment(tw_rass$tweet_text, pos.words, neg.words)
|
||||
|
||||
ggplot(score_pm_rass) +
|
||||
geom_bar(aes(x = score), fill = "purple") +
|
||||
labs(title = "Topic: Rassismus", subtitle = "Sentiment-Analyse der Pressemeldungen") +
|
||||
theme_minimal()
|
||||
|
||||
ggplot(score_tw_rass) +
|
||||
geom_bar(aes(x = score), fill = "purple") +
|
||||
labs(title = "Topic: Rassismus", subtitle = "Sentiment-Analyse der Tweets") +
|
||||
theme_minimal()
|
||||
```
|
||||
|
||||
```{r}
|
||||
sessionInfo()
|
||||
```
|
|
@ -0,0 +1,13 @@
|
|||
Version: 1.0
|
||||
|
||||
RestoreWorkspace: Default
|
||||
SaveWorkspace: Default
|
||||
AlwaysSaveHistory: Default
|
||||
|
||||
EnableCodeIndexing: Yes
|
||||
UseSpacesForTab: Yes
|
||||
NumSpacesForTab: 2
|
||||
Encoding: UTF-8
|
||||
|
||||
RnwWeave: Sweave
|
||||
LaTeX: pdfLaTeX
|
131
ergebnisse_hackathon_repo/team-16/requirements.txt
Normal file
131
ergebnisse_hackathon_repo/team-16/requirements.txt
Normal file
|
@ -0,0 +1,131 @@
|
|||
appdirs==1.4.4
|
||||
argon2-cffi==20.1.0
|
||||
async-generator==1.10
|
||||
attrs==21.2.0
|
||||
backcall==0.2.0
|
||||
beautifulsoup4==4.9.3
|
||||
bleach==3.3.0
|
||||
blis==0.7.4
|
||||
branca==0.4.2
|
||||
bs4==0.0.1
|
||||
catalogue==2.0.4
|
||||
certifi==2020.12.5
|
||||
cffi==1.14.5
|
||||
chardet==4.0.0
|
||||
click==7.1.2
|
||||
cssselect==1.1.0
|
||||
cycler==0.10.0
|
||||
cymem==2.0.5
|
||||
decorator==4.4.2
|
||||
defusedxml==0.7.1
|
||||
dill==0.3.3
|
||||
docker==4.4.4
|
||||
emoji==0.6.0
|
||||
entrypoints==0.3
|
||||
fake-useragent==0.1.11
|
||||
filelock==3.0.12
|
||||
folium==0.12.1
|
||||
funcy==1.16
|
||||
future==0.18.2
|
||||
germansentiment==1.0.5
|
||||
huggingface-hub==0.0.8
|
||||
idna==2.10
|
||||
ipykernel==5.5.5
|
||||
ipython==7.23.1
|
||||
ipython-genutils==0.2.0
|
||||
ipywidgets==7.6.3
|
||||
jedi==0.18.0
|
||||
Jinja2
|
||||
joblib==1.0.1
|
||||
jsonpickle==2.0.0
|
||||
jsonschema==3.2.0
|
||||
jupyter==1.0.0
|
||||
jupyter-client==6.1.12
|
||||
jupyter-console==6.4.0
|
||||
jupyter-core==4.7.1
|
||||
jupyterlab-pygments==0.1.2
|
||||
jupyterlab-widgets==1.0.0
|
||||
kiwisolver==1.3.1
|
||||
loguru==0.5.3
|
||||
lxml==4.6.3
|
||||
MarkupSafe==2.0.1
|
||||
matplotlib==3.4.2
|
||||
matplotlib-inline==0.1.2
|
||||
mistune==0.8.4
|
||||
multiprocess==0.70.11.1
|
||||
murmurhash==1.0.5
|
||||
nbclient==0.5.3
|
||||
nbconvert==6.0.7
|
||||
nbformat==5.1.3
|
||||
nest-asyncio==1.5.1
|
||||
networkx==2.5.1
|
||||
nitter-scraper==0.5.0
|
||||
notebook==6.4.0
|
||||
numexpr==2.7.3
|
||||
numpy==1.20.3
|
||||
packaging==20.9
|
||||
pandas==1.2.4
|
||||
pandocfilters==1.4.3
|
||||
parse==1.19.0
|
||||
parso==0.8.2
|
||||
pathy==0.5.2
|
||||
pendulum==2.1.2
|
||||
pexpect==4.8.0
|
||||
pickleshare==0.7.5
|
||||
Pillow==8.2.0
|
||||
preshed==3.0.5
|
||||
prometheus-client==0.10.1
|
||||
prompt-toolkit==3.0.18
|
||||
ptyprocess==0.7.0
|
||||
pycparser==2.20
|
||||
pydantic==1.7.4
|
||||
pyee==8.1.0
|
||||
Pygments==2.9.0
|
||||
pyLDAvis==3.3.1
|
||||
pyparsing==2.4.7
|
||||
pyppeteer==0.2.5
|
||||
pyquery==1.4.3
|
||||
pyrsistent==0.17.3
|
||||
python-dateutil==2.8.1
|
||||
pytz==2021.1
|
||||
pytzdata==2020.1
|
||||
pyvis==0.1.9
|
||||
pyzmq==22.0.3
|
||||
qtconsole==5.1.0
|
||||
QtPy==1.9.0
|
||||
regex==2021.4.4
|
||||
requests==2.25.1
|
||||
requests-html==0.10.0
|
||||
sacremoses==0.0.45
|
||||
scikit-learn==0.24.2
|
||||
scipy==1.6.3
|
||||
seaborn==0.11.1
|
||||
Send2Trash==1.5.0
|
||||
six==1.16.0
|
||||
sklearn==0.0
|
||||
smart-open
|
||||
soupsieve==2.2.1
|
||||
spacy==3.0.6
|
||||
spacy-legacy==3.0.5
|
||||
spacymoji==3.0.1
|
||||
srsly==2.4.1
|
||||
terminado==0.10.0
|
||||
testpath==0.5.0
|
||||
thinc==8.0.3
|
||||
threadpoolctl==2.1.0
|
||||
tokenizers==0.10.2
|
||||
torch==1.8.1
|
||||
tornado==6.1
|
||||
tqdm==4.60.0
|
||||
traitlets==5.0.5
|
||||
transformers==4.6.0
|
||||
typer==0.3.2
|
||||
typing-extensions==3.10.0.0
|
||||
urllib3==1.26.4
|
||||
w3lib==1.22.0
|
||||
wasabi==0.8.2
|
||||
wcwidth==0.2.5
|
||||
webencodings==0.5.1
|
||||
websocket-client==1.0.0
|
||||
websockets==8.1
|
||||
widgetsnbextension==3.5.1
|
File diff suppressed because one or more lines are too long
2846
ergebnisse_hackathon_repo/team-21/copbird.ipynb
Normal file
2846
ergebnisse_hackathon_repo/team-21/copbird.ipynb
Normal file
File diff suppressed because one or more lines are too long
9
ergebnisse_hackathon_repo/team-22/README.md
Normal file
9
ergebnisse_hackathon_repo/team-22/README.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Resultate von Team 22
|
||||
|
||||
## Heatmap für Hashtags
|
||||
Das geotag-Notebook arbeitet auf einer von hashtag-geografie1 generierten csv-Datei. Also erst das nochmal durchlaufen lassen.
|
||||
|
||||
Für Eingaben gibt's die erste Zelle.
|
||||
|
||||
## Cop Connections
|
||||
Visualisierung der Verbindungsstärke zwischen Polizeiaccounts anhand der Anzahl von Mentions
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1444
ergebnisse_hackathon_repo/team-22/cop_connections.ipynb
Normal file
1444
ergebnisse_hackathon_repo/team-22/cop_connections.ipynb
Normal file
File diff suppressed because it is too large
Load diff
255
ergebnisse_hackathon_repo/team-22/cop_link.ipynb
Normal file
255
ergebnisse_hackathon_repo/team-22/cop_link.ipynb
Normal file
|
@ -0,0 +1,255 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 40,
|
||||
"id": "5eecbeeb",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"from tqdm import tqdm # Fortschrittsanzeige für pandas\n",
|
||||
"tqdm.pandas()\n",
|
||||
"tweet_csv = '../data/copbird_table_tweet.csv'\n",
|
||||
"entity_csv = '../data/copbird_table_entity.csv'\n",
|
||||
"user_csv = '../data/copbird_table_user.csv'\n",
|
||||
"\n",
|
||||
"limit = None\n",
|
||||
"tweets = pd.read_csv(tweet_csv, nrows=limit)\n",
|
||||
"entities = pd.read_csv(entity_csv, nrows=limit)\n",
|
||||
"users = pd.read_csv(user_csv, nrows=limit)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 41,
|
||||
"id": "1ad0f35a",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"360008"
|
||||
]
|
||||
},
|
||||
"execution_count": 41,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tweets.size"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 42,
|
||||
"id": "c0a49030",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/usr/local/lib/python3.8/dist-packages/pandas/core/strings/accessor.py:101: UserWarning: This pattern has match groups. To actually get the groups, use str.extract.\n",
|
||||
" return func(self, *args, **kwargs)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>id</th>\n",
|
||||
" <th>tweet_text</th>\n",
|
||||
" <th>created_at</th>\n",
|
||||
" <th>user_id</th>\n",
|
||||
" <th>like_count</th>\n",
|
||||
" <th>retweet_count</th>\n",
|
||||
" <th>reply_count</th>\n",
|
||||
" <th>quote_count</th>\n",
|
||||
" <th>contains</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>1321023114071969792</td>\n",
|
||||
" <td>#Zeugengesucht\\nDie Hintergründe zu dem Tötung...</td>\n",
|
||||
" <td>2020-10-27 09:37:08</td>\n",
|
||||
" <td>2397974054</td>\n",
|
||||
" <td>20.0</td>\n",
|
||||
" <td>24.0</td>\n",
|
||||
" <td>4.0</td>\n",
|
||||
" <td>1.0</td>\n",
|
||||
" <td>True</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>1321025127388188673</td>\n",
|
||||
" <td>RT @bka: EUROPE´S MOST WANTED – Sexualstraftät...</td>\n",
|
||||
" <td>2020-10-27 09:45:08</td>\n",
|
||||
" <td>2397974054</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>True</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" id tweet_text \\\n",
|
||||
"1 1321023114071969792 #Zeugengesucht\\nDie Hintergründe zu dem Tötung... \n",
|
||||
"2 1321025127388188673 RT @bka: EUROPE´S MOST WANTED – Sexualstraftät... \n",
|
||||
"\n",
|
||||
" created_at user_id like_count retweet_count reply_count \\\n",
|
||||
"1 2020-10-27 09:37:08 2397974054 20.0 24.0 4.0 \n",
|
||||
"2 2020-10-27 09:45:08 2397974054 NaN NaN NaN \n",
|
||||
"\n",
|
||||
" quote_count contains \n",
|
||||
"1 1.0 True \n",
|
||||
"2 NaN True "
|
||||
]
|
||||
},
|
||||
"execution_count": 42,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tweets[\"contains\"] = tweets[\"tweet_text\"].str.contains(r'(https://t.co/)')\n",
|
||||
"tweets_subset = tweets[tweets[\"contains\"]]\n",
|
||||
"tweets_link = tweets_subset\n",
|
||||
"tweets_link.head(2)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 43,
|
||||
"id": "a5e2d37e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<ipython-input-43-393ebe765dff>:1: SettingWithCopyWarning: \n",
|
||||
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
|
||||
"Try using .loc[row_indexer,col_indexer] = value instead\n",
|
||||
"\n",
|
||||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||||
" tweets_subset[\"link\"] = tweets_subset[\"tweet_text\"].str.extract(r'(https://t.co/[\\w]*)[\\w$|\\s|\\n][^(.*).{1} ]')\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tweets_subset[\"link\"] = tweets_subset[\"tweet_text\"].str.extract(r'(https://t.co/[\\w]*)[\\w$|\\s|\\n][^(.*).{1} ]')\n",
|
||||
"tryout = tweets_subset\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 44,
|
||||
"id": "957a6b06",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#tryout = tryout.head(9)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "b768104e",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import io\n",
|
||||
"import requests\n",
|
||||
"response_arr = []\n",
|
||||
"#url = tryout[\"link\"].to_string(index=False)\n",
|
||||
"df = pd.DataFrame(data=response_arr, columns=[\"full_link\"])\n",
|
||||
"\n",
|
||||
"for i in tryout.index:\n",
|
||||
" try:\n",
|
||||
" response = requests.get(tryout[\"link\"][i])\n",
|
||||
" response_arr.append(response.url)\n",
|
||||
" \n",
|
||||
" except:\n",
|
||||
" response_arr.append(\"error\")\n",
|
||||
" finally:\n",
|
||||
" \n",
|
||||
" df = pd.DataFrame([i, response.url], columns=[\"full_link\"])\n",
|
||||
" df.to_csv('links.csv', mode='a', header=False)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"id": "1c5f3260",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"ename": "NameError",
|
||||
"evalue": "name 'response_arr' is not defined",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[0;32m<ipython-input-9-30722b9a87cd>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mresponse_arr_orig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mresponse_arr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mtryout\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"link_long\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"nan\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mindex\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mresponse_arr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mtryout\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"link_long\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||||
"\u001b[0;31mNameError\u001b[0m: name 'response_arr' is not defined"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"response_arr_orig = response_arr\n",
|
||||
"tryout[\"link_long\"]=float(\"nan\")\n",
|
||||
"index = 0\n",
|
||||
"for i in response_arr:\n",
|
||||
" tryout[\"link_long\"][index]=i\n",
|
||||
" index = index+1\n",
|
||||
"print(index)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
317
ergebnisse_hackathon_repo/team-22/geolikes.ipynb
Normal file
317
ergebnisse_hackathon_repo/team-22/geolikes.ipynb
Normal file
File diff suppressed because one or more lines are too long
401
ergebnisse_hackathon_repo/team-22/geotags.ipynb
Normal file
401
ergebnisse_hackathon_repo/team-22/geotags.ipynb
Normal file
File diff suppressed because one or more lines are too long
523
ergebnisse_hackathon_repo/team-22/hashtag-geografie1.ipynb
Normal file
523
ergebnisse_hackathon_repo/team-22/hashtag-geografie1.ipynb
Normal file
|
@ -0,0 +1,523 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "847f9651",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Pakete laden"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "0a01b63b",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"from tqdm import tqdm # Fortschrittsanzeige für pandas\n",
|
||||
"tqdm.pandas()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "b515c823",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Daten laden"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "0eec2734",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"tweet_csv = '../data/copbird_table_tweet.csv'\n",
|
||||
"entity_csv = '../data/copbird_table_entity.csv'\n",
|
||||
"user_csv = '../data/copbird_table_user.csv'\n",
|
||||
"cop_geolocations_csv = '../geolocations/polizei_accounts_geo.csv'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "fbe080bc",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"limit = None\n",
|
||||
"tweets = pd.read_csv(tweet_csv, nrows=limit)\n",
|
||||
"entities = pd.read_csv(entity_csv, nrows=limit)\n",
|
||||
"users = pd.read_csv(user_csv, nrows=limit)\n",
|
||||
"geolocs = pd.read_csv(cop_geolocations_csv, sep=r'\\t', engine='python', nrows=limit)\n",
|
||||
"# skip first two rows since they do not contain GPS data\n",
|
||||
"geolocs = geolocs.iloc[2:, :]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "b4e5b2b7",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>tweet_id</th>\n",
|
||||
" <th>tag</th>\n",
|
||||
" <th>entity_type</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>18</th>\n",
|
||||
" <td>1321050580337512448</td>\n",
|
||||
" <td>Alsdorf</td>\n",
|
||||
" <td>hashtag</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>20</th>\n",
|
||||
" <td>1321050612142870534</td>\n",
|
||||
" <td>Frankfurt</td>\n",
|
||||
" <td>hashtag</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>21</th>\n",
|
||||
" <td>1321050612142870534</td>\n",
|
||||
" <td>A3</td>\n",
|
||||
" <td>hashtag</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>22</th>\n",
|
||||
" <td>1321050732917829639</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>hashtag</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>23</th>\n",
|
||||
" <td>1321050732917829639</td>\n",
|
||||
" <td>Aachen</td>\n",
|
||||
" <td>hashtag</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" tweet_id tag entity_type\n",
|
||||
"18 1321050580337512448 Alsdorf hashtag\n",
|
||||
"20 1321050612142870534 Frankfurt hashtag\n",
|
||||
"21 1321050612142870534 A3 hashtag\n",
|
||||
"22 1321050732917829639 Polizei hashtag\n",
|
||||
"23 1321050732917829639 Aachen hashtag"
|
||||
]
|
||||
},
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"hashtags = entities[entities['entity_type'] == 'hashtag']\n",
|
||||
"hashtags.head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8c426c02",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Häufigkeit von Tweets mit GPS-Stempel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"id": "b70fd2b2",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>tweet_id</th>\n",
|
||||
" <th>user_id</th>\n",
|
||||
" <th>tag</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>1321050580337512448</td>\n",
|
||||
" <td>2389142300</td>\n",
|
||||
" <td>Alsdorf</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>1321050612142870534</td>\n",
|
||||
" <td>2272909014</td>\n",
|
||||
" <td>Frankfurt</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>1321050612142870534</td>\n",
|
||||
" <td>2272909014</td>\n",
|
||||
" <td>A3</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>1321050732917829639</td>\n",
|
||||
" <td>2389142300</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>1321050732917829639</td>\n",
|
||||
" <td>2389142300</td>\n",
|
||||
" <td>Aachen</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" tweet_id user_id tag\n",
|
||||
"0 1321050580337512448 2389142300 Alsdorf\n",
|
||||
"1 1321050612142870534 2272909014 Frankfurt\n",
|
||||
"2 1321050612142870534 2272909014 A3\n",
|
||||
"3 1321050732917829639 2389142300 Polizei\n",
|
||||
"4 1321050732917829639 2389142300 Aachen"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Füge den Accounts, zu denen es ein GPS-Datum gibt, dieses hinzu:\n",
|
||||
"users['handle'] = users['handle'].str.lower().str.strip()\n",
|
||||
"geolocs['Polizei Account'] = geolocs['Polizei Account'].str.lower().str.strip()\n",
|
||||
"users_geolocs = users.merge(geolocs, left_on='handle', right_on='Polizei Account', how='inner')\n",
|
||||
"# Die Spalte mit dem Handle brauchen wir nur einmal:\n",
|
||||
"users_geolocs.drop(columns='Polizei Account', inplace=True)\n",
|
||||
"# Füge dazu, falls vorhanden, Tweets hinzu:\n",
|
||||
"#us_ge_tw = users_geolocs.merge(tweets, left_on='id', right_on='user_id', how='inner')\n",
|
||||
"# Wieder redundante Spalte wegschmeißen:\n",
|
||||
"#us_ge_tw.drop(columns='id_x', inplace=True)\n",
|
||||
"#us_ge_tw.rename(columns={'id_y':'id'}, inplace=True)\n",
|
||||
"#us_ge_tw.head()\n",
|
||||
"# Füge Hashtags dazu\n",
|
||||
"tw_ht = tweets.merge(hashtags, left_on='id', right_on='tweet_id', how='inner')[['tweet_id','user_id','tag']]\n",
|
||||
"tw_ht.head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "2c36168a",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Hashtags zusammenfassen:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "4d8c367d",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>user_id</th>\n",
|
||||
" <th>tag</th>\n",
|
||||
" <th>count</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>549</th>\n",
|
||||
" <td>259607457</td>\n",
|
||||
" <td>Köln</td>\n",
|
||||
" <td>632</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>551</th>\n",
|
||||
" <td>259607457</td>\n",
|
||||
" <td>Leverkusen</td>\n",
|
||||
" <td>630</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>565</th>\n",
|
||||
" <td>259607457</td>\n",
|
||||
" <td>PolizeiNRW</td>\n",
|
||||
" <td>630</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>19658</th>\n",
|
||||
" <td>808666671468658688</td>\n",
|
||||
" <td>Bremen</td>\n",
|
||||
" <td>445</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>19737</th>\n",
|
||||
" <td>808666671468658688</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>427</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" user_id tag count\n",
|
||||
"549 259607457 Köln 632\n",
|
||||
"551 259607457 Leverkusen 630\n",
|
||||
"565 259607457 PolizeiNRW 630\n",
|
||||
"19658 808666671468658688 Bremen 445\n",
|
||||
"19737 808666671468658688 Polizei 427"
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"ht_count = tw_ht.groupby(['user_id','tag']).size().reset_index(name='count').sort_values(by='count', ascending=False)\n",
|
||||
"ht_count.head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "2bfaaeec",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>user_id</th>\n",
|
||||
" <th>tag</th>\n",
|
||||
" <th>count</th>\n",
|
||||
" <th>handle</th>\n",
|
||||
" <th>Name</th>\n",
|
||||
" <th>Typ</th>\n",
|
||||
" <th>Bundesland</th>\n",
|
||||
" <th>Stadt</th>\n",
|
||||
" <th>LAT</th>\n",
|
||||
" <th>LONG</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>259607457</td>\n",
|
||||
" <td>Köln</td>\n",
|
||||
" <td>632</td>\n",
|
||||
" <td>polizei_nrw_k</td>\n",
|
||||
" <td>Polizei NRW K</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>Nordrhein-Westfalen</td>\n",
|
||||
" <td>Köln</td>\n",
|
||||
" <td>50.938361</td>\n",
|
||||
" <td>6.959974</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>259607457</td>\n",
|
||||
" <td>Leverkusen</td>\n",
|
||||
" <td>630</td>\n",
|
||||
" <td>polizei_nrw_k</td>\n",
|
||||
" <td>Polizei NRW K</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>Nordrhein-Westfalen</td>\n",
|
||||
" <td>Köln</td>\n",
|
||||
" <td>50.938361</td>\n",
|
||||
" <td>6.959974</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>259607457</td>\n",
|
||||
" <td>PolizeiNRW</td>\n",
|
||||
" <td>630</td>\n",
|
||||
" <td>polizei_nrw_k</td>\n",
|
||||
" <td>Polizei NRW K</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>Nordrhein-Westfalen</td>\n",
|
||||
" <td>Köln</td>\n",
|
||||
" <td>50.938361</td>\n",
|
||||
" <td>6.959974</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>259607457</td>\n",
|
||||
" <td>Zeugensuche</td>\n",
|
||||
" <td>32</td>\n",
|
||||
" <td>polizei_nrw_k</td>\n",
|
||||
" <td>Polizei NRW K</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>Nordrhein-Westfalen</td>\n",
|
||||
" <td>Köln</td>\n",
|
||||
" <td>50.938361</td>\n",
|
||||
" <td>6.959974</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>259607457</td>\n",
|
||||
" <td>Einbruchradar</td>\n",
|
||||
" <td>21</td>\n",
|
||||
" <td>polizei_nrw_k</td>\n",
|
||||
" <td>Polizei NRW K</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>Nordrhein-Westfalen</td>\n",
|
||||
" <td>Köln</td>\n",
|
||||
" <td>50.938361</td>\n",
|
||||
" <td>6.959974</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" user_id tag count handle Name Typ \\\n",
|
||||
"0 259607457 Köln 632 polizei_nrw_k Polizei NRW K Polizei \n",
|
||||
"1 259607457 Leverkusen 630 polizei_nrw_k Polizei NRW K Polizei \n",
|
||||
"2 259607457 PolizeiNRW 630 polizei_nrw_k Polizei NRW K Polizei \n",
|
||||
"3 259607457 Zeugensuche 32 polizei_nrw_k Polizei NRW K Polizei \n",
|
||||
"4 259607457 Einbruchradar 21 polizei_nrw_k Polizei NRW K Polizei \n",
|
||||
"\n",
|
||||
" Bundesland Stadt LAT LONG \n",
|
||||
"0 Nordrhein-Westfalen Köln 50.938361 6.959974 \n",
|
||||
"1 Nordrhein-Westfalen Köln 50.938361 6.959974 \n",
|
||||
"2 Nordrhein-Westfalen Köln 50.938361 6.959974 \n",
|
||||
"3 Nordrhein-Westfalen Köln 50.938361 6.959974 \n",
|
||||
"4 Nordrhein-Westfalen Köln 50.938361 6.959974 "
|
||||
]
|
||||
},
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"ht_geo = ht_count.merge(users_geolocs, left_on=\"user_id\", right_on=\"id\", how=\"inner\")\n",
|
||||
"ht_geo.drop(columns=['name','id'], inplace=True)\n",
|
||||
"ht_geo.head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "3db0daf3",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"ht_geo.to_csv(\"hashtags_users_geolocs.csv\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "b4bd5938",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.2"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_7b4714703d1c48729c407c322cff45da {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_7b4714703d1c48729c407c322cff45da" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_7b4714703d1c48729c407c322cff45da = L.map(
|
||||
"map_7b4714703d1c48729c407c322cff45da",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_b7da55fd4dda4626a109e02b81b2b636 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_7b4714703d1c48729c407c322cff45da);
|
||||
|
||||
|
||||
var heat_map_0e12f61ee70247edaf26579e088f3207 = L.heatLayer(
|
||||
[[49.79245, 9.932966, 1.0], [49.234362, 6.996379, 131.0], [53.248706, 10.407855, 47.0], [51.3154546, 9.4924096, 1.0], [52.520007, 13.404954, 2.0], [52.6050782, 11.8594279, 8.0], [51.4825041, 11.9705452, 2.0], [49.1996961, 7.6087847, 1.0], [52.9859666, 9.8433909, 2.0], [53.3172237, 9.9084936, 2.0], [50.0820384, 8.2416556, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_7b4714703d1c48729c407c322cff45da);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_2634cfd09b5949a088718c17091601d2 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_2634cfd09b5949a088718c17091601d2" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_2634cfd09b5949a088718c17091601d2 = L.map(
|
||||
"map_2634cfd09b5949a088718c17091601d2",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_38381be3eeb843f9a6f804aed871ea21 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_2634cfd09b5949a088718c17091601d2);
|
||||
|
||||
|
||||
var heat_map_dc574607710741b5ac74d11a5b6ae51e = L.heatLayer(
|
||||
[[51.0493286, 13.7381437, 2841.0], [50.938361, 6.959974, 2254.0], [48.7784485, 9.1800132, 1146.0], [51.5142273, 7.4652789, 681.0], [54.0924445, 12.1286127, 272.0], [49.4432174, 7.7689951, 263.0], [50.3533278, 7.5943951, 389.0], [50.0012314, 8.2762513, 308.0], [51.4696137, 6.8514435, 210.0], [49.4704113, 8.4381568, 821.0], [49.7596208, 6.6441878, 284.0], [50.110922, 8.682127, 1098.0], [51.9625101, 7.6251879, 1239.0], [51.4582235, 7.0158171, 501.0], [50.776351, 6.083862, 520.0], [52.0191005, 8.531007, 519.0], [51.4818111, 7.2196635, 1100.0], [50.735851, 7.10066, 47.0], [51.8443183, 6.8582247, 137.0], [51.9458943, 7.1691108, 55.0], [51.434999, 6.759562, 1096.0], [50.8031684, 6.4820806, 215.0], [51.2254018, 6.7763137, 58.0], [51.264018, 7.1780374, 344.0], [51.3481444, 7.3351844, 137.0], [51.9532449, 7.9912335, 505.0], [51.6576909, 6.617087, 501.0], [51.5348835, 7.689014, 421.0], [50.6612623, 6.7871219, 719.0], [51.2562118, 6.3905476, 535.0], [52.1294289, 7.3903454, 1263.0], [51.5110321, 7.0960124, 772.0], [51.9063997, 8.3782078, 457.0], [51.5725501, 8.1061259, 6.0], [50.97444, 8.23972, 699.0], [50.7527986, 7.3813038, 310.0], [51.1758799, 6.6600606, 375.0], [51.0139774, 7.1715584, 30.0], [51.6143815, 7.1978546, 782.0], [50.90334, 6.763334, 98.0], [51.7189596, 8.7648698, 269.0], [51.0277658, 7.5630545, 229.0], [51.0297603, 7.8424193, 600.0], [52.2881045, 8.9168852, 481.0], [51.2527778, 6.9777778, 1300.0], [51.2734857, 7.7274266, 605.0], [51.1946983, 6.4353641, 88.0], [51.936284, 8.8791526, 116.0], [51.7747369, 9.3816877, 67.0], [51.3331205, 6.5623343, 311.0], [51.3208247, 8.2684925, 117.0], [51.7854839, 6.1313674, 67.0], [51.0654268, 6.0984461, 229.0], [51.6804093, 7.815197, 76.0], [52.1152245, 8.6711118, 62.0], [51.3582945, 7.473296, 150.0], [52.520007, 13.404954, 1305.0], [52.520007, 13.404954, 129.0], [49.1996961, 7.6087847, 260.0], [48.135125, 11.581981, 407.0], [52.1315889, 11.6399609, 1011.0], [53.550341, 10.000654, 988.0], [47.8539273, 12.127262, 170.0], [49.0068705, 8.4034195, 1215.0], [50.9777974, 11.0287364, 506.0], [51.3154546, 9.4924096, 532.0], [48.681331, 9.00883, 472.0], [48.135125, 11.581981, 674.0], [53.5574458, 13.2602781, 92.0], [50.0820384, 8.2416556, 46.0], [53.8560526, 13.688091, 517.0], [53.6288297, 11.4148038, 92.0], [54.3096314, 13.0820846, 361.0], [53.539584, 8.580942, 76.0], [50.5521486, 9.676511, 1434.0], [49.4892913, 8.4673098, 1787.0], [53.5574458, 13.2602781, 488.0], [50.1055002, 8.7610698, 186.0], [51.842828, 12.230393, 1401.0], [49.533333, 8.35, 634.0], [51.4825041, 11.9705452, 398.0], [47.659216, 9.1750718, 80.0], [52.520007, 13.404954, 254.0], [50.356943, 7.588996, 492.0], [53.919582, 9.882173, 937.0], [50.1109221, 8.6821267, 286.0], [52.3744779, 9.7385532, 364.0], [52.120533, 11.627624, 579.0], [50.769478, 7.187579, 1009.0], [52.520007, 13.404954, 16.0], [50.5862066, 8.6742306, 1580.0], [52.390569, 13.064473, 1570.0], [49.79245, 9.932966, 820.0], [50.0820384, 8.2416556, 204.0], [48.135125, 11.581981, 78.0], [48.8819801, 12.569716, 669.0], [48.8953937, 9.1895147, 487.0], [49.872775, 8.651177, 247.0], [52.268874, 10.52677, 176.0], [52.266837, 8.049741, 202.0], [52.3744779, 9.7385532, 121.0], [53.248706, 10.407855, 789.0], [52.3744779, 9.7385532, 491.0], [53.3172237, 9.9084936, 150.0], [51.54128, 9.915804, 742.0], [52.1521636, 9.9513046, 447.0], [52.540308, 7.329286, 102.0], [52.0895789, 9.3875409, 87.0], [52.6487602, 9.2578105, 208.0], [53.2327625, 7.4577265, 14.0], [53.470839, 7.484831, 68.0], [51.705401, 9.9972782, 189.0], [51.828835, 9.4466591, 194.0], [51.72784, 10.2508204, 233.0], [52.3289688, 9.2053496, 58.0], [52.42958, 7.068571, 55.0], [53.599794, 9.475438, 8.0], [52.259276, 9.052123, 162.0], [53.1389753, 8.2146017, 341.0], [49.142291, 9.218655, 235.0], [48.3974003, 9.9934336, 1086.0], [48.3668041, 10.8986971, 450.0], [53.2520924, 9.3151133, 38.0], [52.617596, 10.062852, 189.0], [48.836689, 10.097116, 285.0], [50.0553084, 11.5455233, 382.0], [47.7267063, 10.3168835, 81.0], [49.0195333, 12.0974869, 54.0], [49.453872, 11.077298, 1477.0], [53.079296, 8.801694, 1549.0], [48.4716556, 7.944378, 21.0], [54.3227085, 10.135555, 193.0], [52.9859666, 9.8433909, 147.0], [48.775846, 9.182932, 582.0], [48.7630165, 11.4250395, 183.0], [49.234362, 6.996379, 1084.0], [48.4919508, 9.2114144, 422.0], [52.4205588, 10.7861682, 114.0], [47.999008, 7.842104, 670.0], [49.214024, 8.366815, 425.0], [49.3539802, 8.1350021, 305.0], [52.480909, 10.550783, 156.0], [51.905953, 10.428996, 170.0], [49.992862, 8.247253, 150.0], [52.1503721, 10.3593147, 41.0], [52.390569, 13.064473, 61.0], [53.859336, 8.687906, 128.0], [52.605646, 8.370788, 156.0], [53.5278793, 8.106301, 395.0], [53.052189, 8.635593, 229.0], [52.844198, 8.053016, 37.0], [52.922341, 9.228153, 148.0], [54.0924445, 12.1286127, 60.0], [49.9850353, 6.88844, 78.0], [48.135125, 11.581981, 96.0], [52.6050782, 11.8594279, 587.0], [47.7811014, 9.612468, 125.0], [52.336191, 9.374258, 98.0], [52.3744779, 9.7385532, 44.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_2634cfd09b5949a088718c17091601d2);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_2f32606ed67348f19eb1fb69dfac76dd {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_2f32606ed67348f19eb1fb69dfac76dd" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_2f32606ed67348f19eb1fb69dfac76dd = L.map(
|
||||
"map_2f32606ed67348f19eb1fb69dfac76dd",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_13975c4cc4a4436cb8eae7154d71188d = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_2f32606ed67348f19eb1fb69dfac76dd);
|
||||
|
||||
|
||||
var heat_map_c86aac5a5a4e4971bba8764f51e22554 = L.heatLayer(
|
||||
[[50.938361, 6.959974, 3.0], [49.0068705, 8.4034195, 1.0], [51.2734857, 7.7274266, 1.0], [50.5521486, 9.676511, 3.0], [51.9625101, 7.6251879, 7.0], [49.453872, 11.077298, 15.0], [49.4892913, 8.4673098, 1.0], [51.842828, 12.230393, 2.0], [52.1315889, 11.6399609, 2.0], [48.3974003, 9.9934336, 8.0], [50.769478, 7.187579, 9.0], [52.120533, 11.627624, 1.0], [51.4825041, 11.9705452, 1.0], [52.390569, 13.064473, 4.0], [52.0191005, 8.531007, 1.0], [51.54128, 9.915804, 1.0], [50.9777974, 11.0287364, 2.0], [48.8953937, 9.1895147, 3.0], [54.3096314, 13.0820846, 2.0], [52.266837, 8.049741, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_2f32606ed67348f19eb1fb69dfac76dd);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_569eb2e3ba9e47038bcccbb653ecad79 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_569eb2e3ba9e47038bcccbb653ecad79" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_569eb2e3ba9e47038bcccbb653ecad79 = L.map(
|
||||
"map_569eb2e3ba9e47038bcccbb653ecad79",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_e94af6d32e5d4bc181f2c972f9929528 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_569eb2e3ba9e47038bcccbb653ecad79);
|
||||
|
||||
|
||||
var heat_map_c7c02dbfce564b248752799a1682ed99 = L.heatLayer(
|
||||
[[50.938361, 6.959974, 0.0014326647564469914], [51.0493286, 13.7381437, 0.01311866428145498], [51.4818111, 7.2196635, 0.00141643059490085], [48.135125, 11.581981, 0.0035087719298245615], [49.79245, 9.932966, 0.0014084507042253522], [51.5142273, 7.4652789, 0.0007283321194464676], [51.842828, 12.230393, 0.012567324955116697], [53.919582, 9.882173, 0.02666666666666667], [52.120533, 11.627624, 0.002551020408163265], [52.520007, 13.404954, 0.026836158192090395], [52.6050782, 11.8594279, 0.0034602076124567475], [52.3744779, 9.7385532, 0.0011025358324145535], [52.390569, 13.064473, 0.012203876525484566], [52.3744779, 9.7385532, 0.015267175572519083], [48.681331, 9.00883, 0.0020491803278688526], [52.520007, 13.404954, 0.1826086956521739], [48.135125, 11.581981, 0.011904761904761904], [52.520007, 13.404954, 0.5]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_569eb2e3ba9e47038bcccbb653ecad79);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_793c86416fc04e23892e678bf5fee6a9 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_793c86416fc04e23892e678bf5fee6a9" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_793c86416fc04e23892e678bf5fee6a9 = L.map(
|
||||
"map_793c86416fc04e23892e678bf5fee6a9",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_1ec357930c8e4283bd412c524172b4fb = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_793c86416fc04e23892e678bf5fee6a9);
|
||||
|
||||
|
||||
var heat_map_f1858b14c82e4c43a9fdb43d036c78e6 = L.heatLayer(
|
||||
[],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_793c86416fc04e23892e678bf5fee6a9);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_4c32c5561608432590b41c0c1f95de47 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_4c32c5561608432590b41c0c1f95de47" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_4c32c5561608432590b41c0c1f95de47 = L.map(
|
||||
"map_4c32c5561608432590b41c0c1f95de47",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_01f98342d9b8468cb67fd9dba30681f0 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_4c32c5561608432590b41c0c1f95de47);
|
||||
|
||||
|
||||
var heat_map_a74afa2ed23149be958a106d83422104 = L.heatLayer(
|
||||
[[50.5862066, 8.6742306, 286.0], [50.5521486, 9.676511, 1.0], [50.110922, 8.682127, 1.0], [51.3154546, 9.4924096, 1.0], [50.1109221, 8.6821267, 1.0], [50.0820384, 8.2416556, 1.0], [50.0012314, 8.2762513, 1.0], [54.3096314, 13.0820846, 1.0], [49.872775, 8.651177, 1.0], [50.1055002, 8.7610698, 2.0], [50.0820384, 8.2416556, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_4c32c5561608432590b41c0c1f95de47);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_3e2c580e11a84cc5bb8d84935de68b6e {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_3e2c580e11a84cc5bb8d84935de68b6e" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_3e2c580e11a84cc5bb8d84935de68b6e = L.map(
|
||||
"map_3e2c580e11a84cc5bb8d84935de68b6e",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_81d33bd0163b495fa030fbb5f98a156f = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_3e2c580e11a84cc5bb8d84935de68b6e);
|
||||
|
||||
|
||||
var heat_map_7295074abab04caebb9fa2143a96aacf = L.heatLayer(
|
||||
[],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_3e2c580e11a84cc5bb8d84935de68b6e);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_9f18d9c181c54ba6b625b728f4355efc {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_9f18d9c181c54ba6b625b728f4355efc" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_9f18d9c181c54ba6b625b728f4355efc = L.map(
|
||||
"map_9f18d9c181c54ba6b625b728f4355efc",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_532c44ada72447b4a1362dc1890db44d = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_9f18d9c181c54ba6b625b728f4355efc);
|
||||
|
||||
|
||||
var heat_map_930862bf7d1e46bcbd22766eb47a8376 = L.heatLayer(
|
||||
[[51.5110321, 7.0960124, 0.0028011204481792717], [47.999008, 7.842104, 0.008645533141210375], [49.453872, 11.077298, 0.004955401387512388], [49.4892913, 8.4673098, 0.000877963125548727], [50.356943, 7.588996, 0.027559055118110236], [49.3539802, 8.1350021, 0.031746031746031744], [52.6050782, 11.8594279, 0.0034602076124567475], [52.6487602, 9.2578105, 0.008064516129032258], [54.3227085, 10.135555, 0.006711409395973154]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_9f18d9c181c54ba6b625b728f4355efc);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_045e611cadd34abf886b5ed0fae587fb {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_045e611cadd34abf886b5ed0fae587fb" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_045e611cadd34abf886b5ed0fae587fb = L.map(
|
||||
"map_045e611cadd34abf886b5ed0fae587fb",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_e0616ad6045446aa91d4b9f2c226c163 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_045e611cadd34abf886b5ed0fae587fb);
|
||||
|
||||
|
||||
var heat_map_ad93446452dd462db12167d74c78f228 = L.heatLayer(
|
||||
[[51.5110321, 7.0960124, 1.0], [47.999008, 7.842104, 3.0], [49.453872, 11.077298, 5.0], [49.4892913, 8.4673098, 1.0], [50.356943, 7.588996, 7.0], [49.3539802, 8.1350021, 6.0], [52.6050782, 11.8594279, 1.0], [52.6487602, 9.2578105, 1.0], [54.3227085, 10.135555, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_045e611cadd34abf886b5ed0fae587fb);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_09e5f6501b344fce926c115931a0a030 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_09e5f6501b344fce926c115931a0a030" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_09e5f6501b344fce926c115931a0a030 = L.map(
|
||||
"map_09e5f6501b344fce926c115931a0a030",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_99793849c2e24db9b0520423e9557dd5 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_09e5f6501b344fce926c115931a0a030);
|
||||
|
||||
|
||||
var heat_map_b8df3d0f50b74aa893a7d6fcc0a2ab65 = L.heatLayer(
|
||||
[[50.110922, 8.682127, 0.0005763688760806917], [49.453872, 11.077298, 0.006937561942517344], [48.135125, 11.581981, 0.0008888888888888889], [49.4892913, 8.4673098, 0.000877963125548727], [50.356943, 7.588996, 0.023622047244094488], [49.3539802, 8.1350021, 0.015873015873015872], [53.052189, 8.635593, 0.007751937984496124], [54.0924445, 12.1286127, 0.006369426751592357], [49.142291, 9.218655, 0.004329004329004329]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_09e5f6501b344fce926c115931a0a030);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_e9c17733dd13460cb6dc6459119b58d9 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_e9c17733dd13460cb6dc6459119b58d9" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_e9c17733dd13460cb6dc6459119b58d9 = L.map(
|
||||
"map_e9c17733dd13460cb6dc6459119b58d9",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_3a6881b6c1444ee1af8e972635eb33ce = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_e9c17733dd13460cb6dc6459119b58d9);
|
||||
|
||||
|
||||
var heat_map_4dc8590f5ca443dc9f67f271477a31b8 = L.heatLayer(
|
||||
[[50.110922, 8.682127, 1.0], [49.453872, 11.077298, 7.0], [48.135125, 11.581981, 1.0], [49.4892913, 8.4673098, 1.0], [50.356943, 7.588996, 6.0], [49.3539802, 8.1350021, 3.0], [53.052189, 8.635593, 1.0], [54.0924445, 12.1286127, 1.0], [49.142291, 9.218655, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_e9c17733dd13460cb6dc6459119b58d9);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_ff0696dba6fe475889f7fd5ef3e62692 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_ff0696dba6fe475889f7fd5ef3e62692" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_ff0696dba6fe475889f7fd5ef3e62692 = L.map(
|
||||
"map_ff0696dba6fe475889f7fd5ef3e62692",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_dca1daf383bb4a488f54b302b34a0cff = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_ff0696dba6fe475889f7fd5ef3e62692);
|
||||
|
||||
|
||||
var heat_map_14c3b370fdb74ca5882f560782595683 = L.heatLayer(
|
||||
[[50.938361, 6.959974, 0.9054441260744985], [51.264018, 7.1780374, 0.005291005291005291], [50.769478, 7.187579, 0.10572687224669604], [50.7527986, 7.3813038, 0.006920415224913495], [48.4919508, 9.2114144, 0.004672897196261682], [52.1152245, 8.6711118, 0.00423728813559322], [48.135125, 11.581981, 0.011904761904761904]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_ff0696dba6fe475889f7fd5ef3e62692);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_70c4e4784c324100abff8b4e26d1b0c6 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_70c4e4784c324100abff8b4e26d1b0c6" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_70c4e4784c324100abff8b4e26d1b0c6 = L.map(
|
||||
"map_70c4e4784c324100abff8b4e26d1b0c6",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_49f31a3359b54ec0b92f915488461317 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_70c4e4784c324100abff8b4e26d1b0c6);
|
||||
|
||||
|
||||
var heat_map_3ab784fd62824262ac6d0d3c7e1baff8 = L.heatLayer(
|
||||
[[53.079296, 8.801694, 427.0], [51.434999, 6.759562, 6.0], [51.0493286, 13.7381437, 12.0], [48.7784485, 9.1800132, 331.0], [51.0297603, 7.8424193, 3.0], [51.2527778, 6.9777778, 8.0], [50.5862066, 8.6742306, 116.0], [51.6143815, 7.1978546, 257.0], [51.4818111, 7.2196635, 22.0], [49.0068705, 8.4034195, 257.0], [51.2734857, 7.7274266, 2.0], [50.97444, 8.23972, 1.0], [51.5110321, 7.0960124, 233.0], [50.5521486, 9.676511, 223.0], [50.110922, 8.682127, 5.0], [51.9625101, 7.6251879, 116.0], [52.1294289, 7.3903454, 2.0], [47.999008, 7.842104, 172.0], [51.9532449, 7.9912335, 2.0], [50.776351, 6.083862, 150.0], [49.79245, 9.932966, 13.0], [51.5142273, 7.4652789, 97.0], [49.234362, 6.996379, 1.0], [49.453872, 11.077298, 31.0], [51.1758799, 6.6600606, 3.0], [51.6576909, 6.617087, 144.0], [48.135125, 11.581981, 24.0], [49.4892913, 8.4673098, 8.0], [51.842828, 12.230393, 99.0], [52.1315889, 11.6399609, 12.0], [49.4704113, 8.4381568, 3.0], [51.9063997, 8.3782078, 1.0], [51.264018, 7.1780374, 113.0], [53.248706, 10.407855, 4.0], [53.8560526, 13.688091, 6.0], [51.7189596, 8.7648698, 1.0], [51.3154546, 9.4924096, 5.0], [51.4696137, 6.8514435, 63.0], [48.3974003, 9.9934336, 13.0], [50.8031684, 6.4820806, 82.0], [48.8819801, 12.569716, 6.0], [51.2562118, 6.3905476, 72.0], [52.2881045, 8.9168852, 1.0], [51.3331205, 6.5623343, 3.0], [50.769478, 7.187579, 4.0], [48.3668041, 10.8986971, 28.0], [48.775846, 9.182932, 4.0], [52.120533, 11.627624, 1.0], [51.5348835, 7.689014, 22.0], [52.520007, 13.404954, 1.0], [53.5574458, 13.2602781, 17.0], [49.3539802, 8.1350021, 3.0], [52.6050782, 11.8594279, 53.0], [51.4825041, 11.9705452, 25.0], [50.6612623, 6.7871219, 19.0], [49.533333, 8.35, 35.0], [52.3744779, 9.7385532, 1.0], [50.7527986, 7.3813038, 48.0], [51.0277658, 7.5630545, 3.0], [52.390569, 13.064473, 1.0], [52.0191005, 8.531007, 1.0], [53.5278793, 8.106301, 41.0], [51.54128, 9.915804, 7.0], [51.4582235, 7.0158171, 21.0], [50.3533278, 7.5943951, 13.0], [53.052189, 8.635593, 35.0], [48.8953937, 9.1895147, 6.0], [50.1109221, 8.6821267, 1.0], [52.605646, 8.370788, 32.0], [50.0820384, 8.2416556, 21.0], [50.0553084, 11.5455233, 31.0], [50.0012314, 8.2762513, 1.0], [49.214024, 8.366815, 21.0], [52.617596, 10.062852, 2.0], [54.3096314, 13.0820846, 18.0], [53.1389753, 8.2146017, 26.0], [49.7596208, 6.6441878, 1.0], [53.539584, 8.580942, 19.0], [52.6487602, 9.2578105, 8.0], [51.3582945, 7.473296, 23.0], [50.90334, 6.763334, 22.0], [51.705401, 9.9972782, 3.0], [49.1996961, 7.6087847, 14.0], [51.6804093, 7.815197, 21.0], [52.520007, 13.404954, 1.0], [51.0654268, 6.0984461, 1.0], [52.266837, 8.049741, 15.0], [52.3744779, 9.7385532, 2.0], [52.9859666, 9.8433909, 12.0], [51.1946983, 6.4353641, 2.0], [54.3227085, 10.135555, 18.0], [49.9850353, 6.88844, 1.0], [49.4432174, 7.7689951, 1.0], [52.480909, 10.550783, 7.0], [50.1055002, 8.7610698, 4.0], [52.268874, 10.52677, 1.0], [51.2254018, 6.7763137, 1.0], [48.836689, 10.097116, 13.0], [51.7747369, 9.3816877, 5.0], [51.828835, 9.4466591, 4.0], [51.905953, 10.428996, 2.0], [49.142291, 9.218655, 12.0], [53.859336, 8.687906, 2.0], [48.7630165, 11.4250395, 2.0], [52.1503721, 10.3593147, 11.0], [51.8443183, 6.8582247, 8.0], [49.992862, 8.247253, 2.0], [51.72784, 10.2508204, 5.0], [52.922341, 9.228153, 4.0], [53.5574458, 13.2602781, 3.0], [51.0139774, 7.1715584, 1.0], [47.8539273, 12.127262, 2.0], [52.0895789, 9.3875409, 7.0], [52.540308, 7.329286, 1.0], [52.3744779, 9.7385532, 5.0], [52.42958, 7.068571, 1.0], [47.7811014, 9.612468, 1.0], [47.7267063, 10.3168835, 2.0], [52.844198, 8.053016, 4.0], [48.135125, 11.581981, 2.0], [48.135125, 11.581981, 4.0], [49.0195333, 12.0974869, 2.0], [53.470839, 7.484831, 3.0], [50.0820384, 8.2416556, 1.0], [48.4716556, 7.944378, 1.0], [51.5725501, 8.1061259, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_70c4e4784c324100abff8b4e26d1b0c6);
|
||||
|
||||
</script>
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_053d18bdcf6f473db0f07b5e1a01bbf3 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_053d18bdcf6f473db0f07b5e1a01bbf3" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_053d18bdcf6f473db0f07b5e1a01bbf3 = L.map(
|
||||
"map_053d18bdcf6f473db0f07b5e1a01bbf3",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_c95f448c3d2f4edb90823a73852cd166 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_053d18bdcf6f473db0f07b5e1a01bbf3);
|
||||
|
||||
|
||||
var heat_map_81258ff04ec74ba8b43c961d184fa636 = L.heatLayer(
|
||||
[[49.0068705, 8.4034195, 0.0019880715705765406], [47.999008, 7.842104, 0.002881844380403458], [49.79245, 9.932966, 0.0014084507042253522], [49.234362, 6.996379, 0.00819672131147541], [49.453872, 11.077298, 0.0009910802775024777], [48.135125, 11.581981, 0.0017777777777777779], [49.4892913, 8.4673098, 0.000877963125548727], [48.8819801, 12.569716, 0.003484320557491289], [48.3668041, 10.8986971, 0.037267080745341616], [53.5574458, 13.2602781, 0.008032128514056224], [49.3539802, 8.1350021, 0.026455026455026454], [51.4582235, 7.0158171, 0.01466275659824047], [54.0924445, 12.1286127, 0.08280254777070063], [50.0820384, 8.2416556, 0.0070921985815602835], [50.0553084, 11.5455233, 0.006711409395973154], [54.3096314, 13.0820846, 0.009009009009009009], [53.6288297, 11.4148038, 0.047058823529411764], [52.268874, 10.52677, 0.012987012987012988], [47.8539273, 12.127262, 0.009009009009009009], [52.844198, 8.053016, 0.029411764705882353], [53.470839, 7.484831, 0.02857142857142857], [53.599794, 9.475438, 0.2857142857142857]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_053d18bdcf6f473db0f07b5e1a01bbf3);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_d2a081d724a747fca8eb63bc6c3a47c9 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_d2a081d724a747fca8eb63bc6c3a47c9" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_d2a081d724a747fca8eb63bc6c3a47c9 = L.map(
|
||||
"map_d2a081d724a747fca8eb63bc6c3a47c9",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_9b4aaf599a85438990c49638d1fccff5 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_d2a081d724a747fca8eb63bc6c3a47c9);
|
||||
|
||||
|
||||
var heat_map_2622daf2dceb4193beef136c43d7a5e5 = L.heatLayer(
|
||||
[[49.0068705, 8.4034195, 2.0], [47.999008, 7.842104, 1.0], [49.79245, 9.932966, 1.0], [49.234362, 6.996379, 2.0], [49.453872, 11.077298, 1.0], [48.135125, 11.581981, 2.0], [49.4892913, 8.4673098, 1.0], [48.8819801, 12.569716, 1.0], [48.3668041, 10.8986971, 12.0], [53.5574458, 13.2602781, 2.0], [49.3539802, 8.1350021, 5.0], [51.4582235, 7.0158171, 5.0], [54.0924445, 12.1286127, 13.0], [50.0820384, 8.2416556, 1.0], [50.0553084, 11.5455233, 1.0], [54.3096314, 13.0820846, 2.0], [53.6288297, 11.4148038, 4.0], [52.268874, 10.52677, 2.0], [47.8539273, 12.127262, 1.0], [52.844198, 8.053016, 1.0], [53.470839, 7.484831, 1.0], [53.599794, 9.475438, 2.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_d2a081d724a747fca8eb63bc6c3a47c9);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_b82da960f07740428405955771ea86e5 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_b82da960f07740428405955771ea86e5" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_b82da960f07740428405955771ea86e5 = L.map(
|
||||
"map_b82da960f07740428405955771ea86e5",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_e0ca26c320714fadb83cc9063b453b47 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_b82da960f07740428405955771ea86e5);
|
||||
|
||||
|
||||
var heat_map_0897662ab8ca4f6d8bcabba079b0224b = L.heatLayer(
|
||||
[[52.617596, 10.062852, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_b82da960f07740428405955771ea86e5);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_adec882193aa40fd919f55be458b02ee {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_adec882193aa40fd919f55be458b02ee" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_adec882193aa40fd919f55be458b02ee = L.map(
|
||||
"map_adec882193aa40fd919f55be458b02ee",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_40301701df2d4a4e8ee54f1ecf54b303 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_adec882193aa40fd919f55be458b02ee);
|
||||
|
||||
|
||||
var heat_map_c647028405f84938a691a16621b312ac = L.heatLayer(
|
||||
[[50.938361, 6.959974, 3.0], [49.0068705, 8.4034195, 1.0], [51.2734857, 7.7274266, 1.0], [50.5521486, 9.676511, 3.0], [51.9625101, 7.6251879, 7.0], [49.453872, 11.077298, 15.0], [49.4892913, 8.4673098, 1.0], [51.842828, 12.230393, 2.0], [52.1315889, 11.6399609, 2.0], [48.3974003, 9.9934336, 8.0], [50.769478, 7.187579, 9.0], [52.120533, 11.627624, 1.0], [51.4825041, 11.9705452, 1.0], [52.390569, 13.064473, 4.0], [52.0191005, 8.531007, 1.0], [51.54128, 9.915804, 1.0], [50.9777974, 11.0287364, 2.0], [48.8953937, 9.1895147, 3.0], [54.3096314, 13.0820846, 2.0], [52.266837, 8.049741, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_adec882193aa40fd919f55be458b02ee);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_135292aea73a42399ee5a53aee971204 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_135292aea73a42399ee5a53aee971204" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_135292aea73a42399ee5a53aee971204 = L.map(
|
||||
"map_135292aea73a42399ee5a53aee971204",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_882e7f0bc671451397991e670bb0099a = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_135292aea73a42399ee5a53aee971204);
|
||||
|
||||
|
||||
var heat_map_003e164497ee4334afa7297fa080e3af = L.heatLayer(
|
||||
[[50.938361, 6.959974, 1.0], [50.938361, 6.959974, 1.0], [53.079296, 8.801694, 7.0], [51.0493286, 13.7381437, 2.0], [48.7784485, 9.1800132, 5.0], [51.2527778, 6.9777778, 1.0], [50.5862066, 8.6742306, 1.0], [51.4818111, 7.2196635, 4.0], [49.0068705, 8.4034195, 1.0], [51.2734857, 7.7274266, 3.0], [51.5110321, 7.0960124, 1.0], [50.5521486, 9.676511, 3.0], [50.110922, 8.682127, 1.0], [51.9625101, 7.6251879, 1.0], [52.1294289, 7.3903454, 2.0], [48.135125, 11.581981, 8.0], [47.999008, 7.842104, 6.0], [49.234362, 6.996379, 65.0], [49.453872, 11.077298, 12.0], [51.1758799, 6.6600606, 1.0], [48.135125, 11.581981, 3.0], [49.4892913, 8.4673098, 6.0], [51.842828, 12.230393, 3.0], [52.259276, 9.052123, 1.0], [52.1315889, 11.6399609, 5.0], [49.4704113, 8.4381568, 6.0], [49.4704113, 8.4381568, 5.0], [51.264018, 7.1780374, 1.0], [53.248706, 10.407855, 8.0], [53.248706, 10.407855, 3.0], [53.919582, 9.882173, 4.0], [53.8560526, 13.688091, 4.0], [51.7189596, 8.7648698, 1.0], [51.3154546, 9.4924096, 2.0], [51.4696137, 6.8514435, 1.0], [48.3974003, 9.9934336, 9.0], [50.356943, 7.588996, 2.0], [48.8819801, 12.569716, 1.0], [53.550341, 10.000654, 3.0], [50.769478, 7.187579, 6.0], [48.3668041, 10.8986971, 3.0], [48.775846, 9.182932, 8.0], [48.775846, 9.182932, 1.0], [52.120533, 11.627624, 4.0], [51.5348835, 7.689014, 2.0], [52.520007, 13.404954, 1.0], [53.5574458, 13.2602781, 2.0], [49.3539802, 8.1350021, 2.0], [52.6050782, 11.8594279, 8.0], [52.6050782, 11.8594279, 1.0], [51.4825041, 11.9705452, 2.0], [50.6612623, 6.7871219, 1.0], [49.533333, 8.35, 7.0], [52.3744779, 9.7385532, 11.0], [50.7527986, 7.3813038, 3.0], [52.390569, 13.064473, 5.0], [53.5278793, 8.106301, 2.0], [51.54128, 9.915804, 7.0], [51.54128, 9.915804, 1.0], [51.4582235, 7.0158171, 2.0], [50.3533278, 7.5943951, 7.0], [50.3533278, 7.5943951, 7.0], [52.3744779, 9.7385532, 5.0], [53.052189, 8.635593, 5.0], [48.8953937, 9.1895147, 3.0], [54.0924445, 12.1286127, 4.0], [50.1109221, 8.6821267, 6.0], [50.1109221, 8.6821267, 1.0], [52.605646, 8.370788, 2.0], [50.0553084, 11.5455233, 1.0], [50.0012314, 8.2762513, 14.0], [50.0012314, 8.2762513, 2.0], [48.681331, 9.00883, 2.0], [49.214024, 8.366815, 2.0], [52.617596, 10.062852, 1.0], [54.3096314, 13.0820846, 7.0], [53.1389753, 8.2146017, 2.0], [49.7596208, 6.6441878, 7.0], [49.872775, 8.651177, 1.0], [52.6487602, 9.2578105, 3.0], [51.3582945, 7.473296, 14.0], [51.705401, 9.9972782, 2.0], [53.6288297, 11.4148038, 2.0], [49.1996961, 7.6087847, 7.0], [49.1996961, 7.6087847, 1.0], [52.520007, 13.404954, 2.0], [52.266837, 8.049741, 5.0], [52.9859666, 9.8433909, 1.0], [54.3227085, 10.135555, 1.0], [49.9850353, 6.88844, 2.0], [49.9850353, 6.88844, 1.0], [48.4919508, 9.2114144, 1.0], [49.4432174, 7.7689951, 2.0], [50.1055002, 8.7610698, 1.0], [50.1055002, 8.7610698, 1.0], [52.268874, 10.52677, 4.0], [48.836689, 10.097116, 2.0], [51.828835, 9.4466591, 4.0], [51.905953, 10.428996, 2.0], [49.142291, 9.218655, 2.0], [49.992862, 8.247253, 6.0], [49.992862, 8.247253, 1.0], [51.72784, 10.2508204, 3.0], [52.922341, 9.228153, 3.0], [53.5574458, 13.2602781, 2.0], [52.3289688, 9.2053496, 1.0], [54.0924445, 12.1286127, 2.0], [52.336191, 9.374258, 1.0], [47.7811014, 9.612468, 2.0], [47.659216, 9.1750718, 2.0], [53.2520924, 9.3151133, 1.0], [52.844198, 8.053016, 2.0], [48.135125, 11.581981, 1.0], [48.135125, 11.581981, 1.0], [53.470839, 7.484831, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_135292aea73a42399ee5a53aee971204);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_c557ddfdee3c471ead063867b7f97d48 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_c557ddfdee3c471ead063867b7f97d48" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_c557ddfdee3c471ead063867b7f97d48 = L.map(
|
||||
"map_c557ddfdee3c471ead063867b7f97d48",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_a5591d32dbbf42ebae58cd6e24506422 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_c557ddfdee3c471ead063867b7f97d48);
|
||||
|
||||
|
||||
var heat_map_5435d58f81974c8d88b6ea913baf2f1e = L.heatLayer(
|
||||
[],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_c557ddfdee3c471ead063867b7f97d48);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_cafa3aa3cbf9491192ee4e98daba8417 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_cafa3aa3cbf9491192ee4e98daba8417" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_cafa3aa3cbf9491192ee4e98daba8417 = L.map(
|
||||
"map_cafa3aa3cbf9491192ee4e98daba8417",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_a3d7501029394368abc2d1398488a2b7 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_cafa3aa3cbf9491192ee4e98daba8417);
|
||||
|
||||
|
||||
var heat_map_c1893cffd6f245ef8e5aa475bd0b7fd5 = L.heatLayer(
|
||||
[[51.434999, 6.759562, 1.0], [51.4818111, 7.2196635, 1.0], [52.1294289, 7.3903454, 1.0], [51.9532449, 7.9912335, 1.0], [49.79245, 9.932966, 1.0], [51.5142273, 7.4652789, 5.0], [51.5142273, 7.4652789, 1.0], [49.234362, 6.996379, 2.0], [49.234362, 6.996379, 1.0], [49.453872, 11.077298, 5.0], [49.453872, 11.077298, 1.0], [49.4892913, 8.4673098, 1.0], [52.1315889, 11.6399609, 1.0], [53.248706, 10.407855, 1.0], [53.248706, 10.407855, 1.0], [53.919582, 9.882173, 2.0], [53.919582, 9.882173, 2.0], [53.8560526, 13.688091, 8.0], [50.356943, 7.588996, 1.0], [52.2881045, 8.9168852, 1.0], [50.769478, 7.187579, 1.0], [48.775846, 9.182932, 1.0], [52.520007, 13.404954, 23.0], [52.520007, 13.404954, 1.0], [53.5574458, 13.2602781, 14.0], [53.5574458, 13.2602781, 3.0], [49.3539802, 8.1350021, 1.0], [52.6050782, 11.8594279, 4.0], [51.4825041, 11.9705452, 2.0], [51.4825041, 11.9705452, 1.0], [49.533333, 8.35, 1.0], [51.0277658, 7.5630545, 1.0], [51.0277658, 7.5630545, 1.0], [52.390569, 13.064473, 2.0], [52.390569, 13.064473, 1.0], [53.5278793, 8.106301, 1.0], [51.54128, 9.915804, 1.0], [52.3744779, 9.7385532, 1.0], [52.3744779, 9.7385532, 1.0], [54.0924445, 12.1286127, 2.0], [50.0820384, 8.2416556, 2.0], [49.214024, 8.366815, 2.0], [49.214024, 8.366815, 1.0], [52.617596, 10.062852, 1.0], [54.3096314, 13.0820846, 3.0], [52.520007, 13.404954, 3.0], [49.7596208, 6.6441878, 2.0], [52.6487602, 9.2578105, 1.0], [52.520007, 13.404954, 1.0], [52.266837, 8.049741, 1.0], [49.9850353, 6.88844, 2.0], [52.268874, 10.52677, 1.0], [52.390569, 13.064473, 3.0], [53.5574458, 13.2602781, 2.0], [52.336191, 9.374258, 1.0], [52.336191, 9.374258, 1.0], [49.0195333, 12.0974869, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_cafa3aa3cbf9491192ee4e98daba8417);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_85d930ca0a07415d9dd68e1d0abe395e {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_85d930ca0a07415d9dd68e1d0abe395e" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_85d930ca0a07415d9dd68e1d0abe395e = L.map(
|
||||
"map_85d930ca0a07415d9dd68e1d0abe395e",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_830e849270754ae3bd2ea70100821135 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_85d930ca0a07415d9dd68e1d0abe395e);
|
||||
|
||||
|
||||
var heat_map_8579e50a4cd64cbb839f27a8bd37b3de = L.heatLayer(
|
||||
[[50.5862066, 8.6742306, 286.0], [50.5862066, 8.6742306, 3.0], [50.5521486, 9.676511, 1.0], [50.110922, 8.682127, 1.0], [51.3154546, 9.4924096, 1.0], [50.1109221, 8.6821267, 1.0], [50.0820384, 8.2416556, 1.0], [50.0012314, 8.2762513, 1.0], [54.3096314, 13.0820846, 1.0], [49.872775, 8.651177, 1.0], [50.1055002, 8.7610698, 2.0], [50.0820384, 8.2416556, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_85d930ca0a07415d9dd68e1d0abe395e);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_6aef4af00af54e2e92844234e14018b7 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_6aef4af00af54e2e92844234e14018b7" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_6aef4af00af54e2e92844234e14018b7 = L.map(
|
||||
"map_6aef4af00af54e2e92844234e14018b7",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_04747955ac024492b2f97dc8b13b0887 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_6aef4af00af54e2e92844234e14018b7);
|
||||
|
||||
|
||||
var heat_map_9de8301423e44c64af58e4c797deb4d9 = L.heatLayer(
|
||||
[],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_6aef4af00af54e2e92844234e14018b7);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_ebe45c1fb4d04d1a95be4f62657f738b {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_ebe45c1fb4d04d1a95be4f62657f738b" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_ebe45c1fb4d04d1a95be4f62657f738b = L.map(
|
||||
"map_ebe45c1fb4d04d1a95be4f62657f738b",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_2e241fb7d546463fbdf373658ee835eb = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_ebe45c1fb4d04d1a95be4f62657f738b);
|
||||
|
||||
|
||||
var heat_map_e73488534b334eda9b44e979b66e7054 = L.heatLayer(
|
||||
[[51.4818111, 7.2196635, 1.0], [49.234362, 6.996379, 1.0], [51.842828, 12.230393, 2.0], [52.1315889, 11.6399609, 2.0], [51.264018, 7.1780374, 1.0], [48.3974003, 9.9934336, 2.0], [48.8819801, 12.569716, 1.0], [50.769478, 7.187579, 1.0], [52.520007, 13.404954, 1.0], [52.6050782, 11.8594279, 2.0], [51.4825041, 11.9705452, 1.0], [52.390569, 13.064473, 2.0], [52.266837, 8.049741, 2.0], [51.828835, 9.4466591, 2.0], [52.1503721, 10.3593147, 1.0], [47.8539273, 12.127262, 1.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_ebe45c1fb4d04d1a95be4f62657f738b);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_5a06192c8dc849ebb51e1684eec6a072 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_5a06192c8dc849ebb51e1684eec6a072" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_5a06192c8dc849ebb51e1684eec6a072 = L.map(
|
||||
"map_5a06192c8dc849ebb51e1684eec6a072",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_8aad6cc72e2246d081b995f6aa6913b8 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_5a06192c8dc849ebb51e1684eec6a072);
|
||||
|
||||
|
||||
var heat_map_f290006b43454c8d8b8c27f866e81e39 = L.heatLayer(
|
||||
[],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_5a06192c8dc849ebb51e1684eec6a072);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_f04a5cf204f8442da011a485ac471876 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_f04a5cf204f8442da011a485ac471876" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_f04a5cf204f8442da011a485ac471876 = L.map(
|
||||
"map_f04a5cf204f8442da011a485ac471876",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_120a2f57890243ce9409df877e47e282 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_f04a5cf204f8442da011a485ac471876);
|
||||
|
||||
|
||||
var heat_map_8abdc313946b4aa5a79ec29dff1e1d3d = L.heatLayer(
|
||||
[],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_f04a5cf204f8442da011a485ac471876);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_a08fa9b693bf4a5a815962b957e44fc4 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_a08fa9b693bf4a5a815962b957e44fc4" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_a08fa9b693bf4a5a815962b957e44fc4 = L.map(
|
||||
"map_a08fa9b693bf4a5a815962b957e44fc4",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_9ab2306557eb41e9be1c098bbf5d6784 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_a08fa9b693bf4a5a815962b957e44fc4);
|
||||
|
||||
|
||||
var heat_map_f4c5c6980dcb4c3cb537fa8a08f9b7a2 = L.heatLayer(
|
||||
[[47.999008, 7.842104, 6.0]],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_a08fa9b693bf4a5a815962b957e44fc4);
|
||||
|
||||
</script>
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||
|
||||
<script>
|
||||
L_NO_TOUCH = false;
|
||||
L_DISABLE_3D = false;
|
||||
</script>
|
||||
|
||||
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
||||
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
||||
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.js"></script>
|
||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/leaflet.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"/>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
||||
|
||||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_c83da2fa6eea4f18b3c984ff31f38da7 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
left: 0.0%;
|
||||
top: 0.0%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/gh/python-visualization/folium@master/folium/templates/leaflet_heat.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="folium-map" id="map_c83da2fa6eea4f18b3c984ff31f38da7" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
var map_c83da2fa6eea4f18b3c984ff31f38da7 = L.map(
|
||||
"map_c83da2fa6eea4f18b3c984ff31f38da7",
|
||||
{
|
||||
center: [51.423, 9.03],
|
||||
crs: L.CRS.EPSG3857,
|
||||
zoom: 6,
|
||||
zoomControl: true,
|
||||
preferCanvas: false,
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var tile_layer_bfc9ad4d67cc457b9786cf80eb52a7a8 = L.tileLayer(
|
||||
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "Data by \u0026copy; \u003ca href=\"http://openstreetmap.org\"\u003eOpenStreetMap\u003c/a\u003e, under \u003ca href=\"http://www.openstreetmap.org/copyright\"\u003eODbL\u003c/a\u003e.", "detectRetina": false, "maxNativeZoom": 18, "maxZoom": 18, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
).addTo(map_c83da2fa6eea4f18b3c984ff31f38da7);
|
||||
|
||||
|
||||
var heat_map_549f5561514c459d8ac2fa173de6c52d = L.heatLayer(
|
||||
[],
|
||||
{"blur": 15, "maxZoom": 18, "minOpacity": 0.5, "radius": 25}
|
||||
).addTo(map_c83da2fa6eea4f18b3c984ff31f38da7);
|
||||
|
||||
</script>
|
591
flake.lock
Normal file
591
flake.lock
Normal file
|
@ -0,0 +1,591 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1627913399,
|
||||
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1678901627,
|
||||
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1629481132,
|
||||
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "997f7efcb746a9c140ce1f13c72263189225f482",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1611672876,
|
||||
"narHash": "sha256-qHu3uZ/o9jBHiA3MEKHJ06k7w4heOhA+4HCSIvflRxo=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "211907489e9f198594c0eb0ca9256a1949c9d412",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"pre-commit-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1660459072,
|
||||
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hls": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1637213318,
|
||||
"narHash": "sha256-ZgxPwV7t4DyGYP7aXoetq+JHtd73XlOV2fYSflQmOXw=",
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"rev": "311107eabbf0537e0c192b2c377d282505b4eff1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "haskell",
|
||||
"repo": "haskell-language-server",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ihaskell": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"jupyenv",
|
||||
"flake-compat"
|
||||
],
|
||||
"flake-utils": [
|
||||
"jupyenv",
|
||||
"flake-utils"
|
||||
],
|
||||
"hls": "hls",
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1671426600,
|
||||
"narHash": "sha256-MahAFyp6AxY0H61U6zqJXM1NsckNNkK6iqONEtOPSK0=",
|
||||
"owner": "ihaskell",
|
||||
"repo": "ihaskell",
|
||||
"rev": "1c22a874ac0c8ed019229f4a0cd5a0bfda017357",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ihaskell",
|
||||
"repo": "ihaskell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"jupyenv": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"ihaskell": "ihaskell",
|
||||
"nix-dart": "nix-dart",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"npmlock2nix": "npmlock2nix",
|
||||
"opam-nix": "opam-nix",
|
||||
"poetry2nix": "poetry2nix",
|
||||
"pre-commit-hooks": "pre-commit-hooks_2",
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1679071568,
|
||||
"narHash": "sha256-3LAo9uXGTmfS4OsiiIuoxX9knEshziCyI1MxR40VKeU=",
|
||||
"owner": "tweag",
|
||||
"repo": "jupyenv",
|
||||
"rev": "3ad2c9512c9efd586cf63adde454e734a8ce049c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tweag",
|
||||
"repo": "jupyenv",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mirage-opam-overlays": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1661959605,
|
||||
"narHash": "sha256-CPTuhYML3F4J58flfp3ZbMNhkRkVFKmBEYBZY5tnQwA=",
|
||||
"owner": "dune-universe",
|
||||
"repo": "mirage-opam-overlays",
|
||||
"rev": "05f1c1823d891ce4d8adab91f5db3ac51d86dc0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "dune-universe",
|
||||
"repo": "mirage-opam-overlays",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-dart": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"jupyenv",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"nixpkgs"
|
||||
],
|
||||
"pub2nix": "pub2nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1673740150,
|
||||
"narHash": "sha256-JiZrr75JILHW7IaNW3MwpYn+084Q6/gnXScPR7Pozhs=",
|
||||
"owner": "djacu",
|
||||
"repo": "nix-dart",
|
||||
"rev": "8ee4e1a5ec0cc6c1e15860c4733f741485e8231e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "djacu",
|
||||
"repo": "nix-dart",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1630887066,
|
||||
"narHash": "sha256-0ecIlrLsNIIa+zrNmzXXmbMBLZlmHU/aWFsa4bq99Hk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5e47a07e9f2d7ed999f2c7943b0896f5f7321ca3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1672580127,
|
||||
"narHash": "sha256-3lW3xZslREhJogoOkjeZtlBtvFMyxHku7I/9IVehhT8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0874168639713f547c05947c76124f78441ea46c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-22.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable_2": {
|
||||
"locked": {
|
||||
"lastModified": 1673800717,
|
||||
"narHash": "sha256-SFHraUqLSu5cC6IxTprex/nTsI81ZQAtDvlBvGDWfnA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "2f9fd351ec37f5d479556cd48be4ca340da59b8f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-22.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1673796341,
|
||||
"narHash": "sha256-1kZi9OkukpNmOaPY7S5/+SlCDOuYnP3HkXHvNDyLQcc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6dccdc458512abce8d19f74195bb20fdb067df50",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1679616449,
|
||||
"narHash": "sha256-E6Fvb13mDFa1ZY4lDbTpKbjvUOA4gbh23GWRf3ZzOOw=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a64e169e396460d6b5763a1de1dd197df8421688",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"npmlock2nix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1668989938,
|
||||
"narHash": "sha256-/IxdS0AiqSN0/VEOLnnfHyi4nP17yPrkhGf6KlXVwrc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "npmlock2nix",
|
||||
"rev": "0ba0746d62974403daf717cded3f24c617622bc7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "npmlock2nix",
|
||||
"rev": "0ba0746d62974403daf717cded3f24c617622bc7",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-nix": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"jupyenv",
|
||||
"flake-compat"
|
||||
],
|
||||
"flake-utils": [
|
||||
"jupyenv",
|
||||
"flake-utils"
|
||||
],
|
||||
"mirage-opam-overlays": "mirage-opam-overlays",
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"nixpkgs"
|
||||
],
|
||||
"opam-overlays": "opam-overlays",
|
||||
"opam-repository": "opam-repository",
|
||||
"opam2json": "opam2json"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1669990974,
|
||||
"narHash": "sha256-wHhdlDUC/tBDVFBemeJPpqdIRdehKKbxbdMP0QjOhM4=",
|
||||
"owner": "tweag",
|
||||
"repo": "opam-nix",
|
||||
"rev": "75199758e1954f78286e7e79c0e3916e28b732b0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tweag",
|
||||
"repo": "opam-nix",
|
||||
"rev": "75199758e1954f78286e7e79c0e3916e28b732b0",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-overlays": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1654162756,
|
||||
"narHash": "sha256-RV68fUK+O3zTx61iiHIoS0LvIk0E4voMp+0SwRg6G6c=",
|
||||
"owner": "dune-universe",
|
||||
"repo": "opam-overlays",
|
||||
"rev": "c8f6ef0fc5272f254df4a971a47de7848cc1c8a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "dune-universe",
|
||||
"repo": "opam-overlays",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-repository": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1661161626,
|
||||
"narHash": "sha256-J3P+mXLwE2oEKTlMnx8sYRxwD/uNGSKM0AkAB7BNTxA=",
|
||||
"owner": "ocaml",
|
||||
"repo": "opam-repository",
|
||||
"rev": "54e69ff0949a3aaec0d5e3d67898bb7f279ab09f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ocaml",
|
||||
"repo": "opam-repository",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam2json": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"opam-nix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1665671715,
|
||||
"narHash": "sha256-7f75C6fIkiLzfkwLpJxlQIKf+YORGsXGV8Dr2LDDi+A=",
|
||||
"owner": "tweag",
|
||||
"repo": "opam2json",
|
||||
"rev": "32fa2dcd993a27f9e75ee46fb8b78a7cd5d05113",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tweag",
|
||||
"repo": "opam2json",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"poetry2nix": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"jupyenv",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1673926875,
|
||||
"narHash": "sha256-QOsT76Al0Igpo0u5vtQJuDSOxrocX3sTD523pLPEklc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "poetry2nix",
|
||||
"rev": "a5c454a834cd290dd4d33102ab8b4aa37d850e65",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "poetry2nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"jupyenv",
|
||||
"ihaskell",
|
||||
"hls",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"ihaskell",
|
||||
"hls",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1624971177,
|
||||
"narHash": "sha256-Amf/nBj1E77RmbSSmV+hg6YOpR+rddCbbVgo5C7BS0I=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "397f0713d007250a2c7a745e555fa16c5dc8cadb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks_2": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_4",
|
||||
"flake-utils": [
|
||||
"jupyenv",
|
||||
"flake-utils"
|
||||
],
|
||||
"gitignore": "gitignore_2",
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1674075316,
|
||||
"narHash": "sha256-0uZuAcYBpNJLxr7n5O0vhwn3rSLpUTm9M5WGgmNQ+wM=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "3e42a77571cc0463efa470dbcffa063977a521ab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pub2nix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1594192744,
|
||||
"narHash": "sha256-pDvcXSG1Mh2BpwkqAcNDJzcupV3pIAAtZJLfkiHMAz4=",
|
||||
"owner": "paulyoung",
|
||||
"repo": "pub2nix",
|
||||
"rev": "0c7ecca590fcd1616db8c6468f799ffef36c85e9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "paulyoung",
|
||||
"repo": "pub2nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"jupyenv": "jupyenv",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"jupyenv",
|
||||
"flake-utils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"jupyenv",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1674008920,
|
||||
"narHash": "sha256-ugwPxKjvmJ5GpzN/MHg8tuhe8nYi3SbJm5nWNy7CB0Q=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "eecc44934a0f6c02c02856b38bd3b6af3bec0870",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
43
flake.nix
Normal file
43
flake.nix
Normal file
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
description = "Your jupyenv project";
|
||||
|
||||
nixConfig.extra-substituters = [
|
||||
"https://tweag-jupyter.cachix.org"
|
||||
];
|
||||
nixConfig.extra-trusted-public-keys = [
|
||||
"tweag-jupyter.cachix.org-1:UtNH4Zs6hVUFpFBTLaA4ejYavPo5EFFqgd7G7FxGW9g="
|
||||
];
|
||||
|
||||
inputs.flake-compat.url = "github:edolstra/flake-compat";
|
||||
inputs.flake-compat.flake = false;
|
||||
inputs.flake-utils.url = "github:numtide/flake-utils";
|
||||
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
inputs.jupyenv.url = "github:tweag/jupyenv";
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
flake-compat,
|
||||
flake-utils,
|
||||
nixpkgs,
|
||||
jupyenv,
|
||||
...
|
||||
} @ inputs:
|
||||
flake-utils.lib.eachSystem
|
||||
[
|
||||
flake-utils.lib.system.x86_64-linux
|
||||
]
|
||||
(
|
||||
system: let
|
||||
inherit (jupyenv.lib.${system}) mkJupyterlabNew;
|
||||
jupyterlab = mkJupyterlabNew ({...}: {
|
||||
nixpkgs = inputs.nixpkgs;
|
||||
imports = [(import ./kernels.nix)];
|
||||
});
|
||||
in rec {
|
||||
packages = {inherit jupyterlab;};
|
||||
packages.default = jupyterlab;
|
||||
apps.default.program = "${jupyterlab}/bin/jupyter-lab";
|
||||
apps.default.type = "app";
|
||||
}
|
||||
);
|
||||
}
|
12
kernels.nix
Normal file
12
kernels.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{pkgs, ...}: {
|
||||
kernel.python.scientific = {
|
||||
enable = true;
|
||||
extraPackages = ps: [
|
||||
ps.numpy
|
||||
ps.pandas
|
||||
ps.matplotlib
|
||||
ps.networkx
|
||||
ps.altair
|
||||
];
|
||||
};
|
||||
}
|
649
zusammenfassung.ipynb
Normal file
649
zusammenfassung.ipynb
Normal file
|
@ -0,0 +1,649 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "83885e86-1ccb-46ec-bee9-a33f3b541569",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Zusammenfassung der Analysen vom Hackathon für die Webside\n",
|
||||
"\n",
|
||||
"- womöglich zur Darstellung auf der Webside\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"id": "9bd1686f-9bbc-4c05-a5f5-e0c4ce653fb2",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import numpy as np\n",
|
||||
"import pandas as pd\n",
|
||||
"import altair as alt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "81780c9a-7721-438b-9726-ff5a70910ce8",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Daten aufbereitung\n",
|
||||
"\n",
|
||||
"Dump der Datenbank vom 25.03.2023. Die verschiedene Tabellen der Datenbank werden einzeln eingelesen. Zusätzlich werden alle direkt zu einem Tweet zugehörige Information in ein Datenobjekt gesammelt. Die Informationen zu den GIS-Daten zu den einzelnen Polizeistadtion (\"police_stations\") sind noch unvollständig und müssen gegebenfalls nocheinmal überprüft werden.\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"id": "e312a975-3921-44ee-a7c5-37736678bc3f",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>tweet_id</th>\n",
|
||||
" <th>measured_at</th>\n",
|
||||
" <th>like_count</th>\n",
|
||||
" <th>reply_count</th>\n",
|
||||
" <th>retweet_count</th>\n",
|
||||
" <th>quote_count</th>\n",
|
||||
" <th>is_deleted</th>\n",
|
||||
" <th>tweet_text</th>\n",
|
||||
" <th>created_at</th>\n",
|
||||
" <th>user_id</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>1496955054712045581</td>\n",
|
||||
" <td>2022-02-28 22:42:26</td>\n",
|
||||
" <td>13</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>2</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>Auch wir schließen uns dem Apell an! \\n\\n#Ukra...</td>\n",
|
||||
" <td>2022-02-24 21:07:51</td>\n",
|
||||
" <td>773438463068766208</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>1496957213516214277</td>\n",
|
||||
" <td>2022-02-28 22:42:26</td>\n",
|
||||
" <td>2</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>@BWeltenbummler Sehr schwer zu sagen. Die Evak...</td>\n",
|
||||
" <td>2022-02-24 21:16:26</td>\n",
|
||||
" <td>2397974054</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>1496963501201539073</td>\n",
|
||||
" <td>2022-02-28 22:42:26</td>\n",
|
||||
" <td>-1</td>\n",
|
||||
" <td>-1</td>\n",
|
||||
" <td>-1</td>\n",
|
||||
" <td>-1</td>\n",
|
||||
" <td>1</td>\n",
|
||||
" <td>Halten Sie durch – die Evakuierung ist fast ab...</td>\n",
|
||||
" <td>2022-02-24 21:41:25</td>\n",
|
||||
" <td>2398002414</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>1496963771054825472</td>\n",
|
||||
" <td>2022-02-28 23:42:27</td>\n",
|
||||
" <td>142</td>\n",
|
||||
" <td>7</td>\n",
|
||||
" <td>8</td>\n",
|
||||
" <td>3</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>Halten Sie durch – die Evakuierung ist fast ab...</td>\n",
|
||||
" <td>2022-02-24 21:42:29</td>\n",
|
||||
" <td>2398002414</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>1496965696907104258</td>\n",
|
||||
" <td>2022-02-28 23:42:27</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>11</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>0</td>\n",
|
||||
" <td>RT @drkberlin_iuk: 🚨 In enger Abstimmung mit d...</td>\n",
|
||||
" <td>2022-02-24 21:50:09</td>\n",
|
||||
" <td>2398002414</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" tweet_id measured_at like_count reply_count \\\n",
|
||||
"0 1496955054712045581 2022-02-28 22:42:26 13 0 \n",
|
||||
"1 1496957213516214277 2022-02-28 22:42:26 2 0 \n",
|
||||
"2 1496963501201539073 2022-02-28 22:42:26 -1 -1 \n",
|
||||
"3 1496963771054825472 2022-02-28 23:42:27 142 7 \n",
|
||||
"4 1496965696907104258 2022-02-28 23:42:27 0 0 \n",
|
||||
"\n",
|
||||
" retweet_count quote_count is_deleted \\\n",
|
||||
"0 2 0 0 \n",
|
||||
"1 0 0 0 \n",
|
||||
"2 -1 -1 1 \n",
|
||||
"3 8 3 0 \n",
|
||||
"4 11 0 0 \n",
|
||||
"\n",
|
||||
" tweet_text created_at \\\n",
|
||||
"0 Auch wir schließen uns dem Apell an! \\n\\n#Ukra... 2022-02-24 21:07:51 \n",
|
||||
"1 @BWeltenbummler Sehr schwer zu sagen. Die Evak... 2022-02-24 21:16:26 \n",
|
||||
"2 Halten Sie durch – die Evakuierung ist fast ab... 2022-02-24 21:41:25 \n",
|
||||
"3 Halten Sie durch – die Evakuierung ist fast ab... 2022-02-24 21:42:29 \n",
|
||||
"4 RT @drkberlin_iuk: 🚨 In enger Abstimmung mit d... 2022-02-24 21:50:09 \n",
|
||||
"\n",
|
||||
" user_id \n",
|
||||
"0 773438463068766208 \n",
|
||||
"1 2397974054 \n",
|
||||
"2 2398002414 \n",
|
||||
"3 2398002414 \n",
|
||||
"4 2398002414 "
|
||||
]
|
||||
},
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tweets_meta = pd.read_csv(\"data/tweets.csv\")\n",
|
||||
"tweets_time = pd.read_csv(\"data/tweets-1679742620302.csv\")\n",
|
||||
"tweets_text = pd.read_csv(\"data/tweets-1679742698645.csv\")\n",
|
||||
"tweets_user = pd.read_csv(\"data/tweets-1679742702794.csv\"\n",
|
||||
" ).rename(columns = {\"username\":\"handle\", # rename columns\n",
|
||||
" \"handle\": \"username\"})\n",
|
||||
"tweets_user = tweets_user.assign(handle = tweets_user['handle'].str.lower()) # convert handles to lower case\n",
|
||||
"tweets_combined = pd.merge(tweets_time, # merge the two tweet related data frames\n",
|
||||
" tweets_text, \n",
|
||||
" how = 'inner', \n",
|
||||
" on = 'tweet_id'\n",
|
||||
" ).drop(['id'], # drop unascessary id column (redundant to index)\n",
|
||||
" axis = 1)\n",
|
||||
"tweets_combined = tweets_combined.assign(measured_at = pd.to_datetime(tweets_combined['measured_at']), # change date to date format\n",
|
||||
" created_at = pd.to_datetime(tweets_combined['created_at']))\n",
|
||||
"police_stations = pd.read_csv(\"data/polizei_accounts_geo.csv\", sep = \"\\t\" # addiditional on police stations\n",
|
||||
" ).rename(columns = {\"Polizei Account\": \"handle\"})\n",
|
||||
"tweets_combined.head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "91dfb8bb-15dc-4b2c-9c5f-3eab18d78ef8",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"### Adjazenzmatrix mentions\n",
|
||||
" \n",
|
||||
"Information, welche nicht direkt enthalten ist: welche Accounts werden erwähnt. Ist nur im Tweet mit @handle gekennzeichnet."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 53,
|
||||
"id": "5d8bf730-3c8f-4143-b405-c95f1914f54b",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"0 Auch wir schließen uns dem Apell an! \\n\\n#Ukra...\n",
|
||||
"1 @BWeltenbummler Sehr schwer zu sagen. Die Evak...\n",
|
||||
"2 Halten Sie durch – die Evakuierung ist fast ab...\n",
|
||||
"3 Halten Sie durch – die Evakuierung ist fast ab...\n",
|
||||
"4 RT @drkberlin_iuk: 🚨 In enger Abstimmung mit d...\n",
|
||||
"Name: tweet_text, dtype: object"
|
||||
]
|
||||
},
|
||||
"execution_count": 53,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# TODO"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "0c242090-0748-488c-b604-f521030f468f",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"## Metadaten \n",
|
||||
"\n",
|
||||
"Welche Daten bilden die Grundlage?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"id": "0e5eb455-6b12-4572-8f5e-f328a94bd797",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"hashtag 157145\n",
|
||||
"url 88322\n",
|
||||
"mention 36815\n",
|
||||
"Name: entity_type, dtype: int64"
|
||||
]
|
||||
},
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tweets_meta[\"entity_type\"].value_counts()\n",
|
||||
"# tweets_meta[tweets_meta['entity_type'] == \"mention\"]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ef440301-cf89-4e80-8801-eb853d636190",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"Insgesamt haben wir 84794 einzigartige Tweets:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"id": "5a438e7f-8735-40bb-b450-2ce168f0f67a",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"84794"
|
||||
]
|
||||
},
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tweets_combined[\"tweet_id\"].value_counts().shape[0] # Anzahl an Tweets"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"id": "4f1e8c6c-3610-436e-899e-4d0307259230",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Die Tweets wurden vom 2022-02-24 bis zum: 2023-03-16 gesammelt. Also genau insgesamt: 384 Tage.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print(\"Die Tweets wurden vom \", tweets_combined['created_at'].min().date(), \"bis zum:\", tweets_combined['created_at'].max().date(), \"gesammelt.\", \"Also genau insgesamt:\", (tweets_combined['created_at'].max() - tweets_combined['created_at'].min()).days, \"Tage.\")\n",
|
||||
"# tweets_combined[tweets_combined['created_at'] == tweets_combined['created_at'].max()] # Tweets vom letzten Tag"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "d8b47a60-1535-4d03-913a-73e897bc18df",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"Welche Polizei Accounts haben am meisten getweetet?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 43,
|
||||
"id": "9373552e-6baf-46df-ae16-c63603e20a83",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div>\n",
|
||||
"<style scoped>\n",
|
||||
" .dataframe tbody tr th:only-of-type {\n",
|
||||
" vertical-align: middle;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe tbody tr th {\n",
|
||||
" vertical-align: top;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" .dataframe thead th {\n",
|
||||
" text-align: right;\n",
|
||||
" }\n",
|
||||
"</style>\n",
|
||||
"<table border=\"1\" class=\"dataframe\">\n",
|
||||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>handle</th>\n",
|
||||
" <th>count</th>\n",
|
||||
" <th>Name</th>\n",
|
||||
" <th>Typ</th>\n",
|
||||
" <th>Bundesland</th>\n",
|
||||
" <th>Stadt</th>\n",
|
||||
" <th>LAT</th>\n",
|
||||
" <th>LONG</th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>11</th>\n",
|
||||
" <td>polizei_ffm</td>\n",
|
||||
" <td>2993</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>polizei_nrw_do</td>\n",
|
||||
" <td>2860</td>\n",
|
||||
" <td>Polizei NRW DO</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>Nordrhein-Westfalen</td>\n",
|
||||
" <td>Dortmund</td>\n",
|
||||
" <td>51.5142273</td>\n",
|
||||
" <td>7.4652789</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>polizeisachsen</td>\n",
|
||||
" <td>2700</td>\n",
|
||||
" <td>Polizei Sachsen</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>Sachsen</td>\n",
|
||||
" <td>Dresden</td>\n",
|
||||
" <td>51.0493286</td>\n",
|
||||
" <td>13.7381437</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>91</th>\n",
|
||||
" <td>polizeibb</td>\n",
|
||||
" <td>2310</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>61</th>\n",
|
||||
" <td>polizeihamburg</td>\n",
|
||||
" <td>2093</td>\n",
|
||||
" <td>Polizei Hamburg</td>\n",
|
||||
" <td>Polizei</td>\n",
|
||||
" <td>Hamburg</td>\n",
|
||||
" <td>Hamburg</td>\n",
|
||||
" <td>53.550341</td>\n",
|
||||
" <td>10.000654</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" handle count Name Typ Bundesland \\\n",
|
||||
"11 polizei_ffm 2993 NaN NaN NaN \n",
|
||||
"3 polizei_nrw_do 2860 Polizei NRW DO Polizei Nordrhein-Westfalen \n",
|
||||
"0 polizeisachsen 2700 Polizei Sachsen Polizei Sachsen \n",
|
||||
"91 polizeibb 2310 NaN NaN NaN \n",
|
||||
"61 polizeihamburg 2093 Polizei Hamburg Polizei Hamburg \n",
|
||||
"\n",
|
||||
" Stadt LAT LONG \n",
|
||||
"11 NaN NaN NaN \n",
|
||||
"3 Dortmund 51.5142273 7.4652789 \n",
|
||||
"0 Dresden 51.0493286 13.7381437 \n",
|
||||
"91 NaN NaN NaN \n",
|
||||
"61 Hamburg 53.550341 10.000654 "
|
||||
]
|
||||
},
|
||||
"execution_count": 43,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tweets_agg = tweets_combined.merge(tweets_user,\n",
|
||||
" on = \"user_id\"\n",
|
||||
" ).groupby(by = [\"user_id\", \"handle\", \"username\"]\n",
|
||||
" )[\"user_id\"].aggregate(['count']\n",
|
||||
" ).merge(police_stations, \n",
|
||||
" on = \"handle\",\n",
|
||||
" how = \"left\"\n",
|
||||
" ).sort_values(['count'], \n",
|
||||
" ascending=False)\n",
|
||||
"tweets_agg.shape\n",
|
||||
"activy_police_vis = tweets_agg[0:50]\n",
|
||||
"activy_police_vis.headd()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "9cf5f544-706b-41af-b785-7023f04e3ecb",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"Visualisierung aktivste Polizeistadtionen:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 47,
|
||||
"id": "b1c39196-d1cc-4f82-8e01-7529e7b3046f",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"\n",
|
||||
"<div id=\"altair-viz-a660bd38b72240eaae654b5e471932a6\"></div>\n",
|
||||
"<script type=\"text/javascript\">\n",
|
||||
" var VEGA_DEBUG = (typeof VEGA_DEBUG == \"undefined\") ? {} : VEGA_DEBUG;\n",
|
||||
" (function(spec, embedOpt){\n",
|
||||
" let outputDiv = document.currentScript.previousElementSibling;\n",
|
||||
" if (outputDiv.id !== \"altair-viz-a660bd38b72240eaae654b5e471932a6\") {\n",
|
||||
" outputDiv = document.getElementById(\"altair-viz-a660bd38b72240eaae654b5e471932a6\");\n",
|
||||
" }\n",
|
||||
" const paths = {\n",
|
||||
" \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
|
||||
" \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
|
||||
" \"vega-lite\": \"https://cdn.jsdelivr.net/npm//vega-lite@4.17.0?noext\",\n",
|
||||
" \"vega-embed\": \"https://cdn.jsdelivr.net/npm//vega-embed@6?noext\",\n",
|
||||
" };\n",
|
||||
"\n",
|
||||
" function maybeLoadScript(lib, version) {\n",
|
||||
" var key = `${lib.replace(\"-\", \"\")}_version`;\n",
|
||||
" return (VEGA_DEBUG[key] == version) ?\n",
|
||||
" Promise.resolve(paths[lib]) :\n",
|
||||
" new Promise(function(resolve, reject) {\n",
|
||||
" var s = document.createElement('script');\n",
|
||||
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
|
||||
" s.async = true;\n",
|
||||
" s.onload = () => {\n",
|
||||
" VEGA_DEBUG[key] = version;\n",
|
||||
" return resolve(paths[lib]);\n",
|
||||
" };\n",
|
||||
" s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
|
||||
" s.src = paths[lib];\n",
|
||||
" });\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" function showError(err) {\n",
|
||||
" outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
|
||||
" throw err;\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" function displayChart(vegaEmbed) {\n",
|
||||
" vegaEmbed(outputDiv, spec, embedOpt)\n",
|
||||
" .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
|
||||
" }\n",
|
||||
"\n",
|
||||
" if(typeof define === \"function\" && define.amd) {\n",
|
||||
" requirejs.config({paths});\n",
|
||||
" require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
|
||||
" } else {\n",
|
||||
" maybeLoadScript(\"vega\", \"5\")\n",
|
||||
" .then(() => maybeLoadScript(\"vega-lite\", \"4.17.0\"))\n",
|
||||
" .then(() => maybeLoadScript(\"vega-embed\", \"6\"))\n",
|
||||
" .catch(showError)\n",
|
||||
" .then(() => displayChart(vegaEmbed));\n",
|
||||
" }\n",
|
||||
" })({\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"data\": {\"name\": \"data-da2bacd5b3a57271f77be4dc435a345f\"}, \"mark\": \"bar\", \"encoding\": {\"x\": {\"field\": \"count\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"handle\", \"sort\": \"-x\", \"type\": \"nominal\"}}, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.17.0.json\", \"datasets\": {\"data-da2bacd5b3a57271f77be4dc435a345f\": [{\"handle\": \"polizei_ffm\", \"count\": 2993, \"Name\": null, \"Typ\": null, \"Bundesland\": null, \"Stadt\": null, \"LAT\": null, \"LONG\": null}, {\"handle\": \"polizei_nrw_do\", \"count\": 2860, \"Name\": \"Polizei NRW DO\", \"Typ\": \"Polizei\", \"Bundesland\": \"Nordrhein-Westfalen\", \"Stadt\": \"Dortmund\", \"LAT\": \"51.5142273\", \"LONG\": \"7.4652789\"}, {\"handle\": \"polizeisachsen\", \"count\": 2700, \"Name\": \"Polizei Sachsen\", \"Typ\": \"Polizei\", \"Bundesland\": \"Sachsen\", \"Stadt\": \"Dresden\", \"LAT\": \"51.0493286\", \"LONG\": \"13.7381437\"}, {\"handle\": \"polizeibb\", \"count\": 2310, \"Name\": null, \"Typ\": null, \"Bundesland\": null, \"Stadt\": null, \"LAT\": null, \"LONG\": null}, {\"handle\": \"polizeihamburg\", \"count\": 2093, \"Name\": \"Polizei Hamburg\", \"Typ\": \"Polizei\", \"Bundesland\": \"Hamburg\", \"Stadt\": \"Hamburg\", \"LAT\": \"53.550341\", \"LONG\": \"10.000654\"}, {\"handle\": \"polizeimuenchen\", \"count\": 2021, \"Name\": \"Polizei M\\u00fcnchen\", \"Typ\": \"Polizei\", \"Bundesland\": \"Bayern\", \"Stadt\": \"M\\u00fcnchen\", \"LAT\": \"48.135125\", \"LONG\": \"11.581981\"}, {\"handle\": \"polizeimfr\", \"count\": 1892, \"Name\": \"Polizei Mittelfranken\", \"Typ\": \"Polizei\", \"Bundesland\": \"Bayern\", \"Stadt\": \"N\\u00fcrnberg\", \"LAT\": \"49.453872\", \"LONG\": \"11.077298\"}, {\"handle\": \"polizeimannheim\", \"count\": 1835, \"Name\": \"Polizei Mannheim\", \"Typ\": \"Polizei\", \"Bundesland\": \"Baden-W\\u00fcrttemberg\", \"Stadt\": \"Mannheim\", \"LAT\": \"49.4892913\", \"LONG\": \"8.4673098\"}, {\"handle\": \"polizei_nrw_bi\", \"count\": 1794, \"Name\": \"Polizei NRW BI\", \"Typ\": \"Polizei\", \"Bundesland\": \"Nordrhein-Westfalen\", \"Stadt\": \"Bielefeld\", \"LAT\": \"52.0191005\", \"LONG\": \"8.531007\"}, {\"handle\": \"polizei_nrw_k\", \"count\": 1540, \"Name\": \"Polizei NRW K\", \"Typ\": \"Polizei\", \"Bundesland\": \"Nordrhein-Westfalen\", \"Stadt\": \"K\\u00f6ln\", \"LAT\": \"50.938361\", \"LONG\": \"6.959974\"}, {\"handle\": \"bremenpolizei\", \"count\": 1417, \"Name\": null, \"Typ\": null, \"Bundesland\": null, \"Stadt\": null, \"LAT\": null, \"LONG\": null}, {\"handle\": \"polizei_kl\", \"count\": 1380, \"Name\": \"Polizei Kaiserslautern\", \"Typ\": \"Polizei\", \"Bundesland\": \"Rheinland-Pfalz\", \"Stadt\": \"Kaiserslautern\", \"LAT\": \"49.4432174\", \"LONG\": \"7.7689951\"}, {\"handle\": \"polizei_md\", \"count\": 1365, \"Name\": \"Polizei Magdeburg\", \"Typ\": \"Polizei\", \"Bundesland\": \"Sachsen-Anhalt\", \"Stadt\": \"Magdeburg\", \"LAT\": \"52.1315889\", \"LONG\": \"11.6399609\"}, {\"handle\": \"polizei_ka\", \"count\": 1356, \"Name\": \"Polizei Karlsruhe\", \"Typ\": \"Polizei\", \"Bundesland\": \"Baden-W\\u00fcrttemberg\", \"Stadt\": \"Karlsruhe\", \"LAT\": \"49.0068705\", \"LONG\": \"8.4034195\"}, {\"handle\": \"polizeiberlin\", \"count\": 1351, \"Name\": null, \"Typ\": null, \"Bundesland\": null, \"Stadt\": null, \"LAT\": null, \"LONG\": null}]}}, {\"mode\": \"vega-lite\"});\n",
|
||||
"</script>"
|
||||
],
|
||||
"text/plain": [
|
||||
"alt.Chart(...)"
|
||||
]
|
||||
},
|
||||
"execution_count": 47,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"barchart = alt.Chart(activy_police_vis[0:15]).mark_bar().encode(\n",
|
||||
" x = 'count:Q',\n",
|
||||
" y = alt.Y('handle:N', sort = '-x'),\n",
|
||||
")\n",
|
||||
"barchart "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "90f686ff-93c6-44d9-9761-feb35dfe9d1d",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"source": [
|
||||
"Welche Tweets ziehen besonders viel Aufmerksamkeit auf sich?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 90,
|
||||
"id": "d0549250-b11f-4762-8500-1134c53303b4",
|
||||
"metadata": {
|
||||
"tags": []
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"0 Die Gewalt, die unsere Kolleginnen & Kollegen in der Silvesternacht erleben mussten, ist une...\n",
|
||||
"1 WICHTIGE Info:\\nÜber das Internet wird derzeit ein Video verbreitet, in dem von einem Überfall a...\n",
|
||||
"2 Die Experten gehen derzeit davon aus, dass es sich um ein absichtliches \"Fake-Video\" handelt, da...\n",
|
||||
"3 Auf unserem #A45 in #lichterfelde) befindet sich gerade diese Fundhündin. Sie wurde am Hindenbur...\n",
|
||||
"4 @nexta_tv Wir haben das Video gesichert und leiten den Sachverhalt an die zuständigen Kolleginne...\n",
|
||||
" ... \n",
|
||||
"84789 #Polizeimeldungen #Tagesticker\\n \\nAnhalt-Bitterfeld\\nhttps://t.co/tNLEzztL1o\\n \\nDessau-Roßlau\\...\n",
|
||||
"84790 Am Mittwoch erhielten wir mehrere Anrufe über einen auffälligen Pkw-Fahrer (Reifen quietschen un...\n",
|
||||
"84791 @Jonas5Luisa Kleiner Pro-Tipp von uns: Einfach mal auf den link klicken! ;)*cl\n",
|
||||
"84792 Vermisstensuche nach 27-Jährigem aus Bendorf-Mühlhofen: Wer hat Tobias Wißmann gesehen? Ein Foto...\n",
|
||||
"84793 #PolizeiNRW #Köln #Leverkusen : XXX - Infos unter https://t.co/SeWShP2tZE https://t.co/Kopy7w8W3B\n",
|
||||
"Name: tweet_text, Length: 84794, dtype: object"
|
||||
]
|
||||
},
|
||||
"execution_count": 90,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tweets_attention = tweets_combined.merge(tweets_user,\n",
|
||||
" on = \"user_id\",\n",
|
||||
" how = \"left\"\n",
|
||||
" ).merge(police_stations,\n",
|
||||
" on = \"handle\",\n",
|
||||
" how = \"left\")\n",
|
||||
"pd.options.display.max_colwidth = 100\n",
|
||||
"tweets_attention.sort_values('like_count', ascending = False).reset_index()['tweet_text']\n",
|
||||
"\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "python-scientific kernel",
|
||||
"language": "python",
|
||||
"name": "python-scientific"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.10.9"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
Loading…
Reference in a new issue