Tag Archive » parse

Google-Kalender Parser

Mein Ziel war es Termine auf einer Webseite anzuzeigen und diese am Besten komfortabel von unterwegs zu ändern bzw. zu ergänzen. Daraus entstand die Idee, einen Google-Kalender als Grundlage zu nehmen, da sich so ein Kalender einfach auf dem Smartphone sowie am PC im Browser verwalten lässt.

Da die Termine des Kalenders, den man dazu nutzt, ja öffentlich sichtbar sein sollen, muss man den Kalender im Google-Konto unter den Kalendereinstellungen öffentlich machen. Anschließend kann man über die Kalenderadresse (ebenfalls in den Kalendereinstellungen zu finden) auf die ICS-Datei zu greifen.

Read More

Wetterwarnungen vom DWD – Alternative: GDS (FTP)

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.

FTP-Ordnerstruktur

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.

Read More