Als täglicher Bahnfahrer habe ich nach einer Möglichkeit gesucht, mir mit wenig Aufwand die Zugverspätungen und -ausfälle auf meinem Smartphone anzeigen zu lassen. Glücklicherweise ist die Deutsche Bahn im Bereich OpenData unterwegs und bietet eine HTTP API an, die Veränderungen am planmäßigen Verkehr (ganz wichtig: auch Nahverkehr) bereitstellt. Wenn man einmal (bis zum nächsten Fahrplanwechsel) die Zug-IDs ermittelt hat, macht die Timetables API das, was ich brauche. Leider gibt es bisher zu Nachrichten wie „Ein Wagen fehlt“ keine Zuordnung von Message-IDs zu den dahinterstehenden Texten. Auf meine Anfrage diesbezüglich an dbopendata@deutschebahn.com habe ich leider keine Antwort bekommen. Verspätungen und Zugausfälle funktionieren aber prima.
Am 14.08.17 erreichte mich die Nachricht vom DWD, dass es nun den Open Data Server gibt und dieser bis Ende des Jahres den GDS (FTP-Server) ablösen wird.
Alle Infos zum Open Data Server hier!
Bei näherer Recherche, wie ich denn darüber an die Wetterwarnungen komme, habe ich festgestellt, dass es etwas einfacher wird mit diesem Open Data Server.
ACHTUNG: Der GDS-FTP-Server wurde zum 15.01.2018 abgeschaltet.
ACHTUNG: Der GDS-FTP-Server wird zum 15.01.2018 abgeschaltet.
Wie schon im ersten Beitrag zu erahnen, war ich mit den Wetterdaten auf Landkreisebene nicht wirklich zufrieden. Es soll zwar irgendwann auch eine Json-Schnittstelle mit Gemeindewarnungen geben, aber diese gibt noch nicht.
Der DWD liefert per FTP-Server – ebenfalls kostenlos – Wetterdaten im CAP-Format auf Gemeindeebene an. Das Ganze nennt sich GDS (Global Basic Data Set) und ist hier zu finden:
http://www.dwd.de/DE/leistungen/gds/gds.html?nn=480258
Nach einer kostenlosen Registrierung erhält man per Mail die FTP-Zugangsdaten. Der FTP-Server ist voll von Wetterdaten und Grafiken. An der richtigen Stelle findet man eine Menge ZIP-Dateien die unterschiedlich viele XML-CAP-Dateien enthalten.
In der zuletzt erstellten ZIP-Datei sind die aktuellen Meldungen enthalten. Für jede Wetterwarnung in Deutschland steht eine XML-CAP-Datei, worin die betroffenen Regionen aufgelistet sind (auf Gemeindeebene).
Hier ein Beispiel eines „Warnhinweis vor STARKWIND“ für das Seegebiet Viking in der Nordsee (Warncell-ID 401000006):
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <alert xmlns="urn:oasis:names:tc:emergency:cap:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:emergency:cap:1.2 https://werdis.dwd.de/conf/CAP-DWD-Profil-v2.1.xsd"> <identifier>2.49.0.1.276.DWD.PVW.1484593937218.17</identifier> <sender>CAP@dwd.de</sender> <sent>2017-01-16T19:13:00+00:00</sent> <status>Actual</status> <msgType>Alert</msgType> <source>PVW</source> <scope>Public</scope> <info> <language>de-DE</language> <category>Met</category> <event>Starkwind</event> <responseType>None</responseType> <urgency>Immediate</urgency> <severity>Minor</severity> <certainty>Observed</certainty> <eventCode> <valueName>PROFILE_VERSION</valueName> <value>2.1</value> </eventCode> <eventCode> <valueName>LICENSE</valueName> <value>Geobasisdaten: Copyright Bundesamt für Kartographie und Geodäsie, Frankfurt am Main, 2013</value> </eventCode> <eventCode> <valueName>II</valueName> <value>14</value> </eventCode> <eventCode> <valueName>GROUP</valueName> <value>WIND</value> </eventCode> <eventCode> <valueName>AREA_COLOR</valueName> <value>255 255 0</value> </eventCode> <effective>2017-01-16T17:19:00+00:00</effective> <onset>2017-01-16T17:19:00+00:00</onset> <senderName>DWD / Seewetterdienst Hamburg</senderName> <headline>Warnhinweis vor STARKWIND </headline> <description>Süd um 6, südwestdrehend, abnehmend 4 bis 5, strichweise diesig, See 3 Meter. </description> <instruction/> <web>http://www.wettergefahren.de</web> <contact>Deutscher Wetterdienst</contact> <area> <areaDesc>Viking</areaDesc> <geocode> <valueName>WARNCELLID</valueName> <value>401000006</value> </geocode> <geocode> <valueName>STATE</valueName> <value>SH</value> </geocode> <altitude>0.0</altitude> <ceiling>9842.5197</ceiling> </area> </info> </alert>
Im Gegensatz zu den Json-Daten gibt es hierzu eine vollständige Dokumentation, was mich sehr gefreut hat:
http://www.dwd.de/DE/leistungen/gds/help/warnungen/cap_dwd_profile_de_pdf.pdf
Das Prinzip der Json-Variante, bei der bei jedem Aufruf der Webseite, die Json-Daten ausgewertet wurden, lässt sich hier natürlich nicht anwenden. Die Zeit, die das Script brauchen würde, die Infos aus den Dateien in der ZIP-Datei vom FTP-Server zu lesen, wäre viel zu lang und die Darstellung auf der Webseite wäre viel zu sehr verzögert.
Aus diesem Grund ist mir die Idee gekommen, die Wetterdaten selbst aufzubereiten und im gleichen Format wie der DWD es tut bereitzustellen. Das hat den Vorteil, dass ich mein bisheriges Script zur Anzeige der Warnungen kaum verändern muss.
Mein Ziel war es, Wetterwarnungen für eine bestimmte Region auf einer Webseite (www.merkenonline.de Info-Plattform für den Ort Düren-Merken) darzustellen. Glücklicherweise bietet der Deutsche Wetterdienst Unwetterwarnung in verschiedenen Varianten kostenlos an. Mein erster Ansatz war das Parsen der Unwetterdaten im Json-Format:
http://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json
Daten-Beispiel:
{ "time":1484853036000, "warnings":{ "105512000":[{ //Warncell-ID des Landkreises "start":1484841600000, "end":1484910000000, "regionName":"Stadt Bottrop", "level":2, "type":5, "altitudeStart":null, "event":"FROST", "headline":"Amtliche WARNUNG vor FROST", "description":"Es tritt mäßiger Frost zwischen -4 °C und -9 °C auf.", "altitudeEnd":null, "stateShort":“NRW“, "instruction":"", "state":"Nordrhein-Westfalen" }] }, "vorabInformation":{ ## gleiches Format ## } }
Tabelle mit Warncell-IDs für die Landkreise:
http://www.dwd.de/DE/leistungen/gds/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=4
Der DWD liefert genauer gesagt im JSONP-Format und nicht im reinen JSON-Format. Der einzige Unterschied liegt jedoch darin, dass das reine JSON in „warnWetter.loadWarnings(‚“ und „);“ eingeschlossen ist.
Mit folgendem Script werden die Daten gelesen und entsprechend formatiert ausgegeben.
Neueste Kommentare