diff --git a/python_scripts/parse_wurzburg_open_data/output/wuerzburg_trees.html b/python_scripts/parse_wurzburg_open_data/output/wuerzburg_trees.html new file mode 100644 index 0000000000000000000000000000000000000000..25e21178ac3541f13a1ca0b8d137b999d73ab517 --- /dev/null +++ b/python_scripts/parse_wurzburg_open_data/output/wuerzburg_trees.html @@ -0,0 +1,803 @@ +<!DOCTYPE html> +<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.9.3/dist/leaflet.js"></script> + <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.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.9.3/dist/leaflet.css"/> + <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css"/> + <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"/> + <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.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_0a18e9f592807b7da8ad7df3701854cc { + position: relative; + width: 100.0%; + height: 100.0%; + left: 0.0%; + top: 0.0%; + } + .leaflet-container { font-size: 1rem; } + </style> + +</head> +<body> + + + <div class="folium-map" id="map_0a18e9f592807b7da8ad7df3701854cc" ></div> + +</body> +<script> + + + var map_0a18e9f592807b7da8ad7df3701854cc = L.map( + "map_0a18e9f592807b7da8ad7df3701854cc", + { + center: [0.0, 0.0], + crs: L.CRS.EPSG3857, + zoom: 1, + zoomControl: true, + preferCanvas: false, + } + ); + + + + + + var tile_layer_fa0998e64f3b93954936f33f8ee901dd = L.tileLayer( + "https://tile.openstreetmap.org/{z}/{x}/{y}.png", + {"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false} + ); + + + tile_layer_fa0998e64f3b93954936f33f8ee901dd.addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + map_0a18e9f592807b7da8ad7df3701854cc.fitBounds( + [[49.77794, 9.92724], [49.79761, 10.001541255042]], + {} + ); + + + var circle_981ebc2a4a74f3aa21e9f2d665723cf6 = L.circle( + [49.782, 9.95677], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_8baab6221ecf85d84ca4ef9d7e63be46 = L.popup({"maxWidth": "100%"}); + + + + var html_cef3a8150cf716145838b6c71ab54846 = $(`<div id="html_cef3a8150cf716145838b6c71ab54846" style="width: 100.0%; height: 100.0%;">Tree #58753 (Acer Platanoides)</div>`)[0]; + popup_8baab6221ecf85d84ca4ef9d7e63be46.setContent(html_cef3a8150cf716145838b6c71ab54846); + + + + circle_981ebc2a4a74f3aa21e9f2d665723cf6.bindPopup(popup_8baab6221ecf85d84ca4ef9d7e63be46) + ; + + + + + circle_981ebc2a4a74f3aa21e9f2d665723cf6.bindTooltip( + `<div> + Acer Platanoides + </div>`, + {"sticky": true} + ); + + + var circle_2a2d0745e95a072d4812752621496adb = L.circle( + [49.7819944, 9.95930555555555], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_3339232496f135e1c830da2233a7b6e4 = L.popup({"maxWidth": "100%"}); + + + + var html_5fd3c764b7b2fd110d624c60d157ca26 = $(`<div id="html_5fd3c764b7b2fd110d624c60d157ca26" style="width: 100.0%; height: 100.0%;">Tree #06_Ersatz_01_58753 (Acer Platanoides)</div>`)[0]; + popup_3339232496f135e1c830da2233a7b6e4.setContent(html_5fd3c764b7b2fd110d624c60d157ca26); + + + + circle_2a2d0745e95a072d4812752621496adb.bindPopup(popup_3339232496f135e1c830da2233a7b6e4) + ; + + + + + circle_2a2d0745e95a072d4812752621496adb.bindTooltip( + `<div> + Acer Platanoides + </div>`, + {"sticky": true} + ); + + + var circle_189049d3ebdbe495cea9d128ade477a4 = L.circle( + [49.7819944, 9.959305555555554], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_c27924f4412739b006ab4e20775ee887 = L.popup({"maxWidth": "100%"}); + + + + var html_fddd084bf5cd8c155b97d92dd2e51a84 = $(`<div id="html_fddd084bf5cd8c155b97d92dd2e51a84" style="width: 100.0%; height: 100.0%;">Tree #06_Ersatz_01_58753 (Acer Platanoides)</div>`)[0]; + popup_c27924f4412739b006ab4e20775ee887.setContent(html_fddd084bf5cd8c155b97d92dd2e51a84); + + + + circle_189049d3ebdbe495cea9d128ade477a4.bindPopup(popup_c27924f4412739b006ab4e20775ee887) + ; + + + + + circle_189049d3ebdbe495cea9d128ade477a4.bindTooltip( + `<div> + Acer Platanoides + </div>`, + {"sticky": true} + ); + + + var circle_b00b475545351240c12a246f965dbce8 = L.circle( + [49.7912, 9.92724], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_18282a8adabe693466654d260e9432e3 = L.popup({"maxWidth": "100%"}); + + + + var html_ba2eedc08a7bab8f91b4f1bfed898bb1 = $(`<div id="html_ba2eedc08a7bab8f91b4f1bfed898bb1" style="width: 100.0%; height: 100.0%;">Tree #65851 (Fraxinus Angustifolia Raywood)</div>`)[0]; + popup_18282a8adabe693466654d260e9432e3.setContent(html_ba2eedc08a7bab8f91b4f1bfed898bb1); + + + + circle_b00b475545351240c12a246f965dbce8.bindPopup(popup_18282a8adabe693466654d260e9432e3) + ; + + + + + circle_b00b475545351240c12a246f965dbce8.bindTooltip( + `<div> + Fraxinus Angustifolia Raywood + </div>`, + {"sticky": true} + ); + + + var circle_25635b8b27400277c5ed16d92ef1b213 = L.circle( + [49.77794, 9.93879], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_a969f5bc84ce9d6f0d934cc9a483eb02 = L.popup({"maxWidth": "100%"}); + + + + var html_21455c1c6c03e3f24b73f74b3831d772 = $(`<div id="html_21455c1c6c03e3f24b73f74b3831d772" style="width: 100.0%; height: 100.0%;">Tree #54838 (Fraxinus Ornus)</div>`)[0]; + popup_a969f5bc84ce9d6f0d934cc9a483eb02.setContent(html_21455c1c6c03e3f24b73f74b3831d772); + + + + circle_25635b8b27400277c5ed16d92ef1b213.bindPopup(popup_a969f5bc84ce9d6f0d934cc9a483eb02) + ; + + + + + circle_25635b8b27400277c5ed16d92ef1b213.bindTooltip( + `<div> + Fraxinus Ornus + </div>`, + {"sticky": true} + ); + + + var circle_d9c88bdee2db3466656cdfe372fe0d4b = L.circle( + [49.79037, 9.92953], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_adfead7649afa2476c726b17d784de1d = L.popup({"maxWidth": "100%"}); + + + + var html_5ba1c474dc319342dd9a370236ddd5b0 = $(`<div id="html_5ba1c474dc319342dd9a370236ddd5b0" style="width: 100.0%; height: 100.0%;">Tree #8971.1 (Gleditsia Triacanthos Inermis)</div>`)[0]; + popup_adfead7649afa2476c726b17d784de1d.setContent(html_5ba1c474dc319342dd9a370236ddd5b0); + + + + circle_d9c88bdee2db3466656cdfe372fe0d4b.bindPopup(popup_adfead7649afa2476c726b17d784de1d) + ; + + + + + circle_d9c88bdee2db3466656cdfe372fe0d4b.bindTooltip( + `<div> + Gleditsia Triacanthos Inermis + </div>`, + {"sticky": true} + ); + + + var circle_fc0b3beef9e9a76751cbd89ef147cafc = L.circle( + [49.7913, 9.96101], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_23194f068c635e7968cd152a2b5e1153 = L.popup({"maxWidth": "100%"}); + + + + var html_09b37e024c7841dad55eae3589fd7978 = $(`<div id="html_09b37e024c7841dad55eae3589fd7978" style="width: 100.0%; height: 100.0%;">Tree #36312 (Robinia Pseudoacacia)</div>`)[0]; + popup_23194f068c635e7968cd152a2b5e1153.setContent(html_09b37e024c7841dad55eae3589fd7978); + + + + circle_fc0b3beef9e9a76751cbd89ef147cafc.bindPopup(popup_23194f068c635e7968cd152a2b5e1153) + ; + + + + + circle_fc0b3beef9e9a76751cbd89ef147cafc.bindTooltip( + `<div> + Robinia Pseudoacacia + </div>`, + {"sticky": true} + ); + + + var circle_6140a4ff66c3b664569024f69b8798e7 = L.circle( + [49.78955, 9.93318], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_78b6f0fc9a40c6af5b6538207d1aea00 = L.popup({"maxWidth": "100%"}); + + + + var html_1f0e661408ca758a98f4742287d28478 = $(`<div id="html_1f0e661408ca758a98f4742287d28478" style="width: 100.0%; height: 100.0%;">Tree #54976 (Sophora Japonica)</div>`)[0]; + popup_78b6f0fc9a40c6af5b6538207d1aea00.setContent(html_1f0e661408ca758a98f4742287d28478); + + + + circle_6140a4ff66c3b664569024f69b8798e7.bindPopup(popup_78b6f0fc9a40c6af5b6538207d1aea00) + ; + + + + + circle_6140a4ff66c3b664569024f69b8798e7.bindTooltip( + `<div> + Sophora Japonica + </div>`, + {"sticky": true} + ); + + + var circle_d947e5e21b5bb51af172cce8e89029c0 = L.circle( + [49.79344, 9.94073], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_f4b9df3014faff570f828073c0956967 = L.popup({"maxWidth": "100%"}); + + + + var html_d7fb105b0c22dda5e2bd9eff7ca549a5 = $(`<div id="html_d7fb105b0c22dda5e2bd9eff7ca549a5" style="width: 100.0%; height: 100.0%;">Tree #23631 (Tilia Cordata Greenspire)</div>`)[0]; + popup_f4b9df3014faff570f828073c0956967.setContent(html_d7fb105b0c22dda5e2bd9eff7ca549a5); + + + + circle_d947e5e21b5bb51af172cce8e89029c0.bindPopup(popup_f4b9df3014faff570f828073c0956967) + ; + + + + + circle_d947e5e21b5bb51af172cce8e89029c0.bindTooltip( + `<div> + Tilia Cordata Greenspire + </div>`, + {"sticky": true} + ); + + + var circle_f7ab6f27123e8509994521321840c289 = L.circle( + [49.79318, 9.93319], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_66589ced6a2febc16296c0c2090049ee = L.popup({"maxWidth": "100%"}); + + + + var html_7b025c9102d00aff929e7f4e2c8726f7 = $(`<div id="html_7b025c9102d00aff929e7f4e2c8726f7" style="width: 100.0%; height: 100.0%;">Tree #5540 (Tilia Cordata Greenspire)</div>`)[0]; + popup_66589ced6a2febc16296c0c2090049ee.setContent(html_7b025c9102d00aff929e7f4e2c8726f7); + + + + circle_f7ab6f27123e8509994521321840c289.bindPopup(popup_66589ced6a2febc16296c0c2090049ee) + ; + + + + + circle_f7ab6f27123e8509994521321840c289.bindTooltip( + `<div> + Tilia Cordata Greenspire + </div>`, + {"sticky": true} + ); + + + var circle_76fcc0d4223da0e1edeb0616c9c4c0a4 = L.circle( + [49.78558, 9.95938], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_b7d6ef6f66b34a7140e5f1a3b7025b6b = L.popup({"maxWidth": "100%"}); + + + + var html_f081975dccdaf814914367f977aaff05 = $(`<div id="html_f081975dccdaf814914367f977aaff05" style="width: 100.0%; height: 100.0%;">Tree #58762 (Tilia Tomentosa Brabant)</div>`)[0]; + popup_b7d6ef6f66b34a7140e5f1a3b7025b6b.setContent(html_f081975dccdaf814914367f977aaff05); + + + + circle_76fcc0d4223da0e1edeb0616c9c4c0a4.bindPopup(popup_b7d6ef6f66b34a7140e5f1a3b7025b6b) + ; + + + + + circle_76fcc0d4223da0e1edeb0616c9c4c0a4.bindTooltip( + `<div> + Tilia Tomentosa Brabant + </div>`, + {"sticky": true} + ); + + + var circle_126a7607b2f03e5b736805b688d7bd33 = L.circle( + [49.7855, 9.95930555555555], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_9403bf09a10efa4d5c9033166b6e689b = L.popup({"maxWidth": "100%"}); + + + + var html_966faddf55491e4242b3aaf1d7ad02fb = $(`<div id="html_966faddf55491e4242b3aaf1d7ad02fb" style="width: 100.0%; height: 100.0%;">Tree #01_Ersatz_2_58762 (Tilia Tomentosa Brabant)</div>`)[0]; + popup_9403bf09a10efa4d5c9033166b6e689b.setContent(html_966faddf55491e4242b3aaf1d7ad02fb); + + + + circle_126a7607b2f03e5b736805b688d7bd33.bindPopup(popup_9403bf09a10efa4d5c9033166b6e689b) + ; + + + + + circle_126a7607b2f03e5b736805b688d7bd33.bindTooltip( + `<div> + Tilia Tomentosa Brabant + </div>`, + {"sticky": true} + ); + + + var circle_d6aed4680a1befee70bcb5a20c6367d9 = L.circle( + [49.7855, 9.959305555555554], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_59529475359321945850c1e5f7717546 = L.popup({"maxWidth": "100%"}); + + + + var html_ab2c96d585649846efe1e6ff9d222477 = $(`<div id="html_ab2c96d585649846efe1e6ff9d222477" style="width: 100.0%; height: 100.0%;">Tree #01_Ersatz_2_58762 (Tilia Tomentosa Brabant)</div>`)[0]; + popup_59529475359321945850c1e5f7717546.setContent(html_ab2c96d585649846efe1e6ff9d222477); + + + + circle_d6aed4680a1befee70bcb5a20c6367d9.bindPopup(popup_59529475359321945850c1e5f7717546) + ; + + + + + circle_d6aed4680a1befee70bcb5a20c6367d9.bindTooltip( + `<div> + Tilia Tomentosa Brabant + </div>`, + {"sticky": true} + ); + + + var circle_92a4fbca08b58e20ba6e6d2d1aefe32d = L.circle( + [49.79619, 9.93103], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_cd94c08d8b7203caddaaaca3a1b097f3 = L.popup({"maxWidth": "100%"}); + + + + var html_cd7c7a18b0400ac40b893c99d45908a7 = $(`<div id="html_cd7c7a18b0400ac40b893c99d45908a7" style="width: 100.0%; height: 100.0%;">Tree #5445 (Tilia Vulgaris Pallida)</div>`)[0]; + popup_cd94c08d8b7203caddaaaca3a1b097f3.setContent(html_cd7c7a18b0400ac40b893c99d45908a7); + + + + circle_92a4fbca08b58e20ba6e6d2d1aefe32d.bindPopup(popup_cd94c08d8b7203caddaaaca3a1b097f3) + ; + + + + + circle_92a4fbca08b58e20ba6e6d2d1aefe32d.bindTooltip( + `<div> + Tilia Vulgaris Pallida + </div>`, + {"sticky": true} + ); + + + var circle_f138b63bb165bdec4fb348efb2e319a4 = L.circle( + [49.79761, 9.9327], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_fa1c123c7cde49049c3ebe89f9f251bd = L.popup({"maxWidth": "100%"}); + + + + var html_e2dfdd45681d61ca36a488a8c963ddb4 = $(`<div id="html_e2dfdd45681d61ca36a488a8c963ddb4" style="width: 100.0%; height: 100.0%;">Tree #42374 (Tilia Vulgaris Pallida)</div>`)[0]; + popup_fa1c123c7cde49049c3ebe89f9f251bd.setContent(html_e2dfdd45681d61ca36a488a8c963ddb4); + + + + circle_f138b63bb165bdec4fb348efb2e319a4.bindPopup(popup_fa1c123c7cde49049c3ebe89f9f251bd) + ; + + + + + circle_f138b63bb165bdec4fb348efb2e319a4.bindTooltip( + `<div> + Tilia Vulgaris Pallida + </div>`, + {"sticky": true} + ); + + + var circle_4b30eec10afb6c716ec1b5eba1cc3fcf = L.circle( + [49.796, 9.93272], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_f924b9d126382d2437142ef3cc9cd0df = L.popup({"maxWidth": "100%"}); + + + + var html_16911d280d025bc6e598d098b382c957 = $(`<div id="html_16911d280d025bc6e598d098b382c957" style="width: 100.0%; height: 100.0%;">Tree #5463.1 (Ulmus New Horizon)</div>`)[0]; + popup_f924b9d126382d2437142ef3cc9cd0df.setContent(html_16911d280d025bc6e598d098b382c957); + + + + circle_4b30eec10afb6c716ec1b5eba1cc3fcf.bindPopup(popup_f924b9d126382d2437142ef3cc9cd0df) + ; + + + + + circle_4b30eec10afb6c716ec1b5eba1cc3fcf.bindTooltip( + `<div> + Ulmus New Horizon + </div>`, + {"sticky": true} + ); + + + var circle_ec87653c7e906080e4cc73fc39c4de7a = L.circle( + [49.79658, 9.94169], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_0a648d8732aa736971ac9da7fec4e28d = L.popup({"maxWidth": "100%"}); + + + + var html_81c1f01975eea1f926a26d7883a1b38b = $(`<div id="html_81c1f01975eea1f926a26d7883a1b38b" style="width: 100.0%; height: 100.0%;">Tree #58413 (Ulmus New Horizon)</div>`)[0]; + popup_0a648d8732aa736971ac9da7fec4e28d.setContent(html_81c1f01975eea1f926a26d7883a1b38b); + + + + circle_ec87653c7e906080e4cc73fc39c4de7a.bindPopup(popup_0a648d8732aa736971ac9da7fec4e28d) + ; + + + + + circle_ec87653c7e906080e4cc73fc39c4de7a.bindTooltip( + `<div> + Ulmus New Horizon + </div>`, + {"sticky": true} + ); + + + var circle_7e7cb41265abeb7939e032d272089dec = L.circle( + [49.78703, 9.92758], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_a26d6b51cdf79f04b4889d4e41e1ea8a = L.popup({"maxWidth": "100%"}); + + + + var html_630553cc36fcf0c38d2a7987e81f1f69 = $(`<div id="html_630553cc36fcf0c38d2a7987e81f1f69" style="width: 100.0%; height: 100.0%;">Tree #56822 (Ulmus Rebona)</div>`)[0]; + popup_a26d6b51cdf79f04b4889d4e41e1ea8a.setContent(html_630553cc36fcf0c38d2a7987e81f1f69); + + + + circle_7e7cb41265abeb7939e032d272089dec.bindPopup(popup_a26d6b51cdf79f04b4889d4e41e1ea8a) + ; + + + + + circle_7e7cb41265abeb7939e032d272089dec.bindTooltip( + `<div> + Ulmus Rebona + </div>`, + {"sticky": true} + ); + + + var circle_ef819b046854f73929bd0047244f67c6 = L.circle( + [49.79166, 9.93557], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_92eead152216eebd47591fb7998ef220 = L.popup({"maxWidth": "100%"}); + + + + var html_0e289200a973d461a1a3242836f141fe = $(`<div id="html_0e289200a973d461a1a3242836f141fe" style="width: 100.0%; height: 100.0%;">Tree #7023.2 (Unbekannt)</div>`)[0]; + popup_92eead152216eebd47591fb7998ef220.setContent(html_0e289200a973d461a1a3242836f141fe); + + + + circle_ef819b046854f73929bd0047244f67c6.bindPopup(popup_92eead152216eebd47591fb7998ef220) + ; + + + + + circle_ef819b046854f73929bd0047244f67c6.bindTooltip( + `<div> + Unbekannt + </div>`, + {"sticky": true} + ); + + + var circle_95292adf4a2bcdb97b7077233bf113a8 = L.circle( + [49.7916417, 9.93559444444444], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_b0937c6d814944f27329aea10fdc8b79 = L.popup({"maxWidth": "100%"}); + + + + var html_c4f1dfbf21372c17cf48622849c2cb24 = $(`<div id="html_c4f1dfbf21372c17cf48622849c2cb24" style="width: 100.0%; height: 100.0%;">Tree #05_Ersatz_3_7023.2 (Unbekannt)</div>`)[0]; + popup_b0937c6d814944f27329aea10fdc8b79.setContent(html_c4f1dfbf21372c17cf48622849c2cb24); + + + + circle_95292adf4a2bcdb97b7077233bf113a8.bindPopup(popup_b0937c6d814944f27329aea10fdc8b79) + ; + + + + + circle_95292adf4a2bcdb97b7077233bf113a8.bindTooltip( + `<div> + Unbekannt + </div>`, + {"sticky": true} + ); + + + var circle_6a3e08dba104ddfc6d29a72fae80e254 = L.circle( + [49.7916417, 9.935594444444444], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_bfeb9b4a3179d59bf3181b7936ccef98 = L.popup({"maxWidth": "100%"}); + + + + var html_0f2f9bdc7744082df31906966fe42350 = $(`<div id="html_0f2f9bdc7744082df31906966fe42350" style="width: 100.0%; height: 100.0%;">Tree #05_Ersatz_3_7023.2 (Unbekannt)</div>`)[0]; + popup_bfeb9b4a3179d59bf3181b7936ccef98.setContent(html_0f2f9bdc7744082df31906966fe42350); + + + + circle_6a3e08dba104ddfc6d29a72fae80e254.bindPopup(popup_bfeb9b4a3179d59bf3181b7936ccef98) + ; + + + + + circle_6a3e08dba104ddfc6d29a72fae80e254.bindTooltip( + `<div> + Unbekannt + </div>`, + {"sticky": true} + ); + + + var circle_8bb566179aa541464a1eea77216eda48 = L.circle( + [49.79701159928018, 10.001281499862673], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_cf8fddaf2eb30ee704ddee70031cf16b = L.popup({"maxWidth": "100%"}); + + + + var html_411da31f51ae769dffb5c8d6795c647e = $(`<div id="html_411da31f51ae769dffb5c8d6795c647e" style="width: 100.0%; height: 100.0%;">Tree #Gartenamt_Kontroll_2 (Unbekannt)</div>`)[0]; + popup_cf8fddaf2eb30ee704ddee70031cf16b.setContent(html_411da31f51ae769dffb5c8d6795c647e); + + + + circle_8bb566179aa541464a1eea77216eda48.bindPopup(popup_cf8fddaf2eb30ee704ddee70031cf16b) + ; + + + + + circle_8bb566179aa541464a1eea77216eda48.bindTooltip( + `<div> + Unbekannt + </div>`, + {"sticky": true} + ); + + + var circle_cc64310ab2e4a12ec4da4a41095551e0 = L.circle( + [49.796866164882324, 10.001541255041959], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_6d047405962da9eedd6a13f30c8f3ac0 = L.popup({"maxWidth": "100%"}); + + + + var html_7a97f17c921b1fe7ae8415e15fe5988d = $(`<div id="html_7a97f17c921b1fe7ae8415e15fe5988d" style="width: 100.0%; height: 100.0%;">Tree #Gartenamt_Kontroll_1 (Unbekannt)</div>`)[0]; + popup_6d047405962da9eedd6a13f30c8f3ac0.setContent(html_7a97f17c921b1fe7ae8415e15fe5988d); + + + + circle_cc64310ab2e4a12ec4da4a41095551e0.bindPopup(popup_6d047405962da9eedd6a13f30c8f3ac0) + ; + + + + + circle_cc64310ab2e4a12ec4da4a41095551e0.bindTooltip( + `<div> + Unbekannt + </div>`, + {"sticky": true} + ); + + + var circle_1ee5687504018e5227d1d344acaf84b9 = L.circle( + [49.7970115992802, 10.0012814998627], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_76c6af6781bfa03fed47931b34a1ce88 = L.popup({"maxWidth": "100%"}); + + + + var html_6ccac956ff6cf2fbec613c302ad43d1a = $(`<div id="html_6ccac956ff6cf2fbec613c302ad43d1a" style="width: 100.0%; height: 100.0%;">Tree #Gartenamt_Kontroll_2 (Unbekannt)</div>`)[0]; + popup_76c6af6781bfa03fed47931b34a1ce88.setContent(html_6ccac956ff6cf2fbec613c302ad43d1a); + + + + circle_1ee5687504018e5227d1d344acaf84b9.bindPopup(popup_76c6af6781bfa03fed47931b34a1ce88) + ; + + + + + circle_1ee5687504018e5227d1d344acaf84b9.bindTooltip( + `<div> + Unbekannt + </div>`, + {"sticky": true} + ); + + + var circle_e27c381673255467b8a7d647f7f7e8a3 = L.circle( + [49.7968661648823, 10.001541255042], + {"bubblingMouseEvents": true, "color": "black", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.9, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1, "radius": 50, "stroke": true, "weight": 1} + ).addTo(map_0a18e9f592807b7da8ad7df3701854cc); + + + var popup_c222b257d70bc2ac2af56a702905726f = L.popup({"maxWidth": "100%"}); + + + + var html_ed29f32c36040771e5c39c556904dcc6 = $(`<div id="html_ed29f32c36040771e5c39c556904dcc6" style="width: 100.0%; height: 100.0%;">Tree #Gartenamt_Kontroll_1 (Unbekannt)</div>`)[0]; + popup_c222b257d70bc2ac2af56a702905726f.setContent(html_ed29f32c36040771e5c39c556904dcc6); + + + + circle_e27c381673255467b8a7d647f7f7e8a3.bindPopup(popup_c222b257d70bc2ac2af56a702905726f) + ; + + + + + circle_e27c381673255467b8a7d647f7f7e8a3.bindTooltip( + `<div> + Unbekannt + </div>`, + {"sticky": true} + ); + +</script> +</html> \ No newline at end of file diff --git a/python_scripts/parse_wurzburg_open_data/parse_open_data.py b/python_scripts/parse_wurzburg_open_data/parse_open_data.py index d3c7871eb15fad3130d53bbf69aedb8e3c092dc3..7e684ac2894d8e67592d0bc8bf213e1cada169ae 100644 --- a/python_scripts/parse_wurzburg_open_data/parse_open_data.py +++ b/python_scripts/parse_wurzburg_open_data/parse_open_data.py @@ -9,10 +9,13 @@ from pathlib import Path import requests import shutil import pandas as pd +import folium from rich import print SCRIPT_DIR = Path(__file__).resolve().parent INPUT_DIR = SCRIPT_DIR / 'input' +OUTPUT_DIR = SCRIPT_DIR / 'output' +OUTPUT_DIR.mkdir(exist_ok=True) INPUT_FILE = INPUT_DIR / 'wuerzburg_trees.parquet' INPUT_URL = "https://opendata.wuerzburg.de/api/explore/v2.1/catalog/datasets/sls-klimabaeume/exports/parquet?lang=en&timezone=Europe%2FBerlin" @@ -34,12 +37,30 @@ else: df = pd.read_parquet(INPUT_FILE, engine='fastparquet') -print(df) - -interesting_columns = ['tree_number', 'species_latin', 'latitude', 'longitude'] +interactive_map = folium.Map() species = 'species_latin' coordinates = ['latitude', 'longitude'] -df[interesting_columns].drop_duplicates().groupby(species).apply(print) +interesting_columns = ['tree_number', 'species_latin', 'latitude', 'longitude'] +lat_min, lon_min, lat_max, lon_max = df[coordinates].agg(['min', 'max']).stack().values +interactive_map.fit_bounds([(lat_min, lon_min), (lat_max, lon_max)]) + +for same, grouped_df in df[interesting_columns].drop_duplicates().groupby(species): + for row in grouped_df.itertuples(): + folium.Circle( + location=[row.latitude, row.longitude], + tooltip=row.species_latin, + radius=50, # [m] + color="black", + weight=1, + fill_opacity=0.9, + opacity=1, + fill_color="green", + fill=False, # gets overridden by fill_color + popup=f"Tree #{row.tree_number} ({row.species_latin})", + ).add_to(interactive_map) + +output_map = OUTPUT_DIR / INPUT_FILE.with_suffix('.html').name +interactive_map.save(output_map) -df[interesting_columns].drop_duplicates().groupby(coordinates).apply(print) +print(f"{output_map} has been written.") diff --git a/python_scripts/parse_wurzburg_open_data/requirements.txt b/python_scripts/parse_wurzburg_open_data/requirements.txt index 5a331f5918ae18f53a4b3f1feb612d3d74764039..bcb66a268bc3cbd36bc885787e7928870745f57b 100644 --- a/python_scripts/parse_wurzburg_open_data/requirements.txt +++ b/python_scripts/parse_wurzburg_open_data/requirements.txt @@ -2,3 +2,4 @@ pandas requests fastparquet folium +rich