diff --git a/data/meta.csv b/data/meta.csv
index 5c15f3f..705196d 100644
--- a/data/meta.csv
+++ b/data/meta.csv
@@ -1,3 +1,4 @@
city_machine,city_human,contact_name,contact_mail,data_source,modules
bonn,Bonn,Open Data Bonn,opendata@bonn.de,[Open Data Bonn](https://opendata.bonn.de/dataset/treibhausgasbilanz),false
muenster,Münster,Code for Münster,muenster@codefor.de,TODO HIER BITTE NOCH MANUELL AUSFÜHRLICH WERDEN,true
+karlsruhe,Karlsruhe,OK Lab Karlsruhe,info@ok-lab-karlsruhe.de,https://transparenz.karlsruhe.de/dataset/treibhausgasbilanz-karlsruhe,false
diff --git a/generate_plots.py b/generate_plots.py
index 12e9914..21848a2 100644
--- a/generate_plots.py
+++ b/generate_plots.py
@@ -404,10 +404,12 @@ def compute_paris_budget_for_youdrawit(
# past data
if start_year["Gesamt"] > 1990:
+ # FIXME: AK consider using a different stepping, like 1 ...
while start_year["Gesamt"] % 5 != 0:
# go back in time (at most 4 years) to have a larger x-axis
start_year["Gesamt"] = start_year["Gesamt"] - 1
+ # FIXME: AK consider using a different stepping, like 1 ...
past = range(start_year["Gesamt"], 2022, 5)
# variables to write to JSON later on
@@ -442,6 +444,7 @@ def compute_paris_budget_for_youdrawit(
years_after_budget = range(climate_neutral_by + 1, 2051, 1)
for y in years_after_budget:
+ # FIXME: AK consider using a different stepping, like 1 ...
if y % 5 == 0: # print only every 5th year
paris_data["chart"]["data"].append({y: 0})
diff --git a/hugo/config.toml b/hugo/config.toml
index 4810c68..9c5f869 100644
--- a/hugo/config.toml
+++ b/hugo/config.toml
@@ -60,6 +60,12 @@ unsafe = true
[[params.klimawatch.kommunen]]
name = "Bonn"
slug = "bonn"
+ [[params.klimawatch.kommunen]]
+ name = "Karlsruhe"
+ slug = "karlsruhe"
+ [[params.klimawatch.kommunen]]
+ name = "Karlsruhe"
+ slug = "karlsruhe"
#NEUEKOMMUNE
[blackfriday]
@@ -140,7 +146,7 @@ unsafe = true
[params.contact]
show = true
- email = "ed.rofedoc@retsneum"
+ email = "ed.hctawamilk@ofni"
#phone = "123456789+"
#skype = "live:example"
#address = "P. Sherman 42, Wallaby Way, Sydney"
diff --git a/hugo/content/anleitung.md b/hugo/content/anleitung.md
index 69aa7b3..098bc61 100644
--- a/hugo/content/anleitung.md
+++ b/hugo/content/anleitung.md
@@ -108,7 +108,7 @@ Bitte nenne Deine Datei, so wie Deine Kommune heißt, aber ohne Umlaute (z.B. `m
Vergiss nicht, auch eine Datei mit Quellenangaben zu schreiben.
Dann kannst Du diese beiden Dateien entweder
-[per E-Mail an Thomas](mailto:ed.rofedoc@retsneum?subject=Klimawatch-Daten%20für%20KOMMUNE&body=Hallo%20Thomas,%0D%0A%0D%0Aim%20Anhang%20schicke%20ich%20Dir%20die%20gewünschten%20zwei%20Dateien%20%28Daten%20und%20Quellenangaben%29,%20damit%20es%20Klimawatch%20bald%20auch%20für%20MEINEKOMMUNE%20gibt.%20Als%20Ansprechpartnerin%20kannst%20Du%20gerne%20mich%20mit%20dieser%20E-Mailadresse%20nennen:%20gültige%40email.de%0D%0A%0D%0AViele%20Grüße%0D%0AMaria%20Musterfrau%0D%0A) schicken
+[per E-Mail an Klimawatch](mailto:ed.hctawamilk@ofni?subject=Klimawatch-Daten%20für%20KOMMUNE&body=Hallo%20Klimawatch,%0D%0A%0D%0Aim%20Anhang%20schicke%20ich%20Dir%20die%20gewünschten%20zwei%20Dateien%20%28Daten%20und%20Quellenangaben%29,%20damit%20es%20Klimawatch%20bald%20auch%20für%20MEINEKOMMUNE%20gibt.%20Als%20Ansprechpartnerin%20kannst%20Du%20gerne%20mich%20mit%20dieser%20E-Mailadresse%20nennen:%20gültige%40email.de%0D%0A%0D%0AViele%20Grüße%0D%0AMaria%20Musterfrau%0D%0A) schicken
oder, wenn Du Dich mit `github` auskennst, kannst Du auch gerne [einen Pull Request](https://github.com/codeformuenster/klimawatch#wie-kann-ich-die-daten-meiner-kommune-visualisieren) stellen.
(Falls Dich der letzte Teil des vorigen Satzes verwirrt, ignoriere ihn einfach
und schicke eine E-Mail).
diff --git a/hugo/content/kommunen/karlsruhe.md b/hugo/content/kommunen/karlsruhe.md
index 5871191..894ba07 100644
--- a/hugo/content/kommunen/karlsruhe.md
+++ b/hugo/content/kommunen/karlsruhe.md
@@ -8,7 +8,8 @@ layout: "kommune"
Zu Beginn bitten wir Dich, selber einzuschätzen, wie schnell Karlsruhe seine
CO2-Emissionen senken müsste, wenn wir das [Pariser Abkommen](../../paris-limits) zu Grunde legen.
-In der folgenden Grafik sind links die bisherigen Emissionen seit 2005 eingezeichnet.
+In der folgenden Grafik sind links die bisherigen Emissionen seit 2005 eingezeichnet. *(NB: Werte vor 2007 stammen vom statistischen Landesamt und wurden nach einer anderen Methode berechnet.)*
+
Was meinst Du: Bis wann müsste Karlsruhe klimaneutral sein? Benutze Deine Maus oder Deinen Finger und zeichne einfach in die Grafik!
@@ -37,12 +38,12 @@ Einige grosse Emmittenten werden dabei nur mit dem Anteil ihrer Emissionen berü
Dies betrifft z.B. das Rheinhafen-Dampfkraftwerk Karlsruhe als Erzeuger von Strom und Fernwärme und die MIRO Rafinerie als Erzeugerin von Fahrzeugkraftstoff und Fernwärme.
Die Motivation hinter dieser Art der Bilanzierung ist eine bessere Vergleichbarkeit zwischen den Kommunen.
-Nähere Informationen zur CO2-Bilanzierung finden sich in ["Klimaschutzkonzept Karlsruhe 2009"](https://www.karlsruhe.de/b3/natur_und_umwelt/klimaschutz/klimakonzept/pdf_dateien/HF_sections/content/ZZmYk9MKZfe2na/Klimaschutzkonzept_Karlsruhe_2009.pdf) Seite 127ff.
+Nähere Informationen zur CO2-Bilanzierung finden sich in ["Klimaschutzkonzept Karlsruhe 2009"](https://www.karlsruher-klimafonds.de/fileadmin/user_upload/klimafonds/Klimaschutzkonzept-2009-Endfassung.pdf) Seite 127ff.
Das Statistische Landesamt Baden-Württemberg bietet eine [Übersichtskarte mit den CO2-Emissionen aller Gemeinden](https://www.statistik-bw.de/Intermaptiv/?re=gemeinde&ags=08212000&i=18204&r=0&g=0001&afk=5&fkt=besetzung&fko=mittel) in Baden-Württemberg nach beiden Bilanzierungsarten.
Zur Einschätzung der Entwicklung der Emissionen im Land Baden-Württemberg ist ein Blick in die [Stellungnahme des Ministeriums für Umwelt, Klima und Energiewirtschaft](https://www.landtag-bw.de/files/live/sites/LTBW/files/dokumente/WP16/Drucksachen/6000/16_6083_D.pdf) auf eine Anfrage im Landtag vom 10.4.2019 hilfreich.
-Im Jahr 2021 wurde im aktualisierten [Klimakonzept](https://www.karlsruhe.de/b3/natur_und_umwelt/klimaschutz/klimakonzept.de) die CO2-Neutralität für 2040 festgeschrieben (mit einer Restemission von unter 0.5t mit Kompensation auf volle Neutralität)
+Im Jahr 2021 wurde im aktualisierten [Klimakonzept](https://www.karlsruhe.de/umwelt-klima/klimaschutz-klimaanpassung/klimaschutzaktivitaeten/klimaschutzmassnahmen-der-stadt-karlsruhe) die CO2-Neutralität für 2040 festgeschrieben (mit einer Restemission von unter 0.5t mit Kompensation auf volle Neutralität)
### Berechnung der Paris-Limits
@@ -61,16 +62,21 @@ Klimaschutz fängt beim Einzelnen an: [Mit dem CO2-Rechner des Umwelt
Doch gerade die lokale Politik vor Ort wird entscheidend sein, wenn es uns gelingen soll, den Klimawandel aufzuhalten. Dazu führte Karlsruhe vom 29.11.2019 bis zum 24.03.2020 eine Bürgerbeteiligung ["Klimaschutzkonzept Karlsruhe 2030"](https://beteiligung.karlsruhe.de/content/bbv/details/90/) durch. In diesem Rahmen reichten BürgerInnen über 1000 Vorschläge ein ([BNN Artikel](https://bnn.de/lokales/karlsruhe/buerger-reichen-ueber-1-000-vorschlaege-ein-fuer-das-karlsruher-klimaschutzkonzept-2030)). Die Bürgerbeteiligung wurde durch das [Klimabündnis Karlsruhe](https://www.klimabuendnis-karlsruhe.de/) begleitet, das sowohl Workshops zur Information der BürgerInnen durchführte, als auch [neue Vorschläge erarbeitete und veröffentlichte](https://www.klimabuendnis-karlsruhe.de/klimaschutzkonzept-erarbeitete-antraege/). Die vorgeschlagenen Maßnahmen beinhalten viele Anregungen. Ein genauerer Blick lohnt sich.
-Die Stadt Karlsruhe bietet darüber hinaus auf ihrer Webseite unter der Kategorie [Klimaschutzprojekte](https://www.karlsruhe.de/b3/natur_und_umwelt/klimaschutz/klimaprojekte.de) weitere Informationen für zahlreiche Zielgruppen.
+Die Stadt Karlsruhe bietet darüber hinaus auf ihrer Webseite unter der Kategorie [Grüne Stadt](https://www.karlsruhe.de/stadt-rathaus/so-ist-karlsruhe/innovativ-und-quer/gruene-stadt) weitere Informationen für zahlreiche Zielgruppen.
+
+## Fragen, Diskussion, Anregungen?
+
+Du erreichst OK Lab Karlsruhe unter [dieser E-Mail-Adresse](mailto:ed.ehurslrak-bal-ko@ofni)!
+
## Datenquellen
-1. CO2-Emissionen vor 2007 aus ["Klimaschutzkonzept Karlsruhe 2009" Seite 130](https://www.karlsruhe.de/b3/natur_und_umwelt/klimaschutz/klimakonzept/pdf_dateien/HF_sections/content/ZZmYk9MKZfe2na/Klimaschutzkonzept_Karlsruhe_2009.pdf)
+1. CO2-Emissionen vor 2007 aus ["Klimaschutzkonzept Karlsruhe 2009" Seite 130](https://www.karlsruher-klimafonds.de/fileadmin/user_upload/klimafonds/Klimaschutzkonzept-2009-Endfassung.pdf)
2. CO2-Emissionen ab 2007 aus dem ["Transparenzportal Karlsruhe"](https://transparenz.karlsruhe.de/dataset/7306d25b-8b18-445f-9351-6eec030c7753/resource/fd9de911-5142-4083-9d1b-5e09788022b3/download/treibhausgase.csv), Stand 18.5.2022
3. Bevölkerungsstatistik für 2019 aus dem [Statistikatlas Karlsruhe](https://web6.karlsruhe.de/Stadtentwicklung/statistik/atlas/?select=019)
4. Ziele bis 2030 bzw. 2050 [Bürgerbeteiligung zum "Klimaschutzkonzept Karlsruhe 2030"](https://beteiligung.karlsruhe.de/content/bbv/details/90/)
-Stand der Daten: 18 Mai 2022
+Stand der Daten: 27. Oktober 2023
## Wichtig
diff --git a/hugo/data/you_draw_it_berlin_verursacherbilanz.json b/hugo/data/you_draw_it_berlin_verursacherbilanz.json
index c10f206..1fe5856 100644
--- a/hugo/data/you_draw_it_berlin_verursacherbilanz.json
+++ b/hugo/data/you_draw_it_berlin_verursacherbilanz.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 32230.0,
"data": [
@@ -28,16 +28,13 @@
"2020": 18818.20300751878
},
{
- "2021": 18818.20300751878
+ "2022": 18818.20300751878
},
{
- "2026": 13081.10964537847
+ "2027": 12539.020152272955
},
{
- "2031": 7344.016283238161
- },
- {
- "2036": 1606.922921097852
+ "2032": 6259.83729702713
},
{
"2040": 0
diff --git a/hugo/data/you_draw_it_bielefeld.json b/hugo/data/you_draw_it_bielefeld.json
index 80f814c..43982c5 100644
--- a/hugo/data/you_draw_it_bielefeld.json
+++ b/hugo/data/you_draw_it_bielefeld.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 4192.1,
"data": [
@@ -28,13 +28,10 @@
"2020": 2234.522868561282
},
{
- "2021": 2234.522868561282
+ "2022": 2234.522868561282
},
{
- "2026": 1220.6652097585534
- },
- {
- "2031": 206.8075509558248
+ "2027": 1057.5601333583115
},
{
"2035": 0
diff --git a/hugo/data/you_draw_it_chemnitz.json b/hugo/data/you_draw_it_chemnitz.json
index 3e0393f..1261b32 100644
--- a/hugo/data/you_draw_it_chemnitz.json
+++ b/hugo/data/you_draw_it_chemnitz.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 3182.3,
"data": [
@@ -28,13 +28,13 @@
"2019": 1613.901941747572
},
{
- "2021": 1587.6854368932036
+ "2022": 1587.6854368932036
},
{
- "2026": 947.4056615969378
+ "2027": 851.5974167070226
},
{
- "2031": 307.12588630067194
+ "2032": 115.50939652084162
},
{
"2035": 0
diff --git a/hugo/data/you_draw_it_dortmund.json b/hugo/data/you_draw_it_dortmund.json
index d7f2d87..d416e99 100644
--- a/hugo/data/you_draw_it_dortmund.json
+++ b/hugo/data/you_draw_it_dortmund.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 6660.258,
"data": [
@@ -28,13 +28,10 @@
"2020": 3982.7548401826643
},
{
- "2021": 3982.7548401826643
+ "2022": 3982.7548401826643
},
{
- "2026": 2253.7215722968785
- },
- {
- "2031": 524.6883044110928
+ "2027": 1969.8129315407907
},
{
"2035": 0
diff --git a/hugo/data/you_draw_it_duesseldorf.json b/hugo/data/you_draw_it_duesseldorf.json
index 8171333..15c1094 100644
--- a/hugo/data/you_draw_it_duesseldorf.json
+++ b/hugo/data/you_draw_it_duesseldorf.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 8655.9,
"data": [
@@ -28,13 +28,13 @@
"2017": 4182.239739413664
},
{
- "2021": 3781.513517915271
+ "2022": 3781.513517915271
},
{
- "2026": 2398.144364285169
+ "2027": 2282.5541637542356
},
{
- "2031": 1014.7752106550665
+ "2032": 783.5948095931994
},
{
"2035": 0
diff --git a/hugo/data/you_draw_it_hamburg.json b/hugo/data/you_draw_it_hamburg.json
index 994dd64..f3bcc31 100644
--- a/hugo/data/you_draw_it_hamburg.json
+++ b/hugo/data/you_draw_it_hamburg.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 22775.5,
"data": [
@@ -28,10 +28,10 @@
"2020": 16606.54580152675
},
{
- "2021": 16606.54580152675
+ "2022": 16606.54580152675
},
{
- "2026": 5792.361696872618
+ "2027": 2336.3219618766543
},
{
"2030": 0
diff --git a/hugo/data/you_draw_it_karlsruhe.json b/hugo/data/you_draw_it_karlsruhe.json
index b4712c6..0ce862f 100644
--- a/hugo/data/you_draw_it_karlsruhe.json
+++ b/hugo/data/you_draw_it_karlsruhe.json
@@ -4,19 +4,25 @@
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
"lastPointShownAt": 2022,
"y_unit": "kt",
- "yAxisMax": 2726.497158,
+ "yAxisMax": 3603.9484173,
"data": [
{
- "2015": 2566.1439059999975
+ "2005": 3157.6632195933926
},
{
- "2020": 2297.3567960000073
+ "2010": 2752.285999
},
{
- "2022": 2297.3567960000073
+ "2015": 2551.016186
},
{
- "2027": 924.7652582978096
+ "2020": 2261.6686895384482
+ },
+ {
+ "2022": 2261.6686895384482
+ },
+ {
+ "2027": 950.642828414529
},
{
"2030": 0
diff --git a/hugo/data/you_draw_it_koeln.json b/hugo/data/you_draw_it_koeln.json
index fd8c014..24175cd 100644
--- a/hugo/data/you_draw_it_koeln.json
+++ b/hugo/data/you_draw_it_koeln.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 13343.0,
"data": [
@@ -28,10 +28,10 @@
"2020": 9398.717434869759
},
{
- "2021": 9398.717434869759
+ "2022": 9398.717434869759
},
{
- "2026": 3444.67330095751
+ "2027": 1599.2798503762015
},
{
"2030": 0
diff --git a/hugo/data/you_draw_it_landau.json b/hugo/data/you_draw_it_landau.json
index 71be8ac..4d42bcb 100644
--- a/hugo/data/you_draw_it_landau.json
+++ b/hugo/data/you_draw_it_landau.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 412.5,
"data": [
@@ -28,13 +28,10 @@
"2020": 334.61538461538476
},
{
- "2021": 334.61538461538476
+ "2022": 334.61538461538476
},
{
- "2026": 182.14086425605336
- },
- {
- "2031": 29.66634389672197
+ "2027": 149.8179829724887
},
{
"2035": 0
diff --git a/hugo/data/you_draw_it_leipzig.json b/hugo/data/you_draw_it_leipzig.json
index 244db5b..eecbbf1 100644
--- a/hugo/data/you_draw_it_leipzig.json
+++ b/hugo/data/you_draw_it_leipzig.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 6933.3693,
"data": [
@@ -28,16 +28,16 @@
"2020": 2739.8099156176904
},
{
- "2021": 2739.8099156176904
+ "2022": 2739.8099156176904
},
{
- "2026": 2010.7908018374042
+ "2027": 1968.7238262068993
},
{
- "2031": 1281.7716880571181
+ "2032": 1197.6377367961081
},
{
- "2036": 552.7525742768321
+ "2037": 426.5516473853172
},
{
"2040": 0
diff --git a/hugo/data/you_draw_it_moers.json b/hugo/data/you_draw_it_moers.json
index 271276d..a9540ba 100644
--- a/hugo/data/you_draw_it_moers.json
+++ b/hugo/data/you_draw_it_moers.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 466.0062,
"data": [
@@ -16,19 +16,19 @@
"2020": 445.63980000000083
},
{
- "2021": 445.63980000000083
+ "2022": 445.63980000000083
},
{
- "2026": 337.38524098839423
+ "2027": 322.7894165961119
},
{
- "2031": 229.13068197678768
+ "2032": 199.93903319222295
},
{
- "2036": 120.87612296518114
+ "2037": 77.08864978833401
},
{
- "2041": 12.621563953574537
+ "2040": 0
},
{
"2045": 0
diff --git a/hugo/data/you_draw_it_muenchen.json b/hugo/data/you_draw_it_muenchen.json
index 90fe2f2..ec515a1 100644
--- a/hugo/data/you_draw_it_muenchen.json
+++ b/hugo/data/you_draw_it_muenchen.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 18845.2,
"data": [
@@ -28,10 +28,13 @@
"2020": 10619.992013690819
},
{
- "2021": 10619.992013690819
+ "2022": 10619.992013690819
},
{
- "2026": 5394.306459689031
+ "2027": 4420.797473289659
+ },
+ {
+ "2030": 0
},
{
"2035": 0
diff --git a/hugo/data/you_draw_it_paderborn.json b/hugo/data/you_draw_it_paderborn.json
index 8b81769..b3b731d 100644
--- a/hugo/data/you_draw_it_paderborn.json
+++ b/hugo/data/you_draw_it_paderborn.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 1441.0,
"data": [
@@ -19,10 +19,7 @@
"2020": 1406.4404761904734
},
{
- "2021": 1406.4404761904734
- },
- {
- "2026": 456.1822530723874
+ "2022": 1406.4404761904734
},
{
"2030": 0
diff --git a/hugo/data/you_draw_it_ulm.json b/hugo/data/you_draw_it_ulm.json
index 7748641..edca1eb 100644
--- a/hugo/data/you_draw_it_ulm.json
+++ b/hugo/data/you_draw_it_ulm.json
@@ -2,7 +2,7 @@
"chart_id": "you-draw-it",
"chart": {
"heading": "Wie sollte sich der CO2-Ausstoß entwickeln?",
- "lastPointShownAt": 2021,
+ "lastPointShownAt": 2022,
"y_unit": "kt",
"yAxisMax": 1402.5,
"data": [
@@ -19,10 +19,10 @@
"2020": 1117.5921787709485
},
{
- "2021": 1117.5921787709485
+ "2022": 1117.5921787709485
},
{
- "2026": 415.0410231313074
+ "2027": 197.65885897280566
},
{
"2030": 0
diff --git a/hugo/layouts/shortcodes/paris_berlin_verursacherbilanz.html b/hugo/layouts/shortcodes/paris_berlin_verursacherbilanz.html
index 3de1ec4..f4223da 100644
--- a/hugo/layouts/shortcodes/paris_berlin_verursacherbilanz.html
+++ b/hugo/layouts/shortcodes/paris_berlin_verursacherbilanz.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_bielefeld.html b/hugo/layouts/shortcodes/paris_bielefeld.html
index 84163b9..8895ba9 100644
--- a/hugo/layouts/shortcodes/paris_bielefeld.html
+++ b/hugo/layouts/shortcodes/paris_bielefeld.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_chemnitz.html b/hugo/layouts/shortcodes/paris_chemnitz.html
index 7dce81e..4628f74 100644
--- a/hugo/layouts/shortcodes/paris_chemnitz.html
+++ b/hugo/layouts/shortcodes/paris_chemnitz.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_dortmund.html b/hugo/layouts/shortcodes/paris_dortmund.html
index b94a55b..e47aacd 100644
--- a/hugo/layouts/shortcodes/paris_dortmund.html
+++ b/hugo/layouts/shortcodes/paris_dortmund.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_duesseldorf.html b/hugo/layouts/shortcodes/paris_duesseldorf.html
index 9d12ebf..e02d7e6 100644
--- a/hugo/layouts/shortcodes/paris_duesseldorf.html
+++ b/hugo/layouts/shortcodes/paris_duesseldorf.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_hamburg.html b/hugo/layouts/shortcodes/paris_hamburg.html
index d44477c..eba8c9a 100644
--- a/hugo/layouts/shortcodes/paris_hamburg.html
+++ b/hugo/layouts/shortcodes/paris_hamburg.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_karlsruhe.html b/hugo/layouts/shortcodes/paris_karlsruhe.html
index 9b67748..1e54621 100644
--- a/hugo/layouts/shortcodes/paris_karlsruhe.html
+++ b/hugo/layouts/shortcodes/paris_karlsruhe.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_koeln.html b/hugo/layouts/shortcodes/paris_koeln.html
index 2af92c3..6134f84 100644
--- a/hugo/layouts/shortcodes/paris_koeln.html
+++ b/hugo/layouts/shortcodes/paris_koeln.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_landau.html b/hugo/layouts/shortcodes/paris_landau.html
index 102ba84..363ceaa 100644
--- a/hugo/layouts/shortcodes/paris_landau.html
+++ b/hugo/layouts/shortcodes/paris_landau.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_leipzig.html b/hugo/layouts/shortcodes/paris_leipzig.html
index d366796..8d3b859 100644
--- a/hugo/layouts/shortcodes/paris_leipzig.html
+++ b/hugo/layouts/shortcodes/paris_leipzig.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_moers.html b/hugo/layouts/shortcodes/paris_moers.html
index f1a19ef..bb719e0 100644
--- a/hugo/layouts/shortcodes/paris_moers.html
+++ b/hugo/layouts/shortcodes/paris_moers.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_muenchen.html b/hugo/layouts/shortcodes/paris_muenchen.html
index 77bb809..42f8fd3 100644
--- a/hugo/layouts/shortcodes/paris_muenchen.html
+++ b/hugo/layouts/shortcodes/paris_muenchen.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_muenster.html b/hugo/layouts/shortcodes/paris_muenster.html
index 4525e0e..f2d1c55 100644
--- a/hugo/layouts/shortcodes/paris_muenster.html
+++ b/hugo/layouts/shortcodes/paris_muenster.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_paderborn.html b/hugo/layouts/shortcodes/paris_paderborn.html
index e1825fd..b3ca180 100644
--- a/hugo/layouts/shortcodes/paris_paderborn.html
+++ b/hugo/layouts/shortcodes/paris_paderborn.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/hugo/layouts/shortcodes/paris_ulm.html b/hugo/layouts/shortcodes/paris_ulm.html
index 190b7bd..f40dbe1 100644
--- a/hugo/layouts/shortcodes/paris_ulm.html
+++ b/hugo/layouts/shortcodes/paris_ulm.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/scripts/.gitignore b/scripts/.gitignore
new file mode 100644
index 0000000..1269488
--- /dev/null
+++ b/scripts/.gitignore
@@ -0,0 +1 @@
+data
diff --git a/scripts/fds_geolocs.py b/scripts/fds_geolocs.py
new file mode 100644
index 0000000..f7109cf
--- /dev/null
+++ b/scripts/fds_geolocs.py
@@ -0,0 +1,124 @@
+
+from geopy.geocoders import Nominatim
+import pandas as pd
+import json
+import os
+import sys
+import time
+
+
+# try to read existing geo file first
+try:
+ geofile = pd.read_json("georesults.json")
+except:
+ print("No geofile")
+ geofile = pd.DataFrame()
+
+geolocator = Nominatim(user_agent="digital-codes")
+
+useNominatim = True
+
+# https://stackoverflow.com/questions/1981349/regex-to-replace-multiple-spaces-with-a-single-space
+
+def readItem(s):
+ with open(os.sep.join([base,f"{s}.json"])) as f:
+ r = json.load(f)
+ # replace all whitespace with single blank
+ addr = " ".join(r["public_body"]["address"].split()).split(" ")
+ #print(addr)
+ # try to find PLZ in addr
+ addrOk = False
+ if not "geo" in r["public_body"].keys() or r["public_body"]["geo"] == None:
+ print("Missing geo: ",s)
+
+ #check geofile first
+ if not geofile[geofile.id == int(s)].empty:
+ item = geofile[geofile.id == int(s)]
+ coords = {"coordinates":[item.lat.values[0],item.lon.values[0]]}
+ # insert coordinates
+ r["public_body"]["geo"] = coords
+ useNominatim = False
+ else:
+ useNominatim = True
+ else:
+ # print("geo", r["public_body"]["geo"])
+ useNominatim = False
+
+ for i,p in enumerate(addr):
+ # there are wrong plz entries like 2072236 Freudenstadt
+ # check for numic first
+ if p.isnumeric():
+ if len(p) >= 5:
+ addrOk = True
+ plz = p[len(p)-5:]
+ city = addr[i+1]
+ # chcek for leading bad
+ if (city.lower() == "bad") and (len(addr) > i+1):
+ city = " ".join([addr[i+1],addr[i+2]]).strip()
+ result = {
+ "id":s,
+ #"url": f'https://fragdenstaat.de/{r["url"]}',
+ "url": "".join(["https://fragdenstaat.de",r["url"]]),
+ "plz":plz,
+ "city":city
+ }
+ if useNominatim:
+ print("Nominatim required on: ",s)
+ try:
+ print(s)
+ loc = geolocator.geocode({"postcode":result["plz"],"city":result["city"],"country":"Germany"})
+ result["lat"] = loc.latitude
+ result["lon"] = loc.longitude
+ result["geoaddr"] = loc.address
+ if not result["city"].lower() in result["geoaddr"].lower():
+ print("Suspicous:",result)
+ time.sleep(1.1)
+ except:
+ print("Failed on ",result)
+ return None
+ else:
+ # use geo field
+ if "geo" in r["public_body"].keys() and r["public_body"]["geo"] != None:
+ geo = list(r["public_body"]["geo"]["coordinates"])
+ result["lat"] = geo[1]
+ result["lon"] = geo[0]
+ result["geoaddr"] = " ".join([plz,city,"Deutschland"])
+
+ #print(f"{i},{p} {addr[i+1]}")
+ # expect city to be in geocoded result
+ # insert status from resultion field:
+## SUCCESSFUL = "successful", _("Request Successful")
+## PARTIALLY_SUCCESSFUL = "partially_successful", _("Request partially successful")
+## NOT_HELD = "not_held", _("Information not held")
+## REFUSED = "refused", _("Request refused")
+## USER_WITHDREW_COSTS = "user_withdrew_costs", _("Request was withdrawn due to costs")
+## USER_WITHDREW = "user_withdrew", _("Request was withdrawn")
+
+ if "successful" in r["resolution"]:
+ result["status"] = "solved"
+ else:
+ result["status"] = "failed"
+ return result
+
+ if not addrOk:
+ print("Invalid:",s,"-",r["public_body"]["address"])
+ return None
+
+
+
+# go to the requests
+base = os.sep.join(["data/fragdenstaat/requests"])
+requests = [x.split(".json")[0] for x in os.listdir(base)]
+
+df = pd.DataFrame()
+for s in requests:
+ r = readItem(s)
+ if r != None:
+ if df.empty:
+ df = pd.DataFrame(r,index=[0])
+ else:
+ df = df.append(r,ignore_index=True)
+
+
+
+df.to_json("georesults.json",orient="records")
diff --git a/scripts/frag_den_staat_project.py b/scripts/frag_den_staat_project.py
new file mode 100644
index 0000000..2f9b041
--- /dev/null
+++ b/scripts/frag_den_staat_project.py
@@ -0,0 +1,450 @@
+"""This script downloads all requests from https://fragdenstaat.de/projekt/klimaschutz-und-klimaanpassungskonzepte/ """
+
+import json
+import re
+from collections import namedtuple
+from pathlib import Path
+
+import pandas as pd
+import requests
+import tqdm
+
+# the base url of Frag den Staat
+API_BASE_URL: str = "https://fragdenstaat.de/api/v1"
+
+# the base path for all files
+FILE_BASE_PATH: Path = Path("data/fragdenstaat")
+
+# the keys from the message that should be in the dataframe
+MESSAGE_RELEVANT_KEYS = [
+ "id",
+ "sent",
+ "is_response",
+ "is_postal",
+ "kind",
+ "is_escalation",
+ "status",
+ "timestamp",
+ "sender",
+ "status_name",
+]
+
+# the keys from the attachments that should be in the dataframe
+ATTACHMENT_RELEVANT_KEYS = [
+ "id",
+ "name",
+ "filetype",
+ "pending",
+ "approved",
+ "redacted",
+ "is_pdf",
+ "is_image",
+ "is_irrelevant",
+ "site_url",
+ "anchor_url",
+ "file_url",
+]
+
+# a regular expression that finds valid URLs in message contents, from https://urlregex.com/
+EXTERNAL_URL_REGEX = (
+ r"http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"
+)
+
+PDF_NAME_REGEX = r"/([^/]*\.pdf)"
+
+# http content types for compressed files
+COMPRESSION_FORMATS = [
+ "application/gzip",
+ "application/vnd.rar",
+ "application/x-7z-compressed",
+ "application/zip",
+ "application/x-tar",
+]
+
+# http content types for images
+IMAGE_FORMATS = [
+ "image/bmp",
+ "image/gif",
+ "image/jpeg",
+ "image/png",
+ "image/svg+xml",
+ "image/tiff",
+ "image/webp",
+]
+
+# http content types for text files
+TEXT_FORMATS = ["application/rtf", "text/plain"]
+
+HeaderInfo = namedtuple(
+ "HeaderInfo",
+ [
+ "Content_Length",
+ "Content_Type",
+ "Content_Category",
+ "Content_Disposition_Exists",
+ "Error_Message",
+ ],
+)
+
+
+def download_raw_requests():
+ """Get the list of requests and then download each request and save the results as files"""
+ result_objects = []
+
+ # get the list of requests
+ requests_url = f"{API_BASE_URL}/request?project=278"
+
+ while requests_url:
+ # get the list of requests
+ response = requests.get(requests_url)
+
+ # check if the request was successful
+ if response.status_code != 200:
+
+ raise Exception(f"Request failed with status code {response.status_code}")
+
+ # parse content as dict
+ parsed_content = json.loads(response.content)
+
+ # iterate over all requests
+ result_objects += parsed_content["objects"]
+
+ # get the next url
+ requests_url = parsed_content["meta"]["next"]
+
+ # write to file
+ if not FILE_BASE_PATH.exists():
+ FILE_BASE_PATH.mkdir(parents=True)
+ with open(FILE_BASE_PATH / "raw_requests_list.json", "w", encoding="utf-8") as f:
+ json.dump(result_objects, f, indent=4, ensure_ascii=False)
+
+ # go through all requests and get the detail of each request
+ for result_object in tqdm.tqdm(result_objects):
+ # get the resource_uri
+ resource_uri = result_object["resource_uri"]
+
+ # download the request
+ response = requests.get(resource_uri)
+
+ # check if the request was successful
+ if response.status_code != 200:
+ raise Exception(f"Request failed with status code {response.status_code}")
+
+ # parse content as dict
+ parsed_content = json.loads(response.content)
+
+ # save the reponse as file
+ if not (FILE_BASE_PATH / "requests/").exists():
+ not (FILE_BASE_PATH / "requests/").mkdir()
+ with open(
+ FILE_BASE_PATH / "requests" / f"{parsed_content['id']}.json",
+ "w",
+ encoding="utf-8",
+ ) as f:
+ json.dump(parsed_content, f, indent=4, ensure_ascii=False)
+
+
+def summarize_messages():
+ """Read the request responses and summarize the messages and attachments of each request in tables.
+ Also look for URLs in the messages."""
+
+ result_dataframe = None
+ attachments_dataframe = None
+ urls_dict = []
+
+ for request_filepath in tqdm.tqdm(
+ list((FILE_BASE_PATH / "requests").glob(("*.json")))
+ ):
+ # load the request
+ with open(request_filepath, "r", encoding="utf-8") as f:
+ request_content = json.load(f)
+
+ # get the messages
+ for message in request_content["messages"]:
+ # filter for the relevant keys
+ keys = MESSAGE_RELEVANT_KEYS
+ if "geo" in message:
+ keys += ["geo"]
+ new_row = {key: message[key] for key in keys}
+
+ # add the request id to the row
+ new_row["request_id"] = request_content["id"]
+
+ # look for URLs in the message
+ regex_result = find_urls_in_message(request_content["id"], message)
+ if len(regex_result["urls"]) > 0:
+ for url in regex_result["urls"]:
+ url["header_info"] = summarize_url_header(url["url"])._asdict()
+
+ urls_dict.append(regex_result)
+
+ # add the number of found URLs
+ new_row["url_count"] = len(regex_result)
+
+ if result_dataframe is None:
+ # create dataframe
+ result_dataframe = pd.DataFrame(new_row, index=[0])
+ else:
+ # add the row to the dataframe
+ result_dataframe = result_dataframe.append(new_row, ignore_index=True)
+
+ # get the attachments
+ for attachment in message["attachments"]:
+ keys = ATTACHMENT_RELEVANT_KEYS
+ if "geo" in attachment:
+ keys += ["geo"]
+ new_row = {key: attachment[key] for key in keys}
+
+ # add the message id to the row
+ new_row["message_id"] = message["id"]
+
+ # add the request id to the row
+ new_row["request_id"] = request_content["id"]
+
+ if attachments_dataframe is None:
+ # create dataframe
+ attachments_dataframe = pd.DataFrame(new_row, index=[0])
+ else:
+ # add the row to the dataframe
+ attachments_dataframe = attachments_dataframe.append(
+ new_row, ignore_index=True
+ )
+
+ # change the ids to int
+ result_dataframe["id"] = result_dataframe["id"].astype(int)
+ result_dataframe["request_id"] = result_dataframe["request_id"].astype(int)
+
+ attachments_dataframe["id"] = attachments_dataframe["id"].astype(int)
+ attachments_dataframe["message_id"] = attachments_dataframe["message_id"].astype(
+ int
+ )
+ attachments_dataframe["request_id"] = attachments_dataframe["request_id"].astype(
+ int
+ )
+
+ # write to file
+ result_dataframe.to_csv(FILE_BASE_PATH / "messages.csv", index=False)
+ attachments_dataframe.to_csv(FILE_BASE_PATH / "attachments.csv", index=False)
+
+ # write as json
+ result_dataframe.to_json(
+ FILE_BASE_PATH / "messages.json", orient="records", indent=4
+ )
+ attachments_dataframe.to_json(
+ FILE_BASE_PATH / "attachments.json", orient="records", indent=4
+ )
+
+ with open(FILE_BASE_PATH / "urls.json", "w", encoding="utf-8") as f:
+ json.dump(urls_dict, f, indent=4, ensure_ascii=False)
+
+
+def find_urls_in_message(request_id: int, message: dict) -> dict:
+ """Find all URLs in a message and return a dict with the URLs and the message/request ids
+
+ Args:
+ request_id (int): The request id
+ message (dict): The message, which has a key "content" and a key "id"
+
+ Returns:
+ dict: A dict with the URLs and the message/request ids
+ """
+
+ # look for URLs in the message
+ regex_result = re.findall(EXTERNAL_URL_REGEX, message["content"])
+
+ # ignore frag den staat URLs
+ # we have frequent errors like so:
+ # Could not get header information for https://www.hochwasser.baden-wuerttemberg.de
+ # Could not get header information for http://www.hlnug.de>
+ # Could not get header information for https://lhw.sachsen-anhalt.de)
+ # so split by <,> and )
+ regex_result = [
+ result.split(">")[0].split("<")[0].split(")")[0]
+ for result in regex_result
+ if not result.startswith("https://fragdenstaat.de")
+ ]
+
+ # collect in a dict
+ return {
+ "request_id": int(request_id),
+ "message_id": int(message["id"]),
+ "urls": [{"url_id": i, "url": url} for i, url in enumerate(regex_result)],
+ }
+
+
+def summarize_url_header(url: str) -> HeaderInfo:
+ """Request the header of a URL and return a HeaderInfo object, containing Content Length and
+ Type, Type category, Disposition Extras and error messages
+ Original from https://stackoverflow.com/questions/65797228/how-to-check-if-a-url-is-downloadable-in-requests
+ """
+
+ try:
+ headers = requests.head(url).headers
+ except Exception as e:
+ print(f"Could not get header information for {url}")
+ return HeaderInfo(
+ Content_Length=None,
+ Content_Type=None,
+ Content_Category=None,
+ Content_Disposition_Exists=None,
+ Error_Message=str(e),
+ )
+
+ Content_Length = [
+ value for key, value in headers.items() if key == "Content-Length"
+ ]
+ if len(Content_Length) > 0:
+ Content_Length = int("".join(map(str, Content_Length)))
+ else:
+ Content_Length = 0
+
+ Content_Disposition_Exists = bool(
+ {key: value for key, value in headers.items() if key == "Content_Disposition"}
+ )
+ if Content_Disposition_Exists is True:
+ # TODO do something with the file, but this almost never happens
+ return HeaderInfo(
+ Content_Length=Content_Length,
+ Content_Type=None,
+ Content_Category=None,
+ Content_Disposition_Exists=Content_Disposition_Exists,
+ Error_Message=None,
+ )
+ else:
+ # determine the content type
+ Content_Type = list(
+ {value for key, value in headers.items() if key == "Content-Type"}
+ )
+
+ Content_Category = None
+
+ if any(
+ [
+ file_format
+ for file_format in COMPRESSION_FORMATS
+ if file_format in Content_Type
+ ]
+ ):
+ Content_Category = "compressed"
+
+ elif any(
+ [
+ file_format
+ for file_format in IMAGE_FORMATS
+ if file_format in Content_Type
+ ]
+ ):
+ Content_Category = "image"
+
+ elif any(
+ [file_format for file_format in TEXT_FORMATS if file_format in Content_Type]
+ ):
+ Content_Category = "text"
+
+ elif "application/pdf" in Content_Type:
+ Content_Category = "pdf"
+
+ elif "text/csv" in Content_Type:
+ Content_Category = "csv"
+
+ return HeaderInfo(
+ Content_Length=Content_Length,
+ Content_Type=Content_Type,
+ Content_Category=Content_Category,
+ Content_Disposition_Exists=Content_Disposition_Exists,
+ Error_Message=None,
+ )
+
+
+def download_files():
+ """Download files from the URLs in the attachments and message contents."""
+
+ # create target folder
+ target_folder = FILE_BASE_PATH / "files"
+ target_folder.mkdir(parents=True, exist_ok=True)
+
+ ## ATTACHMENTS
+ print("Downloading attachments...")
+ # read the dataframe
+ attachments_dataframe = pd.read_csv(FILE_BASE_PATH / "attachments.csv")
+
+ # iterate over the dataframe
+ for _, row in tqdm.tqdm(
+ attachments_dataframe.iterrows(), total=len(attachments_dataframe)
+ ):
+ # get the url
+ url = row["file_url"]
+ file_path = target_folder / f"a_{row['id']}_{row['name']}"
+
+ # skip if file already exists
+ if file_path.exists():
+ continue
+
+ # download the file
+ try:
+ response = requests.get(url, stream=True)
+ with open(file_path, "wb") as f:
+ for chunk in response.iter_content(chunk_size=8096):
+ if chunk: # filter out keep-alive new chunks
+ f.write(chunk)
+ f.flush()
+ except Exception as e:
+ print(f"Could not download file {url}")
+ print(str(e))
+
+ ## MESSAGES
+ print("Downloading files from messages...")
+ # read the json
+ url_dicts = json.load(open(FILE_BASE_PATH / "urls.json", "r", encoding="utf-8"))
+
+ # iterate over the dict
+ for url_dict in tqdm.tqdm(url_dicts):
+ message_id = url_dict["message_id"]
+
+ for url_info in url_dict["urls"]:
+ url_id = url_info["url_id"]
+ url = url_info["url"]
+
+ # try to determine the file name from the URL
+ file_names = re.findall(
+ PDF_NAME_REGEX,
+ url,
+ flags=re.IGNORECASE,
+ )
+ if len(file_names) > 0:
+ file_name = file_names[-1]
+ else:
+ file_name = ""
+ file_path = target_folder / f"m_{message_id}_{url_id}_{file_name}.pdf"
+
+ # skip if file already exists
+ if file_path.exists():
+ continue
+
+ # skip if error happened
+ Error_Message = url_info["header_info"]["Error_Message"]
+ if Error_Message is not None:
+ continue
+
+ # skip if not a pdf
+ Content_Category = url_info["header_info"]["Content_Category"]
+ if Content_Category != "pdf":
+ continue
+
+ # download the file
+ try:
+ response = requests.get(url, stream=True)
+ with open(file_path, "wb") as f:
+ for chunk in response.iter_content(chunk_size=8096):
+ if chunk: # filter out keep-alive new chunks
+ f.write(chunk)
+ f.flush()
+ except Exception as e:
+ print(f"Could not download file {url}")
+ print(str(e))
+
+
+if __name__ == "__main__":
+ download_raw_requests()
+ summarize_messages()
+ download_files()
diff --git a/scripts/overviewmap/bad.png b/scripts/overviewmap/bad.png
new file mode 100644
index 0000000..c6af5ff
Binary files /dev/null and b/scripts/overviewmap/bad.png differ
diff --git a/scripts/overviewmap/columnExample.ipynb b/scripts/overviewmap/columnExample.ipynb
new file mode 100644
index 0000000..6a48205
--- /dev/null
+++ b/scripts/overviewmap/columnExample.ipynb
@@ -0,0 +1,285 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "a5b5e97b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Locs available\n",
+ "muenchen.csv: Kein Plan\n",
+ "duesseldorf.csv: Kein Plan\n",
+ "bielefeld.csv: Kein Plan\n",
+ "moers.csv: Kein Plan\n",
+ "bonn.csv: Kein Plan\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "15369bc33e28481c89903fe2efff7ae7",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "DeckGLWidget(carto_key=None, custom_libraries=[], google_maps_key=None, json_input='{\"initialViewState\": {\"bea…"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#!/usr/bin/env python\n",
+ "\n",
+ "import pydeck as pdk\n",
+ "import pandas as pd\n",
+ "import os\n",
+ "import sys\n",
+ "import random\n",
+ "from geopy.geocoders import Nominatim\n",
+ "import time\n",
+ "\n",
+ "# animation requires jupyter extension:\n",
+ "# install: (if required)\n",
+ "#[kugel@tux2 python]$ jupyter nbextension install --overwrite --py pydeck --userInstalling /home/kugel/.local/lib/python3.10/site-packages/pydeck/nbextension/static -> pydeck\n",
+ "# enable: \n",
+ "# [kugel@tux2 python]$ jupyter nbextension enable pydeck --user --py\n",
+ "\n",
+ "\n",
+ "\n",
+ "# cities\n",
+ "# all files in data dir, extension .csv. Names can be like _something.csv\n",
+ "cities = [\n",
+ " \"berlin\",\n",
+ " \"bielefeld\",\n",
+ " \"bonn\",\n",
+ " \"chemnitz\",\n",
+ " \"dortmund\",\n",
+ " \"duesseldorf\",\n",
+ " \"hamburg\",\n",
+ " \"karlsruhe\",\n",
+ " \"koeln\",\n",
+ " \"landau\",\n",
+ " \"leipzig\",\n",
+ " \"moers\",\n",
+ " \"muenchen\",\n",
+ " \"muenster\",\n",
+ " \"paderborn\",\n",
+ " \"ulm\"\n",
+ "]\n",
+ "\n",
+ "# csv format: year,category,type,co2,note\n",
+ "# status: look for 2 rows:\n",
+ "# 2017,Gesamt,real,19778,\n",
+ "\n",
+ "# 2018,Einwohner,Einwohner,3644826,\n",
+ "# plan: look for\n",
+ "# 2020,Gesamt,geplant,17702,\n",
+ "\n",
+ "datadir = \"/home/kugel/temp/okl/klimawatch/data\"\n",
+ "\n",
+ "files = os.listdir(datadir)\n",
+ "\n",
+ "def getPyear(plan,last):\n",
+ " if plan.empty:\n",
+ " return last.year.values[0]\n",
+ " else:\n",
+ " return plan.year.values[-1]\n",
+ "\n",
+ "def getPco2(plan,last):\n",
+ " if plan.empty:\n",
+ " return last.co2.values[0]\n",
+ " else:\n",
+ " return plan.co2.values[-1] + 1\n",
+ "\n",
+ "cityData = pd.DataFrame(columns=[\"name\",\"pop\",\"type\",\"value\",\"year\",\"co2\",\"lat\",\"lng\",\"color\"])\n",
+ "\n",
+ "try: \n",
+ " locs = pd.read_csv(\"locs.csv\")\n",
+ " print(\"Locs available\")\n",
+ " readLocs = False\n",
+ "except:\n",
+ " geolocator = Nominatim(user_agent=\"digital-codes\")\n",
+ " locs = pd.DataFrame(columns=[\"name\",\"address\",\"latitude\",\"longitude\"])\n",
+ " readLocs = True\n",
+ "\n",
+ "\n",
+ "for f in files:\n",
+ " if not \".csv\" in f:\n",
+ " continue\n",
+ " if \"sachstand\" in f.lower():\n",
+ " continue\n",
+ " for c in cities:\n",
+ " if f.startswith(c):\n",
+ " #print(f)\n",
+ " if readLocs:\n",
+ " loc = geolocator.geocode({\"city\":c,\"country\":\"Germany\"})\n",
+ " locs=locs.append({\"name\":c,\"address\":loc.address,\"latitude\":loc.latitude,\"longitude\":loc.longitude},ignore_index=True)\n",
+ " loc = locs[locs.name == c] # reread to get same format\n",
+ " else:\n",
+ " loc = locs[locs.name == c]\n",
+ " city = loc.address.values[0].split(\",\")[0]\n",
+ " lat = loc.latitude.values[0]\n",
+ " lon = loc.longitude.values[0]\n",
+ " #print(name,lat,lon)\n",
+ " df = pd.read_csv(\"/\".join([datadir,f]))\n",
+ " #print(df.describe)\n",
+ " try:\n",
+ " last = df[df.note == \"last_emissions\"]\n",
+ " pop = df[df.category == \"Einwohner\"]\n",
+ " plan = df[(df.type == \"geplant\") & (df.category == \"Gesamt\")]\n",
+ " if plan.empty:\n",
+ " print(f\"{f}: Kein Plan\")\n",
+ " planColor = [100,0,200]\n",
+ " else:\n",
+ " planColor = [0,200,0]\n",
+ " #print(last,pop)\n",
+ " #print(\"Last:\",last.year,last.co2)\n",
+ " #print(\"Pop:\",pop.year,pop.co2)\n",
+ " #print(\"Plan:\",plan.year,plan.co2)\n",
+ " realItems = {\n",
+ " \"name\":city,\n",
+ " \"value\":round(last.co2.values[0]/pop.co2.values[0]*1000)/1000,\n",
+ " \"type\":\"Basis\",\n",
+ " \"lng\": lon,\n",
+ " \"lat\": lat,\n",
+ " \"pop\":pop.co2.values[0],\n",
+ " \"year\":last.year.values[0],\n",
+ " \"co2\":last.co2.values[0],\n",
+ " \"color\":[200,0,0]\n",
+ " }\n",
+ " planItems = {\n",
+ " \"name\":city,\n",
+ " \"value\":round(getPco2(plan,last)/pop.co2.values[0]*1000)/1000,\n",
+ " \"type\":\"Plan\",\n",
+ " \"lng\": lon - .03,\n",
+ " \"lat\": lat - .03,\n",
+ " \"pop\":pop.co2.values[0],\n",
+ " \"year\":getPyear(plan,last),\n",
+ " \"co2\":getPco2(plan,last),\n",
+ " \"color\":planColor\n",
+ " }\n",
+ " #print(\"Items:\",items)\n",
+ " cityData = cityData.append(realItems,ignore_index=True)\n",
+ " cityData = cityData.append(planItems,ignore_index=True)\n",
+ " except:\n",
+ " print(\"failed:\", f,\"\\nlast \",last,\"\\npop \",pop,\"\\nplan \",plan)\n",
+ " continue\n",
+ "\n",
+ "if readLocs:\n",
+ " locs.to_csv(\"locs.csv\",index=False)\n",
+ "\n",
+ "\n",
+ "# types:\n",
+ "# map_style (str or dict, default 'dark') – \n",
+ "# One of ‘light’, ‘dark’, ‘road’, ‘satellite’, ‘dark_no_labels’, and ‘light_no_labels’,\n",
+ "\n",
+ "# provider:\n",
+ "# map_provider (str, default 'carto') – \n",
+ "# If multiple API keys are set (e.g., both Mapbox and Google Maps), \n",
+ "# inform pydeck which basemap provider to prefer. Values can be carto, mapbox or google_maps\n",
+ "\n",
+ "MB_KEY = \"\"\n",
+ "\n",
+ "keys = {\"mapbox\":MB_KEY}\n",
+ "\n",
+ "# Define a layer to display on a map\n",
+ "layer = pdk.Layer(\n",
+ " \"ColumnLayer\",\n",
+ " cityData,\n",
+ "\n",
+ " diskResolution = 12,\n",
+ " radius = 2500,\n",
+ " extruded = True,\n",
+ " pickable = True,\n",
+ " elevationScale = 10000000,\n",
+ "\n",
+ " getFillColor = \"color\",\n",
+ " getLineColor = [0, 0, 200],\n",
+ " getElevation = \"value\",\n",
+ " \n",
+ " get_position = [\"lng\", \"lat\"]\n",
+ ")\n",
+ "\n",
+ "\n",
+ "# Set the viewport location\n",
+ "view_state = pdk.ViewState(\n",
+ " longitude=10.0, latitude=50, zoom=5, min_zoom=5, max_zoom=15, pitch=50, bearing=0\n",
+ " #longitude=8.4, latitude=49, zoom=8, min_zoom=5, max_zoom=15, pitch=40.5, bearing=-27.36,\n",
+ ")\n",
+ "\n",
+ "tooltip = {\n",
+ " \"text\": \"{name} - {type}: {value}\"\n",
+ "}\n",
+ "\n",
+ "# Render\n",
+ "#r = pdk.Deck(layers=[layer], initial_view_state=view_state,map_style=\"dark\",map_provider=\"mapbox\",api_keys=keys)\n",
+ "r = pdk.Deck(layers=[layer],\n",
+ " initial_view_state=view_state,map_style=\"dark\",\n",
+ " tooltip=tooltip\n",
+ " )\n",
+ "\n",
+ "\n",
+ "r.to_html(\"columns.html\")\n",
+ "\n",
+ "# for animation, make sure to change r.show() against display(r.show())\n",
+ "#r.show()\n",
+ "display(r.show())\n",
+ "\n",
+ "for i in range(100):\n",
+ " view_state.bearing += 1\n",
+ " view_state.zoom += .01\n",
+ " r.update()\n",
+ " time.sleep(.1)\n"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "3df08628",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0a5332c1",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "dd91b7e0",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.10.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/scripts/overviewmap/delay.png b/scripts/overviewmap/delay.png
new file mode 100644
index 0000000..88b294e
Binary files /dev/null and b/scripts/overviewmap/delay.png differ
diff --git a/scripts/overviewmap/error.png b/scripts/overviewmap/error.png
new file mode 100644
index 0000000..176f4c5
Binary files /dev/null and b/scripts/overviewmap/error.png differ
diff --git a/scripts/overviewmap/georesults.json b/scripts/overviewmap/georesults.json
new file mode 100644
index 0000000..3d8ea4d
--- /dev/null
+++ b/scripts/overviewmap/georesults.json
@@ -0,0 +1 @@
+[{"id":"235172","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-7\/","plz":"25813","city":"Husum","lat":54.48389235,"lon":9.0469017647,"geoaddr":"25813 Husum Deutschland","status":"solved"},{"id":"235490","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-325\/","plz":"53705","city":"Siegburg","lat":50.7928332,"lon":7.2070774,"geoaddr":"53705 Siegburg Deutschland","status":"solved"},{"id":"235458","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-293\/","plz":"78614","city":"Rottweil","lat":8.6251283,"lon":48.165531,"geoaddr":"78614 Rottweil Deutschland","status":"solved"},{"id":"235261","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-96\/","plz":"54550","city":"Daun,","lat":50.199151,"lon":6.8209302243,"geoaddr":"54550 Daun, Deutschland","status":"failed"},{"id":"235428","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-263\/","plz":"01651","city":"Mei\u00dfen","lat":51.1630871,"lon":13.4704939,"geoaddr":"01651 Mei\u00dfen Deutschland","status":"failed"},{"id":"235545","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-380\/","plz":"80313","city":"M\u00fcnchen","lat":48.13452,"lon":11.571,"geoaddr":"80313 M\u00fcnchen Deutschland","status":"solved"},{"id":"235339","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-174\/","plz":"34576","city":"Homberg","lat":51.0352084,"lon":9.4014803871,"geoaddr":"34576 Homberg Deutschland","status":"failed"},{"id":"235528","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-363\/","plz":"91124","city":"Schwabach","lat":49.329166666,"lon":11.020833333,"geoaddr":"91124 Schwabach Deutschland","status":"solved"},{"id":"235493","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-328\/","plz":"66406","city":"Homburg","lat":49.3181673,"lon":7.3340336,"geoaddr":"66406 Homburg Deutschland","status":"solved"},{"id":"235293","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-128\/","plz":"07973","city":"Greiz","lat":50.65521525,"lon":12.2023825348,"geoaddr":"07973 Greiz Deutschland","status":"failed"},{"id":"235459","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-294\/","plz":"01782","city":"Pirna","lat":50.9616923,"lon":13.9386643,"geoaddr":"01782 Pirna Deutschland","status":"failed"},{"id":"235252","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-87\/","plz":"24768","city":"Rendsburg","lat":54.29754715,"lon":9.6693530806,"geoaddr":"24768 Rendsburg Deutschland","status":"solved"},{"id":"235264","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-98\/","plz":"46483","city":"Wesel","lat":51.680011,"lon":6.59749,"geoaddr":"46483 Wesel Deutschland","status":"solved"},{"id":"235543","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-378\/","plz":"67059","city":"Ludwigshafen","lat":49.4853917,"lon":8.4434193,"geoaddr":"67059 Ludwigshafen Deutschland","status":"solved"},{"id":"235456","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-291\/","plz":"91152","city":"Roth","lat":50.3088002,"lon":6.3835044,"geoaddr":"91152 Roth Deutschland","status":"failed"},{"id":"235500","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-335\/","plz":"44777","city":"Bochum","lat":51.48289975,"lon":7.214555422,"geoaddr":"44777 Bochum Deutschland","status":"solved"},{"id":"235199","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-34\/","plz":"37671","city":"H\u00f6xter","lat":51.780529,"lon":9.345161,"geoaddr":"37671 H\u00f6xter Deutschland","status":"solved"},{"id":"235237","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-72\/","plz":"54634","city":"Bitburg,","lat":49.9684167,"lon":6.5232311909,"geoaddr":"54634 Bitburg, Deutschland","status":"failed"},{"id":"235404","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-239\/","plz":"73008","city":"G\u00f6ppingen","lat":9.6541116,"lon":48.7031377,"geoaddr":"73008 G\u00f6ppingen Deutschland","status":"solved"},{"id":"235539","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-374\/","plz":"85049","city":"Ingolstadt","lat":48.763222,"lon":11.424992,"geoaddr":"85049 Ingolstadt Deutschland","status":"solved"},{"id":"235471","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-306\/","plz":"79744","city":"Waldshut-Tiengen","lat":8.2408579,"lon":47.6281754,"geoaddr":"79744 Waldshut-Tiengen Deutschland","status":"failed"},{"id":"235515","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-350\/","plz":"74024","city":"Heilbronn","lat":9.218655,"lon":49.142291,"geoaddr":"74024 Heilbronn Deutschland","status":"failed"},{"id":"235345","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-180\/","plz":"94315","city":"Straubing","lat":48.8819801,"lon":12.569716,"geoaddr":"94315 Straubing Deutschland","status":"solved"},{"id":"235184","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-19\/","plz":"60311","city":"Frankfurt","lat":50.11056755,"lon":8.681612963,"geoaddr":"60311 Frankfurt Deutschland","status":"failed"},{"id":"235182","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-16\/","plz":"04916","city":"Herzberg","lat":51.6934609,"lon":13.2375496,"geoaddr":"04916 Herzberg Deutschland","status":"failed"},{"id":"235305","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-140\/","plz":"37603","city":"Holzminden","lat":51.82907325,"lon":9.4513008553,"geoaddr":"37603 Holzminden Deutschland","status":"failed"},{"id":"235236","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-71\/","plz":"67292","city":"Kirchheimbolanden,","lat":49.66555905,"lon":8.0148209472,"geoaddr":"67292 Kirchheimbolanden, Deutschland","status":"failed"},{"id":"235238","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-73\/","plz":"53879","city":"Euskirchen","lat":50.6697975,"lon":6.7837009605,"geoaddr":"53879 Euskirchen Deutschland","status":"solved"},{"id":"235512","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-347\/","plz":"07545","city":"Gera","lat":50.87594145,"lon":12.0841965163,"geoaddr":"07545 Gera Deutschland","status":"failed"},{"id":"235265","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-100\/","plz":"39104","city":"Magdeburg,","lat":52.13133305,"lon":11.6403139798,"geoaddr":"39104 Magdeburg, Deutschland","status":"failed"},{"id":"235377","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-212\/","plz":"83423","city":"Bad Reichenhall","lat":47.7222676,"lon":12.8760923,"geoaddr":"83423 Bad Reichenhall Deutschland","status":"solved"},{"id":"235372","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-207\/","plz":"97685","city":"Bad Kissingen","lat":50.1985698,"lon":10.0746833,"geoaddr":"97685 Bad Kissingen Deutschland","status":"failed"},{"id":"235366","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-200\/","plz":"15907","city":"L\u00fcbben","lat":51.94093175,"lon":13.8995820253,"geoaddr":"15907 L\u00fcbben Deutschland","status":"failed"},{"id":"235467","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-302\/","plz":"72009","city":"T\u00fcbingen","lat":9.0535531,"lon":48.5236164,"geoaddr":"72009 T\u00fcbingen Deutschland","status":"solved"},{"id":"235301","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-136\/","plz":"98646","city":"Hildburghausen","lat":50.4240921,"lon":10.7235795,"geoaddr":"98646 Hildburghausen Deutschland","status":"failed"},{"id":"235183","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-18\/","plz":"58332","city":"Schwelm","lat":51.2848411,"lon":7.2982912,"geoaddr":"58332 Schwelm Deutschland","status":"failed"},{"id":"235320","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-155\/","plz":"31582","city":"Nienburg","lat":52.6410849,"lon":9.2181918,"geoaddr":"31582 Nienburg Deutschland","status":"failed"},{"id":"235560","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-395\/","plz":"66482","city":"Zweibr\u00fccken,","lat":49.25088395,"lon":7.3603602955,"geoaddr":"66482 Zweibr\u00fccken, Deutschland","status":"solved"},{"id":"235447","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-283\/","plz":"76408","city":"Rastatt","lat":8.2088088,"lon":48.8574209,"geoaddr":"76408 Rastatt Deutschland","status":"failed"},{"id":"235429","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-264\/","plz":"83711","city":"Miesbach","lat":47.790025,"lon":11.8335417,"geoaddr":"83711 Miesbach Deutschland","status":"solved"},{"id":"235405","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-240\/","plz":"02806","city":"G\u00f6rlitz","lat":51.1563185,"lon":14.991018,"geoaddr":"02806 G\u00f6rlitz Deutschland","status":"failed"},{"id":"235326","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-161\/","plz":"27793","city":"Wildeshausen","lat":52.9043769,"lon":8.4438544507,"geoaddr":"27793 Wildeshausen Deutschland","status":"solved"},{"id":"235328","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-163\/","plz":"27711","city":"Osterholz-Scharmbeck","lat":53.2273038,"lon":8.8049938069,"geoaddr":"27711 Osterholz-Scharmbeck Deutschland","status":"solved"},{"id":"235427","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-262\/","plz":"17033","city":"Neubrandenburg","lat":53.902062,"lon":13.04792,"geoaddr":"17033 Neubrandenburg Deutschland","status":"failed"},{"id":"235284","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-119\/","plz":"49716","city":"Meppen","lat":52.69510215,"lon":7.3060282936,"geoaddr":"49716 Meppen Deutschland","status":"solved"},{"id":"235356","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-191\/","plz":"36433","city":"Bad Salzungen","lat":50.807558,"lon":10.232461,"geoaddr":"36433 Bad Salzungen Deutschland","status":"failed"},{"id":"235409","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-244\/","plz":"74064","city":"Heilbronn","lat":49.142291,"lon":9.218655,"geoaddr":"74064 Heilbronn Deutschland","status":"solved"},{"id":"235273","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-108\/","plz":"06366","city":"K\u00f6then","lat":51.7321538,"lon":11.9776131,"geoaddr":"06366 K\u00f6then Deutschland","status":"failed"},{"id":"235466","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-301\/","plz":"83276","city":"Traunstein","lat":47.8701474,"lon":12.6423403,"geoaddr":"83276 Traunstein Deutschland","status":"failed"},{"id":"235267","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-102\/","plz":"19053","city":"Schwerin","lat":53.632916,"lon":11.408539,"geoaddr":"19053 Schwerin Deutschland","status":"solved"},{"id":"235280","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-115\/","plz":"27474","city":"Cuxhaven","lat":53.8656802,"lon":8.6784867822,"geoaddr":"27474 Cuxhaven Deutschland","status":"failed"},{"id":"235227","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-62\/","plz":"57610","city":"Altenkirchen,","lat":50.68844965,"lon":7.6503259169,"geoaddr":"57610 Altenkirchen, Deutschland","status":"failed"},{"id":"235365","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-201\/","plz":"51643","city":"Gummersbach","lat":51.029968,"lon":7.570438,"geoaddr":"51643 Gummersbach Deutschland","status":"solved"},{"id":"235235","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-70\/","plz":"65307","city":"Bad Schwalbach","lat":50.1481939,"lon":8.0736899,"geoaddr":"65307 Bad Schwalbach Deutschland","status":"solved"},{"id":"235482","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-317\/","plz":"63065","city":"Offenbach","lat":50.10615955,"lon":8.76039644,"geoaddr":"63065 Offenbach Deutschland","status":"failed"},{"id":"235185","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-20\/","plz":"23539","city":"L\u00fcbeck,","lat":53.8712393,"lon":10.6884796,"geoaddr":"23539 L\u00fcbeck, Deutschland","status":"solved"},{"id":"235344","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-179\/","plz":"39576","city":"Stendal,","lat":52.6001127,"lon":11.8638746159,"geoaddr":"39576 Stendal, Deutschland","status":"failed"},{"id":"235410","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-245\/","plz":"95004","city":"Hof","lat":50.3219015,"lon":11.9178807,"geoaddr":"95004 Hof Deutschland","status":"failed"},{"id":"235214","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-49\/","plz":"52348","city":"D\u00fcren","lat":50.8052794,"lon":6.4870189511,"geoaddr":"52348 D\u00fcren Deutschland","status":"failed"},{"id":"235484","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-319\/","plz":"16816","city":"Neuruppin","lat":52.9265578,"lon":12.8100738,"geoaddr":"16816 Neuruppin Deutschland","status":"failed"},{"id":"235192","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-27\/","plz":"47051","city":"Duisburg","lat":51.43536945,"lon":6.7609397854,"geoaddr":"47051 Duisburg Deutschland","status":"solved"},{"id":"235542","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-377\/","plz":"76829","city":"Landau","lat":49.19828415,"lon":8.1114201987,"geoaddr":"76829 Landau Deutschland","status":"solved"},{"id":"235465","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-300\/","plz":"95634","city":"Tirschenreuth","lat":49.8780234,"lon":12.3372095,"geoaddr":"95634 Tirschenreuth Deutschland","status":"solved"},{"id":"235294","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-129\/","plz":"31785","city":"Hameln","lat":52.11165505,"lon":9.3589047299,"geoaddr":"31785 Hameln Deutschland","status":"failed"},{"id":"235379","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-214\/","plz":"71006","city":"B\u00f6blingen","lat":9.0113444,"lon":48.684969,"geoaddr":"71006 B\u00f6blingen Deutschland","status":"failed"},{"id":"235378","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-213\/","plz":"88396","city":"Biberach","lat":9.7899938,"lon":48.0984413,"geoaddr":"88396 Biberach Deutschland","status":"solved"},{"id":"235452","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-287\/","plz":"72711","city":"Reutlingen","lat":9.2114144,"lon":48.4919508,"geoaddr":"72711 Reutlingen Deutschland","status":"solved"},{"id":"235338","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-173\/","plz":"98617","city":"Meiningen","lat":50.593266,"lon":10.4165255,"geoaddr":"98617 Meiningen Deutschland","status":"solved"},{"id":"235314","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-149\/","plz":"21335","city":"L\u00fcneburg","lat":53.223453,"lon":10.40467,"geoaddr":"21335 L\u00fcneburg Deutschland","status":"failed"},{"id":"235222","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-57\/","plz":"63128","city":"Dietzenbach","lat":50.0178689,"lon":8.7857548,"geoaddr":"63128 Dietzenbach Deutschland","status":"failed"},{"id":"235394","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-229\/","plz":"91013","city":"Erlangen","lat":49.5928616,"lon":11.0056,"geoaddr":"91013 Erlangen Deutschland","status":"solved"},{"id":"235563","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-398\/","plz":"99974","city":"M\u00fchlhausen","lat":51.2060763,"lon":10.4518079,"geoaddr":"99974 M\u00fchlhausen Deutschland","status":"solved"},{"id":"235276","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-111\/","plz":"39340","city":"Haldensleben","lat":52.2793876,"lon":11.4261258,"geoaddr":"39340 Haldensleben Deutschland","status":"failed"},{"id":"235472","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-307\/","plz":"82360","city":"Weilheim","lat":47.6582006,"lon":8.2413047,"geoaddr":"82360 Weilheim Deutschland","status":"solved"},{"id":"235384","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-219\/","plz":"85221","city":"Dachau","lat":48.2611905,"lon":11.4276655,"geoaddr":"85221 Dachau Deutschland","status":"failed"},{"id":"235403","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-238\/","plz":"82455","city":"Garmisch-Partenkirchen","lat":47.4923741,"lon":11.0962815,"geoaddr":"82455 Garmisch-Partenkirchen Deutschland","status":"solved"},{"id":"235317","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-152\/","plz":"15306","city":"Seelow","lat":52.5331096,"lon":14.3818647,"geoaddr":"15306 Seelow Deutschland","status":"failed"},{"id":"235371","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-206\/","plz":"86150","city":"Augsburg","lat":48.3670136,"lon":10.8889791816,"geoaddr":"86150 Augsburg Deutschland","status":"failed"},{"id":"235422","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-257\/","plz":"88105","city":"Lindau","lat":47.550753,"lon":9.6926624,"geoaddr":"88105 Lindau Deutschland","status":"solved"},{"id":"235343","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-178\/","plz":"21682","city":"Stade","lat":53.5982827,"lon":9.4783433931,"geoaddr":"21682 Stade Deutschland","status":"failed"},{"id":"235360","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-195\/","plz":"61169","city":"Friedberg","lat":50.3334953,"lon":8.752599,"geoaddr":"61169 Friedberg Deutschland","status":"failed"},{"id":"235439","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-274\/","plz":"89207","city":"Neu-Ulm","lat":48.3954965,"lon":10.00589,"geoaddr":"89207 Neu-Ulm Deutschland","status":"solved"},{"id":"235414","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-249\/","plz":"97318","city":"Kitzingen","lat":49.7396272,"lon":10.160553049,"geoaddr":"97318 Kitzingen Deutschland","status":"solved"},{"id":"235251","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-86\/","plz":"45657","city":"Recklinghausen","lat":51.60853135,"lon":7.2046029612,"geoaddr":"45657 Recklinghausen Deutschland","status":"solved"},{"id":"235218","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-53\/","plz":"32051","city":"Herford,","lat":51.0834196,"lon":10.4234469,"geoaddr":"32051 Herford, Deutschland","status":"solved"},{"id":"235492","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-327\/","plz":"07907","city":"Schleiz","lat":50.5770967,"lon":11.804718467,"geoaddr":"07907 Schleiz Deutschland","status":"failed"},{"id":"235376","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-211\/","plz":"95440","city":"Bayreuth","lat":49.9427202,"lon":11.5763079,"geoaddr":"95440 Bayreuth Deutschland","status":"solved"},{"id":"235275","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-110\/","plz":"16225","city":"Eberswalde","lat":52.8322121,"lon":13.8187493,"geoaddr":"16225 Eberswalde Deutschland","status":"failed"},{"id":"235333","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-168\/","plz":"27356","city":"Rotenburg","lat":53.1108103,"lon":9.3968104,"geoaddr":"27356 Rotenburg Deutschland","status":"solved"},{"id":"235285","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-120\/","plz":"26441","city":"Jever","lat":53.57193285,"lon":7.8990636625,"geoaddr":"26441 Jever Deutschland","status":"solved"},{"id":"235224","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-59\/","plz":"48565","city":"Steinfurt","lat":52.1498749,"lon":7.344621,"geoaddr":"48565 Steinfurt Deutschland","status":"failed"},{"id":"235282","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-117\/","plz":"49356","city":"Diepholz","lat":52.60861465,"lon":8.3753266496,"geoaddr":"49356 Diepholz Deutschland","status":"failed"},{"id":"235203","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-38\/","plz":"45468","city":"M\u00fclheim","lat":51.4284582,"lon":6.8787431167,"geoaddr":"45468 M\u00fclheim Deutschland","status":"solved"},{"id":"235189","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-24\/","plz":"53111","city":"Bonn","lat":50.7369477,"lon":7.0944796,"geoaddr":"53111 Bonn Deutschland","status":"failed"},{"id":"235258","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-93\/","plz":"76829","city":"Landau","lat":49.1974181,"lon":8.0913261418,"geoaddr":"76829 Landau Deutschland","status":"solved"},{"id":"235223","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-58\/","plz":"57072","city":"Siegen","lat":50.8706292,"lon":8.015103037,"geoaddr":"57072 Siegen Deutschland","status":"solved"},{"id":"235211","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-46\/","plz":"64646","city":"Heppenheim","lat":49.6405704,"lon":8.6446152,"geoaddr":"64646 Heppenheim Deutschland","status":"solved"},{"id":"235483","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-318\/","plz":"26105","city":"Oldenburg","lat":53.1390718,"lon":8.2141507293,"geoaddr":"26105 Oldenburg Deutschland","status":"solved"},{"id":"235529","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-364\/","plz":"94303","city":"Straubing","lat":48.877222222,"lon":12.575833333,"geoaddr":"94303 Straubing Deutschland","status":"solved"},{"id":"235316","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-151\/","plz":"35043","city":"Marburg","lat":50.78589275,"lon":8.7716975531,"geoaddr":"35043 Marburg Deutschland","status":"solved"},{"id":"235342","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-177\/","plz":"03149","city":"Forst","lat":51.7496843,"lon":14.6524217744,"geoaddr":"03149 Forst Deutschland","status":"solved"},{"id":"235504","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-339\/","plz":"27749","city":"Delmenhorst","lat":53.04780615,"lon":8.6282766345,"geoaddr":"27749 Delmenhorst Deutschland","status":"solved"},{"id":"235481","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-316\/","plz":"01968","city":"Senftenberg","lat":51.514395,"lon":14.0043112,"geoaddr":"01968 Senftenberg Deutschland","status":"solved"},{"id":"235393","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-228\/","plz":"85422","city":"Erding","lat":48.3064441,"lon":11.9076579,"geoaddr":"85422 Erding Deutschland","status":"failed"},{"id":"235534","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-369\/","plz":"95410","city":"Bayreuth","lat":49.9427202,"lon":11.5763079,"geoaddr":"95410 Bayreuth Deutschland","status":"solved"},{"id":"235318","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-153\/","plz":"66651","city":"Merzig","lat":49.4427023,"lon":6.6374902,"geoaddr":"66651 Merzig Deutschland","status":"failed"},{"id":"235549","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-384\/","plz":"66953","city":"Pirmasens,","lat":49.2035181,"lon":7.6040549,"geoaddr":"66953 Pirmasens, Deutschland","status":"solved"},{"id":"235558","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-393\/","plz":"67547","city":"Worms,","lat":49.6300941,"lon":8.3629099,"geoaddr":"67547 Worms, Deutschland","status":"solved"},{"id":"235300","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-135\/","plz":"36251","city":"Bad Hersfeld","lat":50.8722626,"lon":9.7151252871,"geoaddr":"36251 Bad Hersfeld Deutschland","status":"failed"},{"id":"235407","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-242\/","plz":"97431","city":"Ha\u00dffurt","lat":50.0318698,"lon":10.5065562,"geoaddr":"97431 Ha\u00dffurt Deutschland","status":"failed"},{"id":"235375","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-210\/","plz":"02620","city":"Bautzen","lat":50.921063,"lon":14.616948,"geoaddr":"02620 Bautzen Deutschland","status":"solved"},{"id":"235432","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-267\/","plz":"84446","city":"M\u00fchldorf","lat":48.2405007,"lon":12.5250991,"geoaddr":"84446 M\u00fchldorf Deutschland","status":"failed"},{"id":"235217","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-52\/","plz":"65421","city":"Gro\u00df-Gerau","lat":49.912265,"lon":8.479127,"geoaddr":"65421 Gro\u00df-Gerau Deutschland","status":"solved"},{"id":"235457","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-292\/","plz":"84342","city":"Pfarrkirchen","lat":48.4320329,"lon":12.9386266,"geoaddr":"84342 Pfarrkirchen Deutschland","status":"failed"},{"id":"235553","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-388\/","plz":"97421","city":"Schweinfurt","lat":50.0446527,"lon":10.2348193,"geoaddr":"97421 Schweinfurt Deutschland","status":"solved"},{"id":"235522","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-357\/","plz":"84026","city":"Landshut","lat":48.539722222,"lon":12.150833333,"geoaddr":"84026 Landshut Deutschland","status":"solved"},{"id":"235406","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-241\/","plz":"89303","city":"G\u00fcnzburg","lat":48.4539028,"lon":10.2785509,"geoaddr":"89303 G\u00fcnzburg Deutschland","status":"solved"},{"id":"235503","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-338\/","plz":"64283","city":"Darmstadt","lat":49.8722162,"lon":8.651593,"geoaddr":"64283 Darmstadt Deutschland","status":"solved"},{"id":"235311","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-147\/","plz":"29439","city":"L\u00fcchow","lat":52.97089725,"lon":11.1539098093,"geoaddr":"29439 L\u00fcchow Deutschland","status":"solved"},{"id":"235283","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-118\/","plz":"37308","city":"Heilbad","lat":51.37813525,"lon":10.1315662598,"geoaddr":"37308 Heilbad Deutschland","status":"failed"},{"id":"235190","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-25\/","plz":"46236","city":"Bottrop","lat":51.5249004,"lon":6.9253402533,"geoaddr":"46236 Bottrop Deutschland","status":"failed"},{"id":"235332","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-167\/","plz":"18273","city":"G\u00fcstrow","lat":53.791445,"lon":12.1726442,"geoaddr":"18273 G\u00fcstrow Deutschland","status":"failed"},{"id":"235195","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-30\/","plz":"45879","city":"Gelsenkirchen","lat":51.5762526,"lon":7.0568592,"geoaddr":"45879 Gelsenkirchen Deutschland","status":"solved"},{"id":"235198","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-33\/","plz":"44623","city":"Herne","lat":51.53798035,"lon":7.2194763659,"geoaddr":"44623 Herne Deutschland","status":"failed"},{"id":"235449","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-284\/","plz":"94202","city":"Regen","lat":48.9700842,"lon":13.1262631,"geoaddr":"94202 Regen Deutschland","status":"solved"},{"id":"235554","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-389\/","plz":"67346","city":"Speyer,","lat":49.31743815,"lon":8.4403288448,"geoaddr":"67346 Speyer, Deutschland","status":"failed"},{"id":"235417","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-252\/","plz":"95307","city":"Kulmbach","lat":50.1008448,"lon":11.4479149,"geoaddr":"95307 Kulmbach Deutschland","status":"failed"},{"id":"235341","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-176\/","plz":"96515","city":"Sonneberg","lat":50.3571445,"lon":11.1703387,"geoaddr":"96515 Sonneberg Deutschland","status":"failed"},{"id":"235187","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-22\/","plz":"99310","city":"Arnstadt","lat":50.8352273,"lon":10.9503905,"geoaddr":"99310 Arnstadt Deutschland","status":"failed"},{"id":"235180","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-15\/","plz":"28195","city":"Bremen","lat":53.0790816,"lon":8.8033918,"geoaddr":"28195 Bremen Deutschland","status":"failed"},{"id":"235473","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-308\/","plz":"91780","city":"Wei\u00dfenburg","lat":51.1764915,"lon":11.1007781,"geoaddr":"91780 Wei\u00dfenburg Deutschland","status":"solved"},{"id":"235444","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-279\/","plz":"73428","city":"Aalen","lat":48.8362705,"lon":10.0931765,"geoaddr":"73428 Aalen Deutschland","status":"solved"},{"id":"235247","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-82\/","plz":"40822","city":"Mettmann","lat":51.2522871,"lon":6.9718716,"geoaddr":"40822 Mettmann Deutschland","status":"solved"},{"id":"235555","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-390\/","plz":"54280","city":"Trier,","lat":49.7596208,"lon":6.6441878,"geoaddr":"54280 Trier, Deutschland","status":"failed"},{"id":"235266","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-101\/","plz":"55116","city":"Mainz,","lat":50.0012314,"lon":8.2762513,"geoaddr":"55116 Mainz, Deutschland","status":"solved"},{"id":"235271","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-106\/","plz":"84503","city":"Alt\u00f6tting","lat":48.2268085,"lon":12.6757914,"geoaddr":"84503 Alt\u00f6tting Deutschland","status":"failed"},{"id":"235346","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-181\/","plz":"66606","city":"St.","lat":49.4659297,"lon":7.1662073727,"geoaddr":"66606 St. Deutschland","status":"solved"},{"id":"235551","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-386\/","plz":"93047","city":"Regensburg","lat":49.0204738,"lon":12.0949878089,"geoaddr":"93047 Regensburg Deutschland","status":"failed"},{"id":"235307","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-142\/","plz":"34117","city":"Kassel","lat":51.310864,"lon":9.4859388323,"geoaddr":"34117 Kassel Deutschland","status":"failed"},{"id":"235446","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-281\/","plz":"94032","city":"Passau","lat":48.5748229,"lon":13.4609744,"geoaddr":"94032 Passau Deutschland","status":"solved"},{"id":"235436","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-271\/","plz":"92304","city":"Neumarkt","lat":49.279624,"lon":11.4594662,"geoaddr":"92304 Neumarkt Deutschland","status":"failed"},{"id":"235206","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-41\/","plz":"42853","city":"Remscheid","lat":51.1824273,"lon":7.1852853,"geoaddr":"42853 Remscheid Deutschland","status":"solved"},{"id":"235277","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-112\/","plz":"75365","city":"Calw","lat":48.7114821,"lon":8.7461693541,"geoaddr":"75365 Calw Deutschland","status":"solved"},{"id":"235388","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-223\/","plz":"86607","city":"Donauw\u00f6rth","lat":48.7180364,"lon":10.7807299,"geoaddr":"86607 Donauw\u00f6rth Deutschland","status":"failed"},{"id":"235477","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-312\/","plz":"08067","city":"Zwickau","lat":50.7185043,"lon":12.4939267,"geoaddr":"08067 Zwickau Deutschland","status":"solved"},{"id":"235263","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-99\/","plz":"24103","city":"Kiel","lat":54.3223626,"lon":10.1329595745,"geoaddr":"24103 Kiel Deutschland","status":"failed"},{"id":"235507","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-342\/","plz":"52070","city":"Aachen","lat":50.768731,"lon":6.097192,"geoaddr":"52070 Aachen Deutschland","status":"solved"},{"id":"235373","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-208\/","plz":"83646","city":"Bad T\u00f6lz","lat":47.75880235,"lon":11.581354945,"geoaddr":"83646 Bad T\u00f6lz Deutschland","status":"solved"},{"id":"235309","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-144\/","plz":"35576","city":"Wetzlar","lat":50.55995785,"lon":8.4991084904,"geoaddr":"35576 Wetzlar Deutschland","status":"solved"},{"id":"235527","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-362\/","plz":"38226","city":"Salzgitter","lat":52.15578205,"lon":10.3259068497,"geoaddr":"38226 Salzgitter Deutschland","status":"failed"},{"id":"235209","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-44\/","plz":"48231","city":"Warendorf","lat":51.95206215,"lon":7.9874301459,"geoaddr":"48231 Warendorf Deutschland","status":"failed"},{"id":"235437","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-272\/","plz":"91405","city":"Neustadt","lat":49.3539802,"lon":8.1350021,"geoaddr":"91405 Neustadt Deutschland","status":"failed"},{"id":"235248","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-83\/","plz":"56564","city":"Neuwied,","lat":50.43119225,"lon":7.4666903573,"geoaddr":"56564 Neuwied, Deutschland","status":"failed"},{"id":"235336","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-171\/","plz":"66718","city":"Saarlouis","lat":49.3164661,"lon":6.749846,"geoaddr":"66718 Saarlouis Deutschland","status":"solved"},{"id":"235415","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-250\/","plz":"78412","city":"Konstanz","lat":9.1750718,"lon":47.659216,"geoaddr":"78412 Konstanz Deutschland","status":"solved"},{"id":"235168","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-3\/","plz":"06618","city":"Naumburg","lat":51.151267,"lon":11.8237159246,"geoaddr":"06618 Naumburg Deutschland","status":"solved"},{"id":"235450","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-285\/","plz":"20329","city":"93025","lat":49.0195333,"lon":12.0974869,"geoaddr":"20329 93025 Deutschland","status":"failed"},{"id":"235501","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-336\/","plz":"38100","city":"Braunschweig","lat":52.26463495,"lon":10.5249839058,"geoaddr":"38100 Braunschweig Deutschland","status":"solved"},{"id":"235362","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-197\/","plz":"26409","city":"Wittmund","lat":53.5755494,"lon":7.7835272,"geoaddr":"26409 Wittmund Deutschland","status":"failed"},{"id":"235303","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-138\/","plz":"59872","city":"Meschede","lat":51.3429783,"lon":8.2837291,"geoaddr":"59872 Meschede Deutschland","status":"solved"},{"id":"235496","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-331\/","plz":"91511","city":"Ansbach","lat":49.3,"lon":10.583333333,"geoaddr":"91511 Ansbach Deutschland","status":"solved"},{"id":"235401","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-236\/","plz":"82244","city":"F\u00fcrstenfeldbruck","lat":48.1813797,"lon":11.2382125,"geoaddr":"82244 F\u00fcrstenfeldbruck Deutschland","status":"solved"},{"id":"235502","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-337\/","plz":"09106","city":"Chemnitz","lat":50.614801,"lon":12.633174,"geoaddr":"09106 Chemnitz Deutschland","status":"failed"},{"id":"235315","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-150\/","plz":"06526","city":"Sangerhausen","lat":51.4787887,"lon":11.2975469,"geoaddr":"06526 Sangerhausen Deutschland","status":"failed"},{"id":"235476","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-311\/","plz":"72334","city":"Balingen","lat":48.2737512,"lon":8.8557862,"geoaddr":"72334 Balingen Deutschland","status":"solved"},{"id":"235532","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-367\/","plz":"92224","city":"Amberg","lat":49.4454626,"lon":11.8588748305,"geoaddr":"92224 Amberg Deutschland","status":"solved"},{"id":"235390","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-225\/","plz":"85072","city":"Eichst\u00e4tt","lat":48.8916491,"lon":11.1826524,"geoaddr":"85072 Eichst\u00e4tt Deutschland","status":"solved"},{"id":"235408","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-243\/","plz":"89518","city":"Heidenheim","lat":48.68211315,"lon":10.1498396568,"geoaddr":"89518 Heidenheim Deutschland","status":"solved"},{"id":"235321","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-156\/","plz":"99734","city":"Nordhausen","lat":51.50713665,"lon":10.7848955813,"geoaddr":"99734 Nordhausen Deutschland","status":"solved"},{"id":"235455","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-290\/","plz":"00465","city":"83004","lat":47.8539273,"lon":12.127262,"geoaddr":"00465 83004 Deutschland","status":"failed"},{"id":"235302","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-137\/","plz":"31134","city":"Hildesheim","lat":52.15693085,"lon":9.9498038149,"geoaddr":"31134 Hildesheim Deutschland","status":"solved"},{"id":"235400","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-235\/","plz":"94075","city":"Freyung","lat":48.8099603,"lon":13.5491927,"geoaddr":"94075 Freyung Deutschland","status":"failed"},{"id":"235470","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-305\/","plz":"08507","city":"Plauen","lat":50.4950632,"lon":12.1346523,"geoaddr":"08507 Plauen Deutschland","status":"failed"},{"id":"235194","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-29\/","plz":"45127","city":"Essen","lat":51.45816805,"lon":7.0159171894,"geoaddr":"45127 Essen Deutschland","status":"solved"},{"id":"235402","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-237\/","plz":"90507","city":"Zirndorf","lat":49.445762,"lon":10.9560462,"geoaddr":"90507 Zirndorf Deutschland","status":"failed"},{"id":"235298","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-133\/","plz":"29683","city":"Bad Fallingbostel","lat":52.8659894,"lon":9.6986999,"geoaddr":"29683 Bad Fallingbostel Deutschland","status":"failed"},{"id":"235383","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-218\/","plz":"96412","city":"Coburg","lat":50.258112,"lon":10.964463,"geoaddr":"96412 Coburg Deutschland","status":"failed"},{"id":"235517","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-352\/","plz":"07743","city":"Jena","lat":50.9308158,"lon":11.5915772,"geoaddr":"07743 Jena Deutschland","status":"solved"},{"id":"235197","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-32\/","plz":"59065","city":"Hamm","lat":51.6806824,"lon":7.8117475,"geoaddr":"59065 Hamm Deutschland","status":"solved"},{"id":"235494","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-329\/","plz":"06400","city":"Bernburg","lat":51.7952645,"lon":11.7447357,"geoaddr":"06400 Bernburg Deutschland","status":"failed"},{"id":"235547","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-382\/","plz":"90403","city":"N\u00fcrnberg","lat":49.4552192,"lon":11.0781712,"geoaddr":"90403 N\u00fcrnberg Deutschland","status":"solved"},{"id":"235526","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-361\/","plz":"75158","city":"Pforzheim","lat":48.8908846,"lon":8.7029532,"geoaddr":"75158 Pforzheim Deutschland","status":"solved"},{"id":"235464","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-299\/","plz":"72484","city":"Sigmaringen","lat":9.2178879,"lon":48.0855844,"geoaddr":"72484 Sigmaringen Deutschland","status":"solved"},{"id":"235392","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-227\/","plz":"75110","city":"Pforzheim","lat":8.7029532,"lon":48.8908846,"geoaddr":"75110 Pforzheim Deutschland","status":"solved"},{"id":"235431","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-266\/","plz":"09599","city":"Freiberg","lat":50.9129234,"lon":13.354731,"geoaddr":"09599 Freiberg Deutschland","status":"failed"},{"id":"235287","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-123\/","plz":"38518","city":"Gifhorn","lat":52.489447,"lon":10.5479949818,"geoaddr":"38518 Gifhorn Deutschland","status":"failed"},{"id":"235268","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-103\/","plz":"70161","city":"Stuttgart","lat":48.7825,"lon":9.17694,"geoaddr":"70161 Stuttgart Deutschland","status":"solved"},{"id":"235256","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-91\/","plz":"67063","city":"Ludwigshafen","lat":49.48497255,"lon":8.43996557,"geoaddr":"67063 Ludwigshafen Deutschland","status":"failed"},{"id":"235523","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-358\/","plz":"04092","city":"Leipzig","lat":51.341184,"lon":12.375413,"geoaddr":"04092 Leipzig Deutschland","status":"solved"},{"id":"235564","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-399\/","plz":"36341","city":"Lauterbach","lat":50.6407376,"lon":9.399286377,"geoaddr":"36341 Lauterbach Deutschland","status":"failed"},{"id":"235196","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-31\/","plz":"58095","city":"Hagen","lat":51.3586638,"lon":7.4749353682,"geoaddr":"58095 Hagen Deutschland","status":"solved"},{"id":"235274","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-109\/","plz":"26603","city":"Aurich","lat":53.46720465,"lon":7.4840657251,"geoaddr":"26603 Aurich Deutschland","status":"solved"},{"id":"235531","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-366\/","plz":"89070","city":"Ulm","lat":48.39693405,"lon":9.9932214062,"geoaddr":"89070 Ulm Deutschland","status":"solved"},{"id":"235246","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-81\/","plz":"56068","city":"Koblenz,","lat":50.35207,"lon":7.5902725,"geoaddr":"56068 Koblenz, Deutschland","status":"solved"},{"id":"235178","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-13\/","plz":"25524","city":"Itzehoe","lat":53.92472,"lon":9.5122084562,"geoaddr":"25524 Itzehoe Deutschland","status":"failed"},{"id":"235335","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-170\/","plz":"07318","city":"Saalfeld","lat":50.65363455,"lon":11.3592497734,"geoaddr":"07318 Saalfeld Deutschland","status":"failed"},{"id":"235510","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-345\/","plz":"24931","city":"Flensburg","lat":54.7833021,"lon":9.4333264,"geoaddr":"24931 Flensburg Deutschland","status":"solved"},{"id":"235416","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-251\/","plz":"96305","city":"Kronach","lat":50.2397846,"lon":11.3277669,"geoaddr":"96305 Kronach Deutschland","status":"solved"},{"id":"235340","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-175\/","plz":"99610","city":"S\u00f6mmerda","lat":51.1643763,"lon":11.124292407,"geoaddr":"99610 S\u00f6mmerda Deutschland","status":"failed"},{"id":"235334","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-169\/","plz":"06217","city":"Merseburg,","lat":51.3591083,"lon":12.0013374,"geoaddr":"06217 Merseburg, Deutschland","status":"failed"},{"id":"235451","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-286\/","plz":"71328","city":"Waiblingen","lat":9.3305129,"lon":48.8425793,"geoaddr":"71328 Waiblingen Deutschland","status":"solved"},{"id":"235350","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-185\/","plz":"49377","city":"Vechta","lat":52.7324902,"lon":8.2935544,"geoaddr":"49377 Vechta Deutschland","status":"failed"},{"id":"235498","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-333\/","plz":"86143","city":"Augsburg","lat":48.36732,"lon":10.89212,"geoaddr":"86143 Augsburg Deutschland","status":"failed"},{"id":"235513","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-348\/","plz":"06108","city":"Halle","lat":51.48256465,"lon":11.9717438562,"geoaddr":"06108 Halle Deutschland","status":"solved"},{"id":"235290","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-125\/","plz":"99867","city":"Gotha","lat":50.947734,"lon":10.693408,"geoaddr":"99867 Gotha Deutschland","status":"failed"},{"id":"235322","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-157\/","plz":"23970","city":"Wismar","lat":53.89258725,"lon":11.4726445591,"geoaddr":"23970 Wismar Deutschland","status":"failed"},{"id":"235243","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-78\/","plz":"15848","city":"Beeskow","lat":52.16782305,"lon":14.2409133739,"geoaddr":"15848 Beeskow Deutschland","status":"failed"},{"id":"235499","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-334\/","plz":"76520","city":"Baden-Baden","lat":48.410514,"lon":7.7734667,"geoaddr":"76520 Baden-Baden Deutschland","status":"failed"},{"id":"235269","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-104\/","plz":"65183","city":"Wiesbaden","lat":50.08187245,"lon":8.2420197685,"geoaddr":"65183 Wiesbaden Deutschland","status":"failed"},{"id":"235281","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-116\/","plz":"64276","city":"Darmstadt","lat":49.872775,"lon":8.651177,"geoaddr":"64276 Darmstadt Deutschland","status":"solved"},{"id":"235445","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-280\/","plz":"87610","city":"Marktoberdorf","lat":47.7750654,"lon":10.6170847,"geoaddr":"87610 Marktoberdorf Deutschland","status":"solved"},{"id":"235353","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-188\/","plz":"17489","city":"Greifswald","lat":54.086161,"lon":13.389088,"geoaddr":"17489 Greifswald Deutschland","status":"failed"},{"id":"235363","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-198\/","plz":"38300","city":"Wolfenb\u00fcttel","lat":52.1597293,"lon":10.5345364964,"geoaddr":"38300 Wolfenb\u00fcttel Deutschland","status":"solved"},{"id":"235207","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-42\/","plz":"42651","city":"Solingen","lat":51.1770074,"lon":7.0862995,"geoaddr":"42651 Solingen Deutschland","status":"failed"},{"id":"235520","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-355\/","plz":"87577","city":"Kaufbeuren","lat":47.88,"lon":10.6225,"geoaddr":"87577 Kaufbeuren Deutschland","status":"solved"},{"id":"235171","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-6\/","plz":"23909","city":"Ratzeburg","lat":53.69856815,"lon":10.7726762238,"geoaddr":"23909 Ratzeburg Deutschland","status":"solved"},{"id":"235524","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-359\/","plz":"68030","city":"Mannheim","lat":8.4673098,"lon":49.4892913,"geoaddr":"68030 Mannheim Deutschland","status":"solved"},{"id":"235485","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-321\/","plz":"66119","city":"Saarbr\u00fccken","lat":49.230005,"lon":6.9913299,"geoaddr":"66119 Saarbr\u00fccken Deutschland","status":"solved"},{"id":"235420","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-256\/","plz":"96203","city":"Lichtenfels","lat":50.14568,"lon":11.06382,"geoaddr":"96203 Lichtenfels Deutschland","status":"solved"},{"id":"235448","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-282\/","plz":"85264","city":"Pfaffenhofen","lat":49.0641578,"lon":8.9753958,"geoaddr":"85264 Pfaffenhofen Deutschland","status":"solved"},{"id":"235548","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-383\/","plz":"94032","city":"Passau","lat":48.701766,"lon":13.019319,"geoaddr":"94032 Passau Deutschland","status":"solved"},{"id":"235270","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-105\/","plz":"04600","city":"Altenburg","lat":50.9875411,"lon":12.4316643209,"geoaddr":"04600 Altenburg Deutschland","status":"solved"},{"id":"235191","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-26\/","plz":"44135","city":"Dortmund","lat":51.5114555,"lon":7.4652142567,"geoaddr":"44135 Dortmund Deutschland","status":"solved"},{"id":"235337","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-172\/","plz":"31655","city":"Stadthagen","lat":52.31354035,"lon":9.1906473,"geoaddr":"31655 Stadthagen Deutschland","status":"solved"},{"id":"235385","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-220\/","plz":"94455","city":"Deggendorf","lat":48.8333535,"lon":12.96205,"geoaddr":"94455 Deggendorf Deutschland","status":"solved"},{"id":"235186","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-21\/","plz":"18055","city":"Rostock","lat":54.0887531,"lon":12.1411632577,"geoaddr":"18055 Rostock Deutschland","status":"solved"},{"id":"235324","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-159\/","plz":"16515","city":"Oranienburg","lat":52.7516825,"lon":13.2387409,"geoaddr":"16515 Oranienburg Deutschland","status":"failed"},{"id":"235357","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-192\/","plz":"99510","city":"Apolda","lat":51.02550785,"lon":11.5182191467,"geoaddr":"99510 Apolda Deutschland","status":"solved"},{"id":"235550","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-385\/","plz":"14469","city":"Potsdam","lat":52.21944,"lon":12.675,"geoaddr":"14469 Potsdam Deutschland","status":"solved"},{"id":"235418","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-253\/","plz":"04550","city":"Borna","lat":51.1241649,"lon":12.4999055,"geoaddr":"04550 Borna Deutschland","status":"solved"},{"id":"235479","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-314\/","plz":"63571","city":"Gelnhausen","lat":50.20067015,"lon":9.1975377216,"geoaddr":"63571 Gelnhausen Deutschland","status":"failed"},{"id":"235230","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-65\/","plz":"67098","city":"Bad D\u00fcrkheim,","lat":49.4595924,"lon":8.1703218,"geoaddr":"67098 Bad D\u00fcrkheim, Deutschland","status":"failed"},{"id":"235239","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-74\/","plz":"76726","city":"Germersheim,","lat":49.2179622,"lon":8.3736739,"geoaddr":"76726 Germersheim, Deutschland","status":"solved"},{"id":"235225","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-60\/","plz":"59425","city":"Unna","lat":51.544603,"lon":7.691027,"geoaddr":"59425 Unna Deutschland","status":"failed"},{"id":"235240","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-75\/","plz":"33324","city":"G\u00fctersloh","lat":51.8766132,"lon":8.4875629,"geoaddr":"33324 G\u00fctersloh Deutschland","status":"failed"},{"id":"235278","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-113\/","plz":"29221","city":"Celle","lat":52.6232326,"lon":10.0728154092,"geoaddr":"29221 Celle Deutschland","status":"solved"},{"id":"235352","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-187\/","plz":"82319","city":"Starnberg","lat":47.9997228,"lon":11.3512290073,"geoaddr":"82319 Starnberg Deutschland","status":"failed"},{"id":"235398","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-233\/","plz":"85316","city":"Freising","lat":48.4008273,"lon":11.7439565,"geoaddr":"85316 Freising Deutschland","status":"solved"},{"id":"235480","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-315\/","plz":"65719","city":"Hofheim","lat":50.08001945,"lon":8.4494394614,"geoaddr":"65719 Hofheim Deutschland","status":"solved"},{"id":"235234","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-69\/","plz":"56812","city":"Cochem,","lat":50.14830135,"lon":7.1668912608,"geoaddr":"56812 Cochem, Deutschland","status":"failed"},{"id":"235461","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-296\/","plz":"92406","city":"Schwandorf","lat":49.3261854,"lon":12.1092708,"geoaddr":"92406 Schwandorf Deutschland","status":"failed"},{"id":"235253","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-88\/","plz":"50126","city":"Bergheim","lat":50.951268,"lon":6.631427,"geoaddr":"50126 Bergheim Deutschland","status":"solved"},{"id":"235518","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-353\/","plz":"76124","city":"Karlsruhe","lat":49.0068705,"lon":8.4034195,"geoaddr":"76124 Karlsruhe Deutschland","status":"solved"},{"id":"235173","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-8\/","plz":"23701","city":"Eutin","lat":54.1357282,"lon":10.6173711,"geoaddr":"23701 Eutin Deutschland","status":"solved"},{"id":"235255","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-89\/","plz":"55469","city":"Simmern\/Hunsr\u00fcck,","lat":49.98529815,"lon":7.5257727326,"geoaddr":"55469 Simmern\/Hunsr\u00fcck, Deutschland","status":"solved"},{"id":"235367","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-202\/","plz":"86551","city":"Aichach","lat":48.4547526,"lon":11.1298371143,"geoaddr":"86551 Aichach Deutschland","status":"solved"},{"id":"235242","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-77\/","plz":"66869","city":"Kusel,","lat":49.5247453,"lon":7.3801247,"geoaddr":"66869 Kusel, Deutschland","status":"solved"},{"id":"235231","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-66\/","plz":"55543","city":"Bad Kreuznach,","lat":49.8406166,"lon":7.859769,"geoaddr":"55543 Bad Kreuznach, Deutschland","status":"failed"},{"id":"235166","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-1\/","plz":"21109","city":"Hamburg","lat":53.4977259,"lon":10.0037004,"geoaddr":"21109 Hamburg Deutschland","status":"solved"},{"id":"235193","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-28\/","plz":"40213","city":"D\u00fcsseldorf","lat":51.22597605,"lon":6.7713951341,"geoaddr":"40213 D\u00fcsseldorf Deutschland","status":"solved"},{"id":"235537","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-372\/","plz":"15230","city":"Frankfurt","lat":52.3440653,"lon":14.5540157,"geoaddr":"15230 Frankfurt Deutschland","status":"failed"},{"id":"235443","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-278\/","plz":"77609","city":"Offenburg","lat":7.944378,"lon":48.4716556,"geoaddr":"77609 Offenburg Deutschland","status":"solved"},{"id":"235508","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-343\/","plz":"99084","city":"Erfurt","lat":50.9778922,"lon":11.0292569,"geoaddr":"99084 Erfurt Deutschland","status":"solved"},{"id":"235540","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-375\/","plz":"67653","city":"Kaiserslautern,","lat":49.4467059,"lon":7.7677658153,"geoaddr":"67653 Kaiserslautern, Deutschland","status":"solved"},{"id":"235491","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-326\/","plz":"07607","city":"Eisenberg","lat":50.967787,"lon":11.905092,"geoaddr":"07607 Eisenberg Deutschland","status":"solved"},{"id":"235212","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-47\/","plz":"46325","city":"Borken","lat":51.8515634,"lon":6.841981,"geoaddr":"46325 Borken Deutschland","status":"failed"},{"id":"235306","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-141\/","plz":"39288","city":"Burg","lat":52.27293195,"lon":11.8463723988,"geoaddr":"39288 Burg Deutschland","status":"failed"},{"id":"235165","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte\/","plz":"29410","city":"Salzwedel,","lat":52.8580738,"lon":11.1443624,"geoaddr":"29410 Salzwedel, Deutschland","status":"failed"},{"id":"235552","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-387\/","plz":"83013","city":"Rosenheim","lat":47.8539273,"lon":12.127262,"geoaddr":"83013 Rosenheim Deutschland","status":"failed"},{"id":"235259","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-94\/","plz":"66953","city":"Pirmasens,","lat":49.2124462,"lon":7.6184256,"geoaddr":"66953 Pirmasens, Deutschland","status":"solved"},{"id":"235361","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-196\/","plz":"06886","city":"Lutherstadt","lat":51.87152835,"lon":12.6399430406,"geoaddr":"06886 Lutherstadt Deutschland","status":"failed"},{"id":"235208","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-43\/","plz":"41747","city":"Viersen","lat":51.2558636,"lon":6.3944327,"geoaddr":"41747 Viersen Deutschland","status":"solved"},{"id":"235174","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-9\/","plz":"25421","city":"Pinneberg","lat":53.6590202,"lon":9.7973908602,"geoaddr":"25421 Pinneberg Deutschland","status":"solved"},{"id":"235210","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-45\/","plz":"42275","city":"Wuppertal","lat":51.2722224,"lon":7.2018851,"geoaddr":"42275 Wuppertal Deutschland","status":"solved"},{"id":"235175","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-10\/","plz":"24306","city":"Pl\u00f6n","lat":54.1585189,"lon":10.4174989962,"geoaddr":"24306 Pl\u00f6n Deutschland","status":"solved"},{"id":"235530","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-365\/","plz":"98527","city":"Suhl","lat":50.31935,"lon":10.571404,"geoaddr":"98527 Suhl Deutschland","status":"solved"},{"id":"235556","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-391\/","plz":"92637","city":"Weiden","lat":49.6732373,"lon":12.1606033,"geoaddr":"92637 Weiden Deutschland","status":"failed"},{"id":"235241","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-76\/","plz":"67657","city":"Kaiserslautern,","lat":49.4476881,"lon":7.7667011088,"geoaddr":"67657 Kaiserslautern, Deutschland","status":"solved"},{"id":"235329","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-164\/","plz":"31224","city":"Peine","lat":52.32481555,"lon":10.2252853112,"geoaddr":"31224 Peine Deutschland","status":"failed"},{"id":"235562","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-397\/","plz":"26382","city":"Wilhelmshaven","lat":53.5265289,"lon":8.1097756,"geoaddr":"26382 Wilhelmshaven Deutschland","status":"failed"},{"id":"235411","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-246\/","plz":"74643","city":"K\u00fcnzelsau","lat":9.6901512,"lon":49.2803765,"geoaddr":"74643 K\u00fcnzelsau Deutschland","status":"solved"},{"id":"235176","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-11\/","plz":"24837","city":"Schleswig","lat":54.5143681,"lon":9.5461378743,"geoaddr":"24837 Schleswig Deutschland","status":"failed"},{"id":"235397","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-232\/","plz":"91301","city":"Forchheim","lat":49.7170825,"lon":11.0616984,"geoaddr":"91301 Forchheim Deutschland","status":"failed"},{"id":"235468","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-303\/","plz":"78509","city":"Tuttlingen","lat":8.8186606,"lon":47.9844315,"geoaddr":"78509 Tuttlingen Deutschland","status":"failed"},{"id":"235533","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-368\/","plz":"96047","city":"Bamberg","lat":49.8916044,"lon":10.8868478,"geoaddr":"96047 Bamberg Deutschland","status":"solved"},{"id":"235297","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-132\/","plz":"14712","city":"Rathenow","lat":52.60496485,"lon":12.3488566884,"geoaddr":"14712 Rathenow Deutschland","status":"failed"},{"id":"235433","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-268\/","plz":"81507","city":"M\u00fcnchen","lat":48.1371079,"lon":11.5753822,"geoaddr":"81507 M\u00fcnchen Deutschland","status":"solved"},{"id":"235535","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-370\/","plz":"96450","city":"Coburg","lat":50.257899,"lon":10.96459,"geoaddr":"96450 Coburg Deutschland","status":"solved"},{"id":"235514","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-349\/","plz":"69045","city":"Heidelberg","lat":49.4093582,"lon":8.694724,"geoaddr":"69045 Heidelberg Deutschland","status":"failed"},{"id":"235308","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-143\/","plz":"99706","city":"Sondershausen","lat":51.37197905,"lon":10.8722549654,"geoaddr":"99706 Sondershausen Deutschland","status":"failed"},{"id":"235233","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-68\/","plz":"55765","city":"Birkenfeld,","lat":49.6491237,"lon":7.1636574434,"geoaddr":"55765 Birkenfeld, Deutschland","status":"solved"},{"id":"235419","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-255\/","plz":"84036","city":"Landshut","lat":48.52281575,"lon":12.1470054989,"geoaddr":"84036 Landshut Deutschland","status":"solved"},{"id":"235442","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-277\/","plz":"87527","city":"Sonthofen","lat":47.5047006,"lon":10.3061977,"geoaddr":"87527 Sonthofen Deutschland","status":"solved"},{"id":"235296","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-131\/","plz":"38820","city":"Halberstadt","lat":51.8882877,"lon":11.0577557609,"geoaddr":"38820 Halberstadt Deutschland","status":"failed"},{"id":"235304","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-139\/","plz":"61352","city":"Bad Homburg","lat":50.2158597,"lon":8.6158564,"geoaddr":"61352 Bad Homburg Deutschland","status":"failed"},{"id":"235254","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-90\/","plz":"56130","city":"Bad Ems,","lat":50.34879815,"lon":7.71927715,"geoaddr":"56130 Bad Ems, Deutschland","status":"solved"},{"id":"235348","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-183\/","plz":"17291","city":"Prenzlau","lat":53.3120032,"lon":13.8676418,"geoaddr":"17291 Prenzlau Deutschland","status":"solved"},{"id":"235386","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-221\/","plz":"89401","city":"Dillingen","lat":48.5812547,"lon":10.4951425,"geoaddr":"89401 Dillingen Deutschland","status":"failed"},{"id":"235469","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-304\/","plz":"87713","city":"Mindelheim","lat":48.0464164,"lon":10.4882504,"geoaddr":"87713 Mindelheim Deutschland","status":"solved"},{"id":"235260","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-95\/","plz":"54290","city":"Trier,","lat":49.75367145,"lon":6.6450984243,"geoaddr":"54290 Trier, Deutschland","status":"failed"},{"id":"235181","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-17\/","plz":"26721","city":"Emden","lat":53.36484085,"lon":7.2017816795,"geoaddr":"26721 Emden Deutschland","status":"solved"},{"id":"235299","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-134\/","plz":"38350","city":"Helmstedt","lat":52.2215676,"lon":11.0074078031,"geoaddr":"38350 Helmstedt Deutschland","status":"solved"},{"id":"235288","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-122\/","plz":"35390","city":"Gie\u00dfen","lat":50.5855027,"lon":8.6807519793,"geoaddr":"35390 Gie\u00dfen Deutschland","status":"solved"},{"id":"235395","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-230\/","plz":"09456","city":"Annaberg-Buchholz","lat":50.5868227,"lon":13.0099015944,"geoaddr":"09456 Annaberg-Buchholz Deutschland","status":"failed"},{"id":"235330","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-165\/","plz":"19348","city":"Perleberg","lat":53.0735816,"lon":11.8686511,"geoaddr":"19348 Perleberg Deutschland","status":"solved"},{"id":"235463","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-297\/","plz":"78045","city":"Villingen-Schwenningen","lat":48.06112155,"lon":8.5337581487,"geoaddr":"78045 Villingen-Schwenningen Deutschland","status":"failed"},{"id":"235364","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-199\/","plz":"52525","city":"Heinsberg","lat":51.06113795,"lon":6.1069129238,"geoaddr":"52525 Heinsberg Deutschland","status":"solved"},{"id":"235391","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-226\/","plz":"79301","city":"Emmendingen","lat":7.850993,"lon":48.1206565,"geoaddr":"79301 Emmendingen Deutschland","status":"failed"},{"id":"235536","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-371\/","plz":"67227","city":"Frankenthal","lat":49.5349331,"lon":8.3547483699,"geoaddr":"67227 Frankenthal Deutschland","status":"failed"},{"id":"235460","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-295\/","plz":"74523","city":"Schw\u00e4bisch","lat":49.1158346,"lon":9.7368621,"geoaddr":"74523 Schw\u00e4bisch Deutschland","status":"solved"},{"id":"235355","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-190\/","plz":"34497","city":"Korbach","lat":51.2690466,"lon":8.8566075,"geoaddr":"34497 Korbach Deutschland","status":"failed"},{"id":"235220","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-55\/","plz":"32756","city":"Detmold","lat":51.942523,"lon":8.870982,"geoaddr":"32756 Detmold Deutschland","status":"solved"},{"id":"235489","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-324\/","plz":"41460","city":"Neuss","lat":51.1965365,"lon":6.6961259,"geoaddr":"41460 Neuss Deutschland","status":"solved"},{"id":"235286","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-121\/","plz":"36037","city":"Fulda","lat":50.5594985,"lon":9.6863955,"geoaddr":"36037 Fulda Deutschland","status":"failed"},{"id":"235370","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-205\/","plz":"63736","city":"Aschaffenburg","lat":49.9740542,"lon":9.1493636,"geoaddr":"63736 Aschaffenburg Deutschland","status":"solved"},{"id":"235359","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-194\/","plz":"26919","city":"Brake","lat":53.3278152,"lon":8.4723555349,"geoaddr":"26919 Brake Deutschland","status":"solved"},{"id":"235228","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-63\/","plz":"55232","city":"Alzey,","lat":49.7429609,"lon":8.1104960758,"geoaddr":"55232 Alzey, Deutschland","status":"solved"},{"id":"235331","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-166\/","plz":"88212","city":"Ravensburg","lat":47.78756775,"lon":9.617136724,"geoaddr":"88212 Ravensburg Deutschland","status":"solved"},{"id":"235310","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-145\/","plz":"26789","city":"Leer","lat":53.2320581,"lon":7.4565853,"geoaddr":"26789 Leer Deutschland","status":"solved"},{"id":"235389","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-224\/","plz":"85560","city":"Ebersberg","lat":48.0765786,"lon":11.9647521,"geoaddr":"85560 Ebersberg Deutschland","status":"solved"},{"id":"235487","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-322\/","plz":"30169","city":"Hannover,","lat":52.36574685,"lon":9.7446052941,"geoaddr":"30169 Hannover, Deutschland","status":"solved"},{"id":"235221","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-56\/","plz":"32423","city":"Minden","lat":52.2815883,"lon":8.9112471341,"geoaddr":"32423 Minden Deutschland","status":"solved"},{"id":"235435","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-270\/","plz":"86620","city":"Neuburg","lat":53.9449473,"lon":11.5903337,"geoaddr":"86620 Neuburg Deutschland","status":"failed"},{"id":"235521","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-356\/","plz":"87435","city":"Kempten","lat":47.733333333,"lon":10.316666666,"geoaddr":"87435 Kempten Deutschland","status":"solved"},{"id":"235291","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-126\/","plz":"37083","city":"G\u00f6ttingen","lat":51.5272662,"lon":9.93936,"geoaddr":"37083 G\u00f6ttingen Deutschland","status":"failed"},{"id":"235323","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-158\/","plz":"37154","city":"Northeim","lat":51.7062257,"lon":9.9960757,"geoaddr":"37154 Northeim Deutschland","status":"solved"},{"id":"235495","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-330\/","plz":"10179","city":"Berlin","lat":52.5132312,"lon":13.4157452028,"geoaddr":"10179 Berlin Deutschland","status":"solved"},{"id":"235257","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-92\/","plz":"59494","city":"Soest","lat":51.57252465,"lon":8.1146490765,"geoaddr":"59494 Soest Deutschland","status":"solved"},{"id":"235380","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-215\/","plz":"88041","city":"Friedrichshafen","lat":47.661536,"lon":9.473899,"geoaddr":"88041 Friedrichshafen Deutschland","status":"solved"},{"id":"235205","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-40\/","plz":"46045","city":"Oberhausen","lat":51.479889,"lon":6.861795,"geoaddr":"46045 Oberhausen Deutschland","status":"solved"},{"id":"235497","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-332\/","plz":"00163","city":"63701","lat":49.97575,"lon":9.1478,"geoaddr":"00163 63701 Deutschland","status":"solved"},{"id":"235213","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-48\/","plz":"48653","city":"Coesfeld","lat":51.944301,"lon":7.174554,"geoaddr":"48653 Coesfeld Deutschland","status":"failed"},{"id":"235387","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-222\/","plz":"84125","city":"Dingolfing","lat":48.6300801,"lon":12.4977434,"geoaddr":"84125 Dingolfing Deutschland","status":"failed"},{"id":"235349","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-184\/","plz":"29525","city":"Uelzen","lat":52.9617068,"lon":10.5580016,"geoaddr":"29525 Uelzen Deutschland","status":"solved"},{"id":"235279","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-114\/","plz":"49661","city":"Cloppenburg","lat":52.8431588,"lon":8.0380453,"geoaddr":"49661 Cloppenburg Deutschland","status":"solved"},{"id":"235430","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-265\/","plz":"63885","city":"Miltenberg","lat":49.7017584,"lon":9.2559718,"geoaddr":"63885 Miltenberg Deutschland","status":"solved"},{"id":"235204","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-39\/","plz":"48143","city":"M\u00fcnster","lat":51.9612145,"lon":7.6289279,"geoaddr":"48143 M\u00fcnster Deutschland","status":"failed"},{"id":"235559","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-394\/","plz":"97070","city":"W\u00fcrzburg","lat":49.793488,"lon":9.9282247,"geoaddr":"97070 W\u00fcrzburg Deutschland","status":"failed"},{"id":"235229","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-64\/","plz":"26655","city":"Westerstede","lat":53.255381,"lon":7.9345199,"geoaddr":"26655 Westerstede Deutschland","status":"failed"},{"id":"235423","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-258\/","plz":"79537","city":"L\u00f6rrach","lat":7.6607218,"lon":47.6120896,"geoaddr":"79537 L\u00f6rrach Deutschland","status":"failed"},{"id":"235474","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-309\/","plz":"95631","city":"Wunsiedel","lat":50.0373241,"lon":12.0027278,"geoaddr":"95631 Wunsiedel Deutschland","status":"failed"},{"id":"235250","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-85\/","plz":"33102","city":"Paderborn","lat":51.7150125,"lon":8.7393082,"geoaddr":"33102 Paderborn Deutschland","status":"solved"},{"id":"235438","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-273\/","plz":"92657","city":"Neustadt","lat":49.3539802,"lon":8.1350021,"geoaddr":"92657 Neustadt Deutschland","status":"failed"},{"id":"235462","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-298\/","plz":"97404","city":"Schweinfurt","lat":50.0499945,"lon":10.233302,"geoaddr":"97404 Schweinfurt Deutschland","status":"failed"},{"id":"235519","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-354\/","plz":"34117","city":"Kassel","lat":51.3119692,"lon":9.4925701,"geoaddr":"34117 Kassel Deutschland","status":"solved"},{"id":"235201","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-36\/","plz":"47803","city":"Krefeld","lat":51.33404595,"lon":6.5590081635,"geoaddr":"47803 Krefeld Deutschland","status":"solved"},{"id":"235441","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-276\/","plz":"91205","city":"Lauf","lat":48.6485831,"lon":8.1292199,"geoaddr":"91205 Lauf Deutschland","status":"solved"},{"id":"235244","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-79\/","plz":"55218","city":"Ingelheim","lat":49.97602365,"lon":8.0572193848,"geoaddr":"55218 Ingelheim Deutschland","status":"failed"},{"id":"235561","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-396\/","plz":"99423","city":"Weimar","lat":50.97911985,"lon":11.3310731183,"geoaddr":"99423 Weimar Deutschland","status":"failed"},{"id":"235475","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-310\/","plz":"97067","city":"W\u00fcrzburg","lat":49.79245,"lon":9.932966,"geoaddr":"97067 W\u00fcrzburg Deutschland","status":"solved"},{"id":"235325","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-160\/","plz":"64711","city":"Erbach","lat":49.66319895,"lon":8.9937683544,"geoaddr":"64711 Erbach Deutschland","status":"failed"},{"id":"235347","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-182\/","plz":"14943","city":"Luckenwalde","lat":52.08479705,"lon":13.1687568247,"geoaddr":"14943 Luckenwalde Deutschland","status":"failed"},{"id":"235200","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-35\/","plz":"50667","city":"K\u00f6ln","lat":50.9388974,"lon":6.9790282,"geoaddr":"50667 K\u00f6ln Deutschland","status":"failed"},{"id":"235516","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-351\/","plz":"95015","city":"Hof","lat":50.316666666,"lon":11.916666666,"geoaddr":"95015 Hof Deutschland","status":"solved"},{"id":"235354","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-189\/","plz":"18437","city":"Stralsund","lat":54.3101787,"lon":13.0681397,"geoaddr":"18437 Stralsund Deutschland","status":"solved"},{"id":"235426","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-261\/","plz":"97933","city":"Tauberbischofsheim","lat":9.6627138,"lon":49.6229682,"geoaddr":"97933 Tauberbischofsheim Deutschland","status":"failed"},{"id":"235453","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-288\/","plz":"69036","city":"Heidelberg","lat":8.694724,"lon":49.4093582,"geoaddr":"69036 Heidelberg Deutschland","status":"solved"},{"id":"235167","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-2\/","plz":"14770","city":"Brandenburg","lat":52.4141332,"lon":12.5542618,"geoaddr":"14770 Brandenburg Deutschland","status":"solved"},{"id":"235249","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-84\/","plz":"57462","city":"Olpe","lat":51.03356645,"lon":7.8506366665,"geoaddr":"57462 Olpe Deutschland","status":"solved"},{"id":"235327","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-162\/","plz":"49082","city":"Osnabr\u00fcck","lat":52.24765135,"lon":8.0696503309,"geoaddr":"49082 Osnabr\u00fcck Deutschland","status":"failed"},{"id":"235538","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-373\/","plz":"90762","city":"F\u00fcrth","lat":49.47764655,"lon":10.9887769019,"geoaddr":"90762 F\u00fcrth Deutschland","status":"solved"},{"id":"235312","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-146\/","plz":"65549","city":"Limburg","lat":50.38711785,"lon":8.0593962408,"geoaddr":"65549 Limburg Deutschland","status":"failed"},{"id":"235399","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-234\/","plz":"72236","city":"Freudenstadt","lat":8.4111727,"lon":48.4637727,"geoaddr":"72236 Freudenstadt Deutschland","status":"solved"},{"id":"235413","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-248\/","plz":"93303","city":"Kelheim","lat":48.9187285,"lon":11.8727886,"geoaddr":"93303 Kelheim Deutschland","status":"failed"},{"id":"235169","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-4\/","plz":"03046","city":"Cottbus","lat":51.7608325,"lon":14.3320751,"geoaddr":"03046 Cottbus Deutschland","status":"solved"},{"id":"235486","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-320\/","plz":"14806","city":"Bad Belzig","lat":52.1423462,"lon":12.5847146569,"geoaddr":"14806 Bad Belzig Deutschland","status":"failed"},{"id":"235216","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-51\/","plz":"49074","city":"Osnabr\u00fcck","lat":52.2773994,"lon":8.0412102689,"geoaddr":"49074 Osnabr\u00fcck Deutschland","status":"solved"},{"id":"235381","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-216\/","plz":"79081","city":"Freiburg","lat":47.9960901,"lon":7.8494005,"geoaddr":"79081 Freiburg Deutschland","status":"solved"},{"id":"235179","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-14\/","plz":"23843","city":"Bad Oldesloe","lat":53.8053718,"lon":10.3803511052,"geoaddr":"23843 Bad Oldesloe Deutschland","status":"solved"},{"id":"235262","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-97\/","plz":"56410","city":"Montabaur,","lat":50.4305613,"lon":7.8284840953,"geoaddr":"56410 Montabaur, Deutschland","status":"solved"},{"id":"235541","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-376\/","plz":"56068","city":"Koblenz,","lat":50.3600331,"lon":7.5983743,"geoaddr":"56068 Koblenz, Deutschland","status":"solved"},{"id":"235215","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-50\/","plz":"41061","city":"M\u00f6nchengladbach","lat":51.200215,"lon":6.421396,"geoaddr":"41061 M\u00f6nchengladbach Deutschland","status":"failed"},{"id":"235544","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-379\/","plz":"87700","city":"Memmingen","lat":47.9866516,"lon":10.1813319,"geoaddr":"87700 Memmingen Deutschland","status":"failed"},{"id":"235232","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-67\/","plz":"54516","city":"Wittlich,","lat":49.9819569,"lon":6.8987325772,"geoaddr":"54516 Wittlich, Deutschland","status":"failed"},{"id":"235351","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-186\/","plz":"27283","city":"Verden","lat":52.9273269,"lon":9.2507064526,"geoaddr":"27283 Verden Deutschland","status":"solved"},{"id":"235396","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-231\/","plz":"73726","city":"Esslingen","lat":48.7427584,"lon":9.3071685,"geoaddr":"73726 Esslingen Deutschland","status":"solved"},{"id":"235272","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-107\/","plz":"92224","city":"Amberg","lat":49.4454211,"lon":11.858728,"geoaddr":"92224 Amberg Deutschland","status":"solved"},{"id":"235188","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-23\/","plz":"33602","city":"Bielefeld","lat":52.0215339,"lon":8.5358668,"geoaddr":"33602 Bielefeld Deutschland","status":"failed"},{"id":"235382","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-217\/","plz":"93404","city":"Cham","lat":49.2178194,"lon":12.6663832,"geoaddr":"93404 Cham Deutschland","status":"failed"},{"id":"235202","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-37\/","plz":"51373","city":"Leverkusen","lat":51.0744213,"lon":6.9972298155,"geoaddr":"51373 Leverkusen Deutschland","status":"failed"},{"id":"235424","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-259\/","plz":"71638","city":"Ludwigsburg","lat":48.8903187,"lon":9.2004763802,"geoaddr":"71638 Ludwigsburg Deutschland","status":"failed"},{"id":"235421","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-254\/","plz":"01453","city":"86884","lat":48.0514973,"lon":10.8737728,"geoaddr":"01453 86884 Deutschland","status":"failed"},{"id":"235509","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-344\/","plz":"91051","city":"Erlangen","lat":49.596388888,"lon":11.004444444,"geoaddr":"91051 Erlangen Deutschland","status":"solved"},{"id":"235177","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-12\/","plz":"23795","city":"Bad Segeberg","lat":52.5533629,"lon":13.1335785,"geoaddr":"23795 Bad Segeberg Deutschland","status":"failed"},{"id":"235295","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-130\/","plz":"21423","city":"Winsen","lat":53.3614375,"lon":10.2039376598,"geoaddr":"21423 Winsen Deutschland","status":"failed"},{"id":"235226","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-61\/","plz":"53474","city":"Bad Neuenahr-Ahrweiler,","lat":52.52019835,"lon":13.1856302055,"geoaddr":"53474 Bad Neuenahr-Ahrweiler, Deutschland","status":"solved"},{"id":"235289","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-124\/","plz":"38640","city":"Goslar","lat":51.9095677,"lon":10.4217900079,"geoaddr":"38640 Goslar Deutschland","status":"failed"},{"id":"235425","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-260\/","plz":"97748","city":"Karlstadt","lat":49.9616823,"lon":9.7655121,"geoaddr":"97748 Karlstadt Deutschland","status":"failed"},{"id":"235170","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-5\/","plz":"25746","city":"Heide","lat":54.1933706,"lon":9.1102411,"geoaddr":"25746 Heide Deutschland","status":"solved"},{"id":"235546","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-381\/","plz":"67433","city":"Neustadt","lat":49.35370485,"lon":8.1352456719,"geoaddr":"67433 Neustadt Deutschland","status":"solved"},{"id":"235245","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-80\/","plz":"58509","city":"L\u00fcdenscheid","lat":51.2250616,"lon":7.6144237831,"geoaddr":"58509 L\u00fcdenscheid Deutschland","status":"failed"},{"id":"235313","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-148\/","plz":"19370","city":"Parchim","lat":53.419565,"lon":11.8443953,"geoaddr":"19370 Parchim Deutschland","status":"failed"},{"id":"235369","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-204\/","plz":"91522","city":"Ansbach","lat":49.2962936,"lon":10.5616979411,"geoaddr":"91522 Ansbach Deutschland","status":"failed"},{"id":"235368","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-203\/","plz":"89070","city":"Ulm","lat":9.9934336,"lon":48.3974003,"geoaddr":"89070 Ulm Deutschland","status":"failed"},{"id":"235292","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-127\/","plz":"48529","city":"Nordhorn","lat":52.433195,"lon":7.0616658,"geoaddr":"48529 Nordhorn Deutschland","status":"solved"},{"id":"235412","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-247\/","plz":"76126","city":"Karlsruhe","lat":49.07972,"lon":8.53139,"geoaddr":"76126 Karlsruhe Deutschland","status":"solved"},{"id":"235511","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-346\/","plz":"79095","city":"Freiburg","lat":47.6844868,"lon":8.0885441,"geoaddr":"79095 Freiburg Deutschland","status":"failed"},{"id":"235440","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-275\/","plz":"04855","city":"Torgau","lat":51.556936,"lon":12.992703,"geoaddr":"04855 Torgau Deutschland","status":"failed"},{"id":"235358","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-193\/","plz":"37269","city":"Eschwege","lat":51.1882947,"lon":10.0526479,"geoaddr":"37269 Eschwege Deutschland","status":"failed"},{"id":"235454","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-289\/","plz":"97615","city":"Bad Neustadt","lat":50.322637,"lon":10.2164873,"geoaddr":"97615 Bad Neustadt Deutschland","status":"solved"},{"id":"235319","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-154\/","plz":"66559","city":"Ottweiler","lat":49.4030447,"lon":7.1631469,"geoaddr":"66559 Ottweiler Deutschland","status":"failed"},{"id":"235219","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-54\/","plz":"47533","city":"Kleve","lat":51.782073,"lon":6.1384954,"geoaddr":"47533 Kleve Deutschland","status":"failed"},{"id":"235434","url":"https:\/\/fragdenstaat.de\/anfrage\/klimaschutz-und-klimaanpassungskonzepte-269\/","plz":"74819","city":"Mosbach","lat":9.1460205,"lon":49.3521085,"geoaddr":"74819 Mosbach Deutschland","status":"solved"}]
\ No newline at end of file
diff --git a/scripts/overviewmap/good.png b/scripts/overviewmap/good.png
new file mode 100644
index 0000000..9d56236
Binary files /dev/null and b/scripts/overviewmap/good.png differ
diff --git a/scripts/overviewmap/icons.py b/scripts/overviewmap/icons.py
new file mode 100644
index 0000000..ebd4631
--- /dev/null
+++ b/scripts/overviewmap/icons.py
@@ -0,0 +1,82 @@
+"""
+IconLayer
+=========
+
+Location of biergartens in Germany listed on OpenStreetMap as of early 2020.
+"""
+
+import pydeck as pdk
+import pandas as pd
+
+
+# Data from OpenStreetMap, accessed via osmpy
+#DATA_URL = "https://raw.githubusercontent.com/ajduberstein/geo_datasets/master/biergartens.json"
+#ICON_URL = "https://upload.wikimedia.org/wikipedia/commons/c/c4/Projet_bi%C3%A8re_logo_v2.png"
+# local URL work only with http-server, not with file:
+
+rawData = [{"lat":50.5112014,"lon":6.9939896,"tags":"No listed name"},
+ {"lat":49.9534891,"lon":10.8750469,"tags":"No listed name"},
+ {"lat":52.4333644,"lon":13.190734,"tags":"Spinnerbr\u00fccke"},
+ {"lat":50.0110113,"lon":8.3917604,"tags":"Gasthof Wiesenm\u00fchle"},
+ {"lat":48.9693881,"lon":8.3903784,"tags":"No listed name"},
+ {"lat":52.4200885,"lon":13.1763456,"tags":"Loretta"},
+ {"lat":50.3638373,"lon":7.5769021,"tags":"No listed name"},
+ {"lat":52.9822191,"lon":8.845254,"tags":"Schwarzbiergarten"},
+ {"lat":49.4814353,"lon":10.993033,"tags":"No listed name"},
+ {"lat":47.9927509,"lon":7.8558873,"tags":"Kastaniengarten"},
+ {"lat":49.9322248,"lon":11.5720575,"tags":"R\u00f6hrensee"},
+ {"lat":48.0124776,"lon":7.8149142,"tags":"Biergarten am Seepark"},
+ {"lat":47.9207025,"lon":11.7554223,"tags":"Zum Bartewirt"}
+ ]
+
+DATA_URL = "georesults.json"
+
+
+ICON_URL = "/out.png"
+GOOD_URL = "/good.png"
+BAD_URL = "/pad.png"
+
+icon_data = {
+ # Icon from Wikimedia, used the Creative Commons Attribution-Share Alike 3.0
+ # Unported, 2.5 Generic, 2.0 Generic and 1.0 Generic licenses
+ "url": GOOD_URL,
+ "width": 64,
+ "height": 64,
+ "anchorY": 64,
+}
+
+data = pd.read_json(DATA_URL)
+#data = pd.DataFrame(rawData)
+
+def setIcon(x):
+ i = icon_data.copy()
+ if x != "solved":
+ i["url"] = "/bad.png"
+ return i
+
+
+data["icon_data"] = None
+
+data.icon_data = data.status.apply(setIcon)
+
+#for i in data.index:
+# data["icon_data"][i] = icon_data
+
+# compute_view(points, view_proportion=1, view_type=)
+# Automatically computes a zoom level for the points passed in.
+
+# compute view must be adjusted somehow. try without proportion
+view_state = pdk.data_utils.compute_view(data[["lon", "lat"]]) #, 0.1)
+
+icon_layer = pdk.Layer(
+ type="IconLayer",
+ data=data,
+ get_icon="icon_data",
+ get_size=20,
+ size_scale=1,
+ get_position=["lon", "lat"],
+ pickable=True,
+)
+
+r = pdk.Deck(layers=[icon_layer], initial_view_state=view_state, tooltip={"text": "{city}"})
+r.to_html("icon_layer.html")
diff --git a/scripts/overviewmap/icons.svg b/scripts/overviewmap/icons.svg
new file mode 100644
index 0000000..edcab78
--- /dev/null
+++ b/scripts/overviewmap/icons.svg
@@ -0,0 +1,134 @@
+
+
+
+
diff --git a/scripts/overviewmap/klimawatch-fake.py b/scripts/overviewmap/klimawatch-fake.py
new file mode 100644
index 0000000..c604cba
--- /dev/null
+++ b/scripts/overviewmap/klimawatch-fake.py
@@ -0,0 +1,346 @@
+#!/usr/bin/env python
+
+import pydeck as pdk
+import pandas as pd
+import os
+import sys
+import random
+from geopy.geocoders import Nominatim
+import time
+
+# animation requires jupyter extension:
+# install: (if required)
+#[kugel@tux2 python]$ jupyter nbextension install --overwrite --py pydeck --userInstalling /home/kugel/.local/lib/python3.10/site-packages/pydeck/nbextension/static -> pydeck
+# enable:
+# [kugel@tux2 python]$ jupyter nbextension enable pydeck --user --py
+
+
+
+# cities
+# all files in data dir, extension .csv. Names can be like _something.csv
+cities = [
+ "berlin",
+ "bielefeld",
+ "bonn",
+ "chemnitz",
+ "dortmund",
+ "duesseldorf",
+ "hamburg",
+ "karlsruhe",
+ "koeln",
+ "landau",
+ "leipzig",
+ "moers",
+ "muenchen",
+ "muenster",
+ "paderborn",
+ "ulm"
+]
+
+# csv format: year,category,type,co2,note
+# status: look for 2 rows:
+# 2017,Gesamt,real,19778,
+
+# 2018,Einwohner,Einwohner,3644826,
+# plan: look for
+# 2020,Gesamt,geplant,17702,
+
+datadir = "/home/kugel/temp/okl/klimawatch/data"
+
+files = os.listdir(datadir)
+
+def getPyear(plan,last):
+ if plan.empty:
+ return last.year.values[0]
+ else:
+ return plan[plan.year == plan.year.max()].year.values[0]
+
+def getPco2(plan,last):
+ if plan.empty:
+ return last.co2.values[0]
+ else:
+ return plan[plan.year == plan.year.max()].co2.values[0] + 1 # add one
+
+cityData = pd.DataFrame(columns=["name","pop","type","value","year","co2","lat","lng","color"])
+
+try:
+ locs = pd.read_csv("locs.csv")
+ # force lower case
+ locs.name = locs.apply(lambda x: x["name"].lower(), axis=1)
+ print("Locs available")
+ readLocs = False
+except:
+ geolocator = Nominatim(user_agent="klimawatch")
+ locs = pd.DataFrame(columns=["name","address","latitude","longitude"])
+ readLocs = True
+
+
+for f in files:
+ if not ".csv" in f:
+ continue
+ if "sachstand" in f.lower():
+ continue
+ for c in cities:
+ if f.startswith(c):
+ #print(f)
+ if c.lower() in locs.name.values:
+ loc = locs[locs.name == c]
+ else:
+ # reading
+ print("Reading ",c)
+ loc = geolocator.geocode({"city":c,"country":"Germany"})
+ locs=locs.append({"name":c,"address":loc.address,"latitude":loc.latitude,"longitude":loc.longitude},ignore_index=True)
+ loc = locs[locs.name == c] # reread to get same format
+ readLocs = True # need to write back
+
+## if readLocs:
+## loc = geolocator.geocode({"city":c,"country":"Germany"})
+## locs=locs.append({"name":c,"address":loc.address,"latitude":loc.latitude,"longitude":loc.longitude},ignore_index=True)
+## loc = locs[locs.name == c] # reread to get same format
+## else:
+## loc = locs[locs.name == c]
+
+ city = loc.address.values[0].split(",")[0]
+ lat = loc.latitude.values[0]
+ lon = loc.longitude.values[0]
+ #print(name,lat,lon)
+ df = pd.read_csv("/".join([datadir,f]))
+ #print(df.describe)
+ try:
+ last = df[df.note == "last_emissions"]
+ pop = df[df.category == "Einwohner"]
+ plan = df[(df.type == "geplant") & (df.category == "Gesamt")]
+ if plan.empty:
+ print(f"{f}: Kein Plan")
+ planColor = [100,0,200]
+ else:
+ planColor = [0,200,0]
+ #print(last,pop)
+ #print("Last:",last.year,last.co2)
+ #print("Pop:",pop.year,pop.co2)
+ #print("Plan:",plan.year,plan.co2)
+ # VALUE: to t from kilo-t
+ realItems = {
+ "name":city,
+ "value":round(last.co2.values[0]/pop.co2.values[0]*10000)/10,
+ "type":"Basis",
+ "lng": lon,
+ "lat": lat,
+ "pop":pop.co2.values[0],
+ "year":last.year.values[0],
+ "co2":last.co2.values[0],
+ "color":[200,0,0]
+ }
+ planItems = {
+ "name":city,
+ "value":round(getPco2(plan,last)/pop.co2.values[0]*10000)/10,
+ "type":"Plan",
+ "lng": lon - .05,
+ "lat": lat - .05,
+ "pop":pop.co2.values[0],
+ "year":getPyear(plan,last),
+ "co2":getPco2(plan,last),
+ "color":planColor
+ }
+ # without progress data we copy real times
+ progressItems = {
+ "name":city,
+ "value":round(last.co2.values[0]/pop.co2.values[0]*10000)/10,
+ "type":"Fortschritt",
+ "lng": lon - .05,
+ "lat": lat + .05,
+ "pop":pop.co2.values[0],
+ "year":last.year.values[0],
+ "co2":last.co2.values[0],
+ "color":[0,200,200]
+ }
+ #print("Items:",items)
+ cityData = cityData.append(realItems,ignore_index=True)
+ cityData = cityData.append(planItems,ignore_index=True)
+ cityData = cityData.append(progressItems,ignore_index=True)
+ except:
+ print("failed:", f,"\nlast ",last,"\npop ",pop,"\nplan ",plan)
+ continue
+
+if readLocs:
+ locs.to_csv("locs.csv",index=False)
+
+
+
+# ##################
+ICON_FILE = "georesults.json"
+
+ATTACH_FILE = "../data/fragdenstaat/attachments.json"
+att = pd.read_json(ATTACH_FILE)
+
+icon_urls = {
+ "error":"/error.png",
+ "pdf":"/pdf.png",
+ "delay":"/delay.png",
+ "table":"/table.png"
+ }
+
+icon_data = {
+ # Icon from Wikimedia, used the Creative Commons Attribution-Share Alike 3.0
+ # Unported, 2.5 Generic, 2.0 Generic and 1.0 Generic licenses
+ "url": icon_urls["error"],
+ "width": 64,
+ "height": 64,
+ "anchorY": 64,
+}
+
+# read icon locations
+icons = pd.read_json(ICON_FILE)
+
+# att[att.id == 231612].name.values[0].lower().endswith(".pdf")
+
+def setIcon(status,id):
+ i = icon_data.copy()
+ if status != "solved":
+ i["url"] = icon_urls["delay"]
+ else:
+ i["url"] = icon_urls["error"]
+ if not att[att.request_id == id].empty:
+ print("Check",id)
+ if att[att.request_id == id].name.values[0].lower().endswith(".pdf"):
+ i["url"] = icon_urls["pdf"]
+ elif att[att.request_id == id].name.values[0].lower().find(".xls")>=0:
+ i["url"] = icon_urls["table"]
+ return i
+
+
+# df['col_3'] = df.apply(lambda x: f(x.col_1, x.col_2), axis=1)
+
+icons["icon_data"] = None
+
+icons.icon_data = icons.apply(lambda x: setIcon(x["status"],x["id"]), axis=1)
+
+# copy icon url to base object
+icons["icon"] = icons.icon_data.apply(lambda x :x["url"])
+
+print("Groups: ",icons.groupby(by="icon").size())
+
+def getValue(x):
+ for k in icon_urls:
+ if x == icon_urls[k]:
+ return k
+
+
+
+# copy some other values for pydeck tooltip
+icons["name"] = icons.city
+icons["value"] = icons.icon.apply(getValue)
+icons["type"] = "Frag den Staat"
+
+
+icon_layer = pdk.Layer(
+ type="IconLayer",
+ data=icons,
+ get_icon="icon_data",
+ get_size=20,
+ size_scale=1,
+ get_position=["lon", "lat"],
+ pickable=True,
+
+)
+
+
+# ###################
+
+# fake content
+for i in icons.itertuples():
+ co2 = random.randint(4,15)
+ items = {
+ "name":i.city,
+ "value":co2,
+ "type":"Basis",
+ "lng": i.lon,
+ "lat": i.lat,
+ "pop":100000,
+ "year":2019,
+ "co2":1000,
+ "color":[200,0,0]
+ }
+ cityData = cityData.append(items,ignore_index=True)
+ items = {
+ "name":i.city,
+ "value":random.randint(0,4),
+ "type":"Plan",
+ "lng": i.lon - 0.05,
+ "lat": i.lat - 0.05,
+ "pop":100000,
+ "year":2019,
+ "co2":1000,
+ "color":[0,200,0]
+ }
+ cityData = cityData.append(items,ignore_index=True)
+
+ items = {
+ "name":i.city,
+ "value":co2 * .9,
+ "type":"Fortschritt",
+ "lng": i.lon - 0.05,
+ "lat": i.lat + 0.05,
+ "pop":100000,
+ "year":2019,
+ "co2":1000,
+ "color":[0,200,200]
+ }
+ cityData = cityData.append(items,ignore_index=True)
+
+
+
+# ##################
+
+# types:
+# map_style (str or dict, default 'dark') –
+# One of ‘light’, ‘dark’, ‘road’, ‘satellite’, ‘dark_no_labels’, and ‘light_no_labels’,
+
+# provider:
+# map_provider (str, default 'carto') –
+# If multiple API keys are set (e.g., both Mapbox and Google Maps),
+# inform pydeck which basemap provider to prefer. Values can be carto, mapbox or google_maps
+
+MB_KEY = ""
+
+keys = {"mapbox":MB_KEY}
+
+# Define a layer to display on a map
+layer = pdk.Layer(
+ "ColumnLayer",
+ cityData,
+
+ diskResolution = 12,
+ radius = 2500,
+ extruded = True,
+ pickable = True,
+ elevationScale = 1000,
+
+ getFillColor = "color",
+ getLineColor = [0, 0, 200],
+ getElevation = "value",
+
+ get_position = ["lng", "lat"]
+)
+
+
+# Set the viewport location
+view_state = pdk.ViewState(
+ longitude=10.0, latitude=50, zoom=5, min_zoom=5, max_zoom=15, pitch=50, bearing=0
+ #longitude=8.4, latitude=49, zoom=8, min_zoom=5, max_zoom=15, pitch=40.5, bearing=-27.36,
+)
+
+tooltip = {
+ "text": "{name} - {type}: {value}"
+}
+
+# Render
+#r = pdk.Deck(layers=[layer], initial_view_state=view_state,map_style="dark",map_provider="mapbox",api_keys=keys)
+r = pdk.Deck(layers=[layer],
+ initial_view_state=view_state,map_style="light",
+ tooltip=tooltip
+ )
+
+
+r.to_html("klimawatch-fake.html")
+
diff --git a/scripts/overviewmap/klimawatch.ipynb b/scripts/overviewmap/klimawatch.ipynb
new file mode 100644
index 0000000..61121e9
--- /dev/null
+++ b/scripts/overviewmap/klimawatch.ipynb
@@ -0,0 +1,285 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "a5b5e97b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Locs available\n",
+ "muenchen.csv: Kein Plan\n",
+ "duesseldorf.csv: Kein Plan\n",
+ "bielefeld.csv: Kein Plan\n",
+ "moers.csv: Kein Plan\n",
+ "bonn.csv: Kein Plan\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "9fb659067929440084f112c0163a5a86",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "DeckGLWidget(carto_key=None, custom_libraries=[], google_maps_key=None, json_input='{\"initialViewState\": {\"bea…"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#!/usr/bin/env python\n",
+ "\n",
+ "import pydeck as pdk\n",
+ "import pandas as pd\n",
+ "import os\n",
+ "import sys\n",
+ "import random\n",
+ "from geopy.geocoders import Nominatim\n",
+ "import time\n",
+ "\n",
+ "# animation requires jupyter extension:\n",
+ "# install: (if required)\n",
+ "#[kugel@tux2 python]$ jupyter nbextension install --overwrite --py pydeck --userInstalling /home/kugel/.local/lib/python3.10/site-packages/pydeck/nbextension/static -> pydeck\n",
+ "# enable: \n",
+ "# [kugel@tux2 python]$ jupyter nbextension enable pydeck --user --py\n",
+ "\n",
+ "\n",
+ "\n",
+ "# cities\n",
+ "# all files in data dir, extension .csv. Names can be like _something.csv\n",
+ "cities = [\n",
+ " \"berlin\",\n",
+ " \"bielefeld\",\n",
+ " \"bonn\",\n",
+ " \"chemnitz\",\n",
+ " \"dortmund\",\n",
+ " \"duesseldorf\",\n",
+ " \"hamburg\",\n",
+ " \"karlsruhe\",\n",
+ " \"koeln\",\n",
+ " \"landau\",\n",
+ " \"leipzig\",\n",
+ " \"moers\",\n",
+ " \"muenchen\",\n",
+ " \"muenster\",\n",
+ " \"paderborn\",\n",
+ " \"ulm\"\n",
+ "]\n",
+ "\n",
+ "# csv format: year,category,type,co2,note\n",
+ "# status: look for 2 rows:\n",
+ "# 2017,Gesamt,real,19778,\n",
+ "\n",
+ "# 2018,Einwohner,Einwohner,3644826,\n",
+ "# plan: look for\n",
+ "# 2020,Gesamt,geplant,17702,\n",
+ "\n",
+ "datadir = \"/home/kugel/temp/okl/klimawatch/data\"\n",
+ "\n",
+ "files = os.listdir(datadir)\n",
+ "\n",
+ "def getPyear(plan,last):\n",
+ " if plan.empty:\n",
+ " return last.year.values[0]\n",
+ " else:\n",
+ " return plan[plan.year == plan.year.max()].year.values[0]\n",
+ "\n",
+ "def getPco2(plan,last):\n",
+ " if plan.empty:\n",
+ " return last.co2.values[0]\n",
+ " else:\n",
+ " return plan[plan.year == plan.year.max()].co2.values[0] + 1 # add one \n",
+ "\n",
+ "cityData = pd.DataFrame(columns=[\"name\",\"pop\",\"type\",\"value\",\"year\",\"co2\",\"lat\",\"lng\",\"color\"])\n",
+ "\n",
+ "try: \n",
+ " locs = pd.read_csv(\"locs.csv\")\n",
+ " print(\"Locs available\")\n",
+ " readLocs = False\n",
+ "except:\n",
+ " geolocator = Nominatim(user_agent=\"digital-codes\")\n",
+ " locs = pd.DataFrame(columns=[\"name\",\"address\",\"latitude\",\"longitude\"])\n",
+ " readLocs = True\n",
+ "\n",
+ "\n",
+ "for f in files:\n",
+ " if not \".csv\" in f:\n",
+ " continue\n",
+ " if \"sachstand\" in f.lower():\n",
+ " continue\n",
+ " for c in cities:\n",
+ " if f.startswith(c):\n",
+ " #print(f)\n",
+ " if readLocs:\n",
+ " loc = geolocator.geocode({\"city\":c,\"country\":\"Germany\"})\n",
+ " locs=locs.append({\"name\":c,\"address\":loc.address,\"latitude\":loc.latitude,\"longitude\":loc.longitude},ignore_index=True)\n",
+ " loc = locs[locs.name == c] # reread to get same format\n",
+ " else:\n",
+ " loc = locs[locs.name == c]\n",
+ " city = loc.address.values[0].split(\",\")[0]\n",
+ " lat = loc.latitude.values[0]\n",
+ " lon = loc.longitude.values[0]\n",
+ " #print(name,lat,lon)\n",
+ " df = pd.read_csv(\"/\".join([datadir,f]))\n",
+ " #print(df.describe)\n",
+ " try:\n",
+ " last = df[df.note == \"last_emissions\"]\n",
+ " pop = df[df.category == \"Einwohner\"]\n",
+ " plan = df[(df.type == \"geplant\") & (df.category == \"Gesamt\")]\n",
+ " if plan.empty:\n",
+ " print(f\"{f}: Kein Plan\")\n",
+ " planColor = [100,0,200]\n",
+ " else:\n",
+ " planColor = [0,200,0]\n",
+ " #print(last,pop)\n",
+ " #print(\"Last:\",last.year,last.co2)\n",
+ " #print(\"Pop:\",pop.year,pop.co2)\n",
+ " #print(\"Plan:\",plan.year,plan.co2)\n",
+ " realItems = {\n",
+ " \"name\":city,\n",
+ " \"value\":round(last.co2.values[0]/pop.co2.values[0]*10000)/10,\n",
+ " \"type\":\"Basis\",\n",
+ " \"lng\": lon,\n",
+ " \"lat\": lat,\n",
+ " \"pop\":pop.co2.values[0],\n",
+ " \"year\":last.year.values[0],\n",
+ " \"co2\":last.co2.values[0],\n",
+ " \"color\":[200,0,0]\n",
+ " }\n",
+ " planItems = {\n",
+ " \"name\":city,\n",
+ " \"value\":round(getPco2(plan,last)/pop.co2.values[0]*10000)/10,\n",
+ " \"type\":\"Plan\",\n",
+ " \"lng\": lon - .03,\n",
+ " \"lat\": lat - .03,\n",
+ " \"pop\":pop.co2.values[0],\n",
+ " \"year\":getPyear(plan,last),\n",
+ " \"co2\":getPco2(plan,last),\n",
+ " \"color\":planColor\n",
+ " }\n",
+ " #print(\"Items:\",items)\n",
+ " cityData = cityData.append(realItems,ignore_index=True)\n",
+ " cityData = cityData.append(planItems,ignore_index=True)\n",
+ " except:\n",
+ " print(\"failed:\", f,\"\\nlast \",last,\"\\npop \",pop,\"\\nplan \",plan)\n",
+ " continue\n",
+ "\n",
+ "if readLocs:\n",
+ " locs.to_csv(\"locs.csv\",index=False)\n",
+ "\n",
+ "\n",
+ "# types:\n",
+ "# map_style (str or dict, default 'dark') – \n",
+ "# One of ‘light’, ‘dark’, ‘road’, ‘satellite’, ‘dark_no_labels’, and ‘light_no_labels’,\n",
+ "\n",
+ "# provider:\n",
+ "# map_provider (str, default 'carto') – \n",
+ "# If multiple API keys are set (e.g., both Mapbox and Google Maps), \n",
+ "# inform pydeck which basemap provider to prefer. Values can be carto, mapbox or google_maps\n",
+ "\n",
+ "MB_KEY = \"\"\n",
+ "\n",
+ "keys = {\"mapbox\":MB_KEY}\n",
+ "\n",
+ "# Define a layer to display on a map\n",
+ "layer = pdk.Layer(\n",
+ " \"ColumnLayer\",\n",
+ " cityData,\n",
+ "\n",
+ " diskResolution = 12,\n",
+ " radius = 2500,\n",
+ " extruded = True,\n",
+ " pickable = True,\n",
+ " elevationScale = 10000,\n",
+ "\n",
+ " getFillColor = \"color\",\n",
+ " getLineColor = [0, 0, 200],\n",
+ " getElevation = \"value\",\n",
+ " \n",
+ " get_position = [\"lng\", \"lat\"]\n",
+ ")\n",
+ "\n",
+ "\n",
+ "# Set the viewport location\n",
+ "view_state = pdk.ViewState(\n",
+ " longitude=10.0, latitude=50, zoom=5, min_zoom=5, max_zoom=15, pitch=50, bearing=0\n",
+ " #longitude=8.4, latitude=49, zoom=8, min_zoom=5, max_zoom=15, pitch=40.5, bearing=-27.36,\n",
+ ")\n",
+ "\n",
+ "tooltip = {\n",
+ " \"text\": \"{name} - {type}: {value}t CO2/p/a\"\n",
+ "}\n",
+ "\n",
+ "# Render\n",
+ "#r = pdk.Deck(layers=[layer], initial_view_state=view_state,map_style=\"dark\",map_provider=\"mapbox\",api_keys=keys)\n",
+ "r = pdk.Deck(layers=[layer],\n",
+ " initial_view_state=view_state,map_style=\"light\",\n",
+ " tooltip=tooltip\n",
+ " )\n",
+ "\n",
+ "\n",
+ "r.to_html(\"klimawatch.html\")\n",
+ "\n",
+ "# for animation, make sure to change r.show() against display(r.show())\n",
+ "#r.show()\n",
+ "display(r.show())\n",
+ "\n",
+ "for i in range(100):\n",
+ " view_state.bearing += 1\n",
+ " view_state.zoom += .01\n",
+ " r.update()\n",
+ " time.sleep(.1)\n"
+ ]
+ },
+ {
+ "cell_type": "raw",
+ "id": "3df08628",
+ "metadata": {},
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0a5332c1",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "dd91b7e0",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.10.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/scripts/overviewmap/klimawatch.py b/scripts/overviewmap/klimawatch.py
new file mode 100644
index 0000000..3d10ae2
--- /dev/null
+++ b/scripts/overviewmap/klimawatch.py
@@ -0,0 +1,305 @@
+#!/usr/bin/env python
+
+import pydeck as pdk
+import pandas as pd
+import os
+import sys
+import random
+from geopy.geocoders import Nominatim
+import time
+
+# animation requires jupyter extension:
+# install: (if required)
+#[kugel@tux2 python]$ jupyter nbextension install --overwrite --py pydeck --userInstalling /home/kugel/.local/lib/python3.10/site-packages/pydeck/nbextension/static -> pydeck
+# enable:
+# [kugel@tux2 python]$ jupyter nbextension enable pydeck --user --py
+
+
+
+# cities
+# all files in data dir, extension .csv. Names can be like _something.csv
+cities = [
+ "berlin",
+ "bielefeld",
+ "bonn",
+ "chemnitz",
+ "dortmund",
+ "duesseldorf",
+ "hamburg",
+ "karlsruhe",
+ "koeln",
+ "landau",
+ "leipzig",
+ "moers",
+ "muenchen",
+ "muenster",
+ "paderborn",
+ "ulm"
+]
+
+# csv format: year,category,type,co2,note
+# status: look for 2 rows:
+# 2017,Gesamt,real,19778,
+
+# 2018,Einwohner,Einwohner,3644826,
+# plan: look for
+# 2020,Gesamt,geplant,17702,
+
+datadir = "/home/kugel/temp/okl/klimawatch/data"
+
+files = os.listdir(datadir)
+
+def getPyear(plan,last):
+ if plan.empty:
+ return last.year.values[0]
+ else:
+ return plan[plan.year == plan.year.max()].year.values[0]
+
+def getPco2(plan,last):
+ if plan.empty:
+ return last.co2.values[0]
+ else:
+ return plan[plan.year == plan.year.max()].co2.values[0] + 1 # add one
+
+cityData = pd.DataFrame(columns=["name","pop","type","value","year","co2","lat","lng","color"])
+
+try:
+ locs = pd.read_csv("locs.csv")
+ # force lower case
+ locs.name = locs.apply(lambda x: x["name"].lower(), axis=1)
+ print("Locs available")
+ readLocs = False
+except:
+ geolocator = Nominatim(user_agent="klimawatch")
+ locs = pd.DataFrame(columns=["name","address","latitude","longitude"])
+ readLocs = True
+
+
+for f in files:
+ if not ".csv" in f:
+ continue
+ if "sachstand" in f.lower():
+ continue
+ for c in cities:
+ if f.startswith(c):
+ #print(f)
+ if c.lower() in locs.name.values:
+ loc = locs[locs.name == c]
+ else:
+ # reading
+ print("Reading ",c)
+ loc = geolocator.geocode({"city":c,"country":"Germany"})
+ locs=locs.append({"name":c,"address":loc.address,"latitude":loc.latitude,"longitude":loc.longitude},ignore_index=True)
+ loc = locs[locs.name == c] # reread to get same format
+ readLocs = True # need to write back
+
+## if readLocs:
+## loc = geolocator.geocode({"city":c,"country":"Germany"})
+## locs=locs.append({"name":c,"address":loc.address,"latitude":loc.latitude,"longitude":loc.longitude},ignore_index=True)
+## loc = locs[locs.name == c] # reread to get same format
+## else:
+## loc = locs[locs.name == c]
+
+ city = loc.address.values[0].split(",")[0]
+ lat = loc.latitude.values[0]
+ lon = loc.longitude.values[0]
+ #print(name,lat,lon)
+ df = pd.read_csv("/".join([datadir,f]))
+ #print(df.describe)
+ try:
+ last = df[df.note == "last_emissions"]
+ pop = df[df.category == "Einwohner"]
+ plan = df[(df.type == "geplant") & (df.category == "Gesamt")]
+ if plan.empty:
+ print(f"{f}: Kein Plan")
+ planColor = [100,0,200]
+ else:
+ planColor = [0,200,0]
+ #print(last,pop)
+ #print("Last:",last.year,last.co2)
+ #print("Pop:",pop.year,pop.co2)
+ #print("Plan:",plan.year,plan.co2)
+ # VALUE: to t from kilo-t
+ realItems = {
+ "name":city,
+ "value":round(last.co2.values[0]/pop.co2.values[0]*10000)/10,
+ "type":"Basis",
+ "lng": lon,
+ "lat": lat,
+ "pop":pop.co2.values[0],
+ "year":last.year.values[0],
+ "co2":last.co2.values[0],
+ "color":[200,0,0]
+ }
+ planItems = {
+ "name":city,
+ "value":round(getPco2(plan,last)/pop.co2.values[0]*10000)/10,
+ "type":"Plan",
+ "lng": lon - .05,
+ "lat": lat - .05,
+ "pop":pop.co2.values[0],
+ "year":getPyear(plan,last),
+ "co2":getPco2(plan,last),
+ "color":planColor
+ }
+ # without progress data we copy real times
+ progressItems = {
+ "name":city,
+ "value":round(last.co2.values[0]/pop.co2.values[0]*10000)/10,
+ "type":"Fortschritt",
+ "lng": lon - .05,
+ "lat": lat + .05,
+ "pop":pop.co2.values[0],
+ "year":last.year.values[0],
+ "co2":last.co2.values[0],
+ "color":[0,200,200]
+ }
+ #print("Items:",items)
+ cityData = cityData.append(realItems,ignore_index=True)
+ cityData = cityData.append(planItems,ignore_index=True)
+ cityData = cityData.append(progressItems,ignore_index=True)
+ except:
+ print("failed:", f,"\nlast ",last,"\npop ",pop,"\nplan ",plan)
+ continue
+
+if readLocs:
+ locs.to_csv("locs.csv",index=False)
+
+
+
+# ##################
+ICON_FILE = "georesults.json"
+
+ATTACH_FILE = "../data/fragdenstaat/attachments.json"
+att = pd.read_json(ATTACH_FILE)
+
+icon_urls = {
+ "error":"/error.png",
+ "pdf":"/pdf.png",
+ "delay":"/delay.png",
+ "table":"/table.png"
+ }
+
+icon_data = {
+ # Icon from Wikimedia, used the Creative Commons Attribution-Share Alike 3.0
+ # Unported, 2.5 Generic, 2.0 Generic and 1.0 Generic licenses
+ "url": icon_urls["error"],
+ "width": 64,
+ "height": 64,
+ "anchorY": 64,
+}
+
+# read icon locations
+icons = pd.read_json(ICON_FILE)
+
+# att[att.id == 231612].name.values[0].lower().endswith(".pdf")
+
+def setIcon(status,id):
+ i = icon_data.copy()
+ if status != "solved":
+ i["url"] = icon_urls["delay"]
+ else:
+ i["url"] = icon_urls["error"]
+ if not att[att.request_id == id].empty:
+ print("Check",id)
+ if att[att.request_id == id].name.values[0].lower().endswith(".pdf"):
+ i["url"] = icon_urls["pdf"]
+ elif att[att.request_id == id].name.values[0].lower().find(".xls")>=0:
+ i["url"] = icon_urls["table"]
+ return i
+
+
+# df['col_3'] = df.apply(lambda x: f(x.col_1, x.col_2), axis=1)
+
+icons["icon_data"] = None
+
+icons.icon_data = icons.apply(lambda x: setIcon(x["status"],x["id"]), axis=1)
+
+# copy icon url to base object
+icons["icon"] = icons.icon_data.apply(lambda x :x["url"])
+
+print("Groups: ",icons.groupby(by="icon").size())
+
+def getValue(x):
+ for k in icon_urls:
+ if x == icon_urls[k]:
+ return k
+
+
+
+# copy some other values for pydeck tooltip
+icons["name"] = icons.city
+icons["value"] = icons.icon.apply(getValue)
+icons["type"] = "Frag den Staat"
+
+# on click maybe not in pydeck
+# https://deck.gl/docs/developer-guide/interactivity
+
+icon_layer = pdk.Layer(
+ type="IconLayer",
+ data=icons,
+ get_icon="icon_data",
+ get_size=20,
+ size_scale=1,
+ get_position=["lon", "lat"],
+ pickable=True,
+
+)
+
+
+# ###################
+
+
+# types:
+# map_style (str or dict, default 'dark') –
+# One of ‘light’, ‘dark’, ‘road’, ‘satellite’, ‘dark_no_labels’, and ‘light_no_labels’,
+
+# provider:
+# map_provider (str, default 'carto') –
+# If multiple API keys are set (e.g., both Mapbox and Google Maps),
+# inform pydeck which basemap provider to prefer. Values can be carto, mapbox or google_maps
+
+MB_KEY = ""
+
+keys = {"mapbox":MB_KEY}
+
+# Define a layer to display on a map
+layer = pdk.Layer(
+ "ColumnLayer",
+ cityData,
+
+ diskResolution = 12,
+ radius = 2500,
+ extruded = True,
+ pickable = True,
+ elevationScale = 10000,
+
+ getFillColor = "color",
+ getLineColor = [0, 0, 200],
+ getElevation = "value",
+
+ get_position = ["lng", "lat"]
+)
+
+
+# Set the viewport location
+view_state = pdk.ViewState(
+ longitude=10.0, latitude=50, zoom=5, min_zoom=5, max_zoom=15, pitch=50, bearing=0
+ #longitude=8.4, latitude=49, zoom=8, min_zoom=5, max_zoom=15, pitch=40.5, bearing=-27.36,
+)
+
+tooltip = {
+ "text": "{name} - {type}: {value}",
+ # "html": "Frag den Staat"
+}
+
+# Render
+#r = pdk.Deck(layers=[layer], initial_view_state=view_state,map_style="dark",map_provider="mapbox",api_keys=keys)
+r = pdk.Deck(layers=[icon_layer,layer],
+ initial_view_state=view_state,map_style="light",
+ tooltip=tooltip
+ )
+
+
+r.to_html("klimawatch.html")
+
diff --git a/scripts/overviewmap/locs.csv b/scripts/overviewmap/locs.csv
new file mode 100644
index 0000000..92131e3
--- /dev/null
+++ b/scripts/overviewmap/locs.csv
@@ -0,0 +1,18 @@
+name,address,latitude,longitude
+koeln,"Köln, Nordrhein-Westfalen, Deutschland",50.938361,6.959974
+ulm,"Ulm, Baden-Württemberg, Deutschland",48.3974003,9.9934336
+muenchen,"München, Bayern, Deutschland",48.1371079,11.5753822
+chemnitz,"Chemnitz, Sachsen, Deutschland",50.8322608,12.9252977
+muenster,"Münster, Nordrhein-Westfalen, Deutschland",51.9625101,7.6251879
+duesseldorf,"Düsseldorf, Nordrhein-Westfalen, Deutschland",51.2254018,6.7763137
+berlin,"Berlin, Deutschland",52.5170365,13.3888599
+leipzig,"Leipzig, Sachsen, Deutschland",51.3406321,12.3747329
+dortmund,"Dortmund, Nordrhein-Westfalen, Deutschland",51.5142273,7.4652789
+bielefeld,"Bielefeld, Nordrhein-Westfalen, Deutschland",52.0191005,8.531007
+moers,"Moers, Kreis Wesel, Nordrhein-Westfalen, Deutschland",51.451283,6.62843
+hamburg,"Hamburg, Deutschland",53.550341,10.000654
+bonn,"Bonn, Nordrhein-Westfalen, Deutschland",50.735851,7.10066
+landau,"Landau in der Pfalz, Rheinland-Pfalz, Deutschland",49.1982825,8.1123441
+berlin,"Berlin, Deutschland",52.5170365,13.3888599
+karlsruhe,"Karlsruhe, Baden-Württemberg, Deutschland",49.0068705,8.4034195
+paderborn,"Paderborn, Kreis Paderborn, Nordrhein-Westfalen, Deutschland",51.71895955,8.764869778177559
diff --git a/scripts/overviewmap/pdf.png b/scripts/overviewmap/pdf.png
new file mode 100644
index 0000000..1c12e66
Binary files /dev/null and b/scripts/overviewmap/pdf.png differ
diff --git a/scripts/overviewmap/table.png b/scripts/overviewmap/table.png
new file mode 100644
index 0000000..eeb6702
Binary files /dev/null and b/scripts/overviewmap/table.png differ
diff --git a/setup.py b/setup.py
index 40be54d..621f382 100644
--- a/setup.py
+++ b/setup.py
@@ -3,9 +3,9 @@
setup(
name="Klimawatch",
description="Ein Open Data-Plattform zur Darstellung von kommunalen CO2-Emissionen und Schutzkonzepten",
- version="0.1.0",
+ version="0.1.1",
author="Code for Germany",
- author_email="muenster@codefor.de",
+ author_email="info@klimawatch.de",
url="https://klimawatch.de/",
classifiers=[
"Programming Language :: Python :: 3",