Skip to content

ZeitOnline/waermestreifen-gemeinden-scripts

Repository files navigation

Skripte

Dies ist eine Zusammenstellung der Skripte, mit denen die Wärmestreifen und Karten im Artikel Viel zu warm hier auf Zeit Online reproduziert werden können. Detaillierte Informationen zur Methodik befinden sich im Text und im Methodikkasten. Die Darstellung basiert auf den Warming Stripes von Ed Hawkins.

Benötigte Tools

Die Skripte benötigen eine ganze Reihe an Kommandozeilen-Tools, um Daten umzuwandeln und zu bearbeiten.

  • GDAL — .asc in GeoTIFF umzuwandeln.
  • shapefile — Shapefile in GeoJSON umzuwandeln.
  • rasterstats — GeoJSON mit einem GeoTIFF kombinieren und "Zonal Statistics" durchfügen.
  • topojson — GeoJSON in TopoJSON umwandeln.
  • ndjson-cli — Unterstützung von Newline-delimited JSON
  • geoproject — Kommandozeilenversion von d3-geo
  • topojson-simplify — TopoJSON vereinfachen
  • convert — Funktion von Imagemagick, um SVG in PNG umzuwandeln.

Außerdem brauchen wir eine Reihe an npm-Modulen, die mit $ npm install installiert werden.

1. Temperaturdaten herunterladen

Die Daten zu den Durchschnittstemperaturen werden vom Deutschen Wetterdienst (DWD) als Open Data bereitsgestellt. Sie liegen als gzippte .asc-Daten vor. Diese können mit dem Shell Script fetch-data.sh alle auf einmal heruntergeladen werden.

$ ./fetch-data.sh

2. asc → geojson Extrahieren der Daten

Die Daten, die in den .asc-Files als einzelne Rasterpunkte vorliegen, werden nun einzelnen Gemeinden zugewiesen. Dafür wird jeweils ein .asc-File mit dem Shapefile der Gemeinden (Quelle: Bundesamt für Kartografie und Geodäsie (© GeoBasis-DE / BKG) mit Stand 31. Dezember 2017) kombiniert. Alle Rasterpunkte, die innerhalb einer Gemeinde liegen, werden addiert und der Mittelwert berechnet. Das Ergebnis wird als GeoJSON bzw. TopoJSON ausgegeben. Dafür wird der folgende Befehl benötigt:

$ ./asc-to-topo.sh

3. geojson → csv

Als nächstes werden die Temperaturdaten, die nun in einzelnen GeoJSONs – eines pro Jahr – bereit stehen, in ein csv-File schreiben, mit dem effizienter gearbeitet werden kann. Zudem brauchen wir die Daten nicht nach Jahr, sondern nach Gemeinde, um die Wärmestreifen zu berechnen.

$ node geojson-to-csv.js

4. csv → Wärmestreifen

Die Wärmestreifen werden mit einem node-Skript erstellt. Dieses lädt das .csv-File vom vorherigen Schritt und generiert ein Bild pro Zeile.

$ node create-warming-stripes.js

5. geojson + csv → Wärmekarten

Die Karten werden mit einem Shell-Script erstellt. Dabei wird aus jedem GeoJSON eine Karte erstellt. Da aber in jedem GeoJSON nur die Daten für jeweils ein jahr sind, ruft es zudem für jede Gemeinde get-district-color.js auf, welches wiederum das CSV aus Schritt 3 lädt und die entsprechende Temperaturabweichung berechnet. Auf einer Effizienzskala von langsam bis schnell liegt das wohl eher bei der megalangsam, aber es erfüllt den Zweck.

$ ./create-warming-maps.sh

Viel Erfolg beim Reproduzieren!