Sturmwarnung.online - Geovisualisierung mehrer Datenquellen
- Oliver Heisel
- 10. Juli
- 4 Min. Lesezeit
Aktualisiert: 28. Juli

Sturmwarnung.online ist eine webbasierte Geovisualisierung für Sturmwarnungen in der Schweiz. Die Anwendung führt Warninformationen aus mehreren kantonalen Quellen sowie von MeteoSchweiz zusammen und stellt sie zentral auf einer interaktiven Karte bereit. Dadurch entsteht eine einheitliche Übersicht, ohne dass die einzelnen Informationsquellen separat aufgerufen werden müssen.
Ausgangslage
Informationen zu Sturmwarnungen werden von verschiedenen Kantonen und Behörden über eigene Webseiten bereitgestellt. Die Daten liegen dadurch dezentral vor und unterscheiden sich hinsichtlich Aufbau, Darstellung und technischer Bereitstellung.
Für Nutzerinnen und Nutzer bedeutet dies, dass mehrere Webseiten geprüft werden müssen, um einen Überblick über die aktuelle Warnlage zu erhalten. Eine zentrale und geografisch zusammenhängende Darstellung der verfügbaren Informationen war nicht vorhanden.
Definierte Lösung
Entwickelt wurde eine zentrale Webanwendung, welche die verfügbaren Sturmwarnungen aus mehreren Quellen automatisiert erfasst, vereinheitlicht und auf einer gemeinsamen Karte visualisiert.
Der definierte Lösungsumfang umfasste:
die automatisierte Erfassung der Warninformationen
die strukturierte Speicherung der aufbereiteten Daten
die Zusammenführung unterschiedlicher Datenquellen
die geografische Darstellung der Warnlage
die Bereitstellung über eine öffentlich erreichbare Webseite
den Aufbau einer wartbaren und erweiterbaren Systemarchitektur
Ergebnis & Mehrwert
Webseite: https://sturmwarnung.online

Mit Sturmwarnung.online wurde eine zentrale Webanwendung entwickelt, die Sturmwarnungen aus mehreren kantonalen Quellen und von MeteoSchweiz automatisiert zusammenführt und auf einer interaktiven Karte darstellt.
Die Lösung umfasst einen mit Playwright entwickelten Webscraper, eine PostgreSQL-Datenbank, eine Dash-Webanwendung sowie eine containerisierte Bereitstellung über Docker. Die Warninformationen werden alle 30 Sekunden neu ausgelesen und mit einem Statussystem zur Überwachung der Datenaktualität ergänzt.
Dadurch erhalten Nutzerinnen und Nutzer eine einheitliche Übersicht über die aktuelle Warnlage, ohne mehrere Webseiten einzeln prüfen zu müssen. Unterschiedliche Datenquellen werden in einer gemeinsamen geografischen Darstellung zusammengeführt und technisch überwacht.
Der modulare Aufbau ermöglicht zudem eine spätere Erweiterung um zusätzliche Seen, Kantone oder weitere Warnquellen. Gleichzeitig bleibt der Betrieb durch die kostengünstige Serverinfrastruktur wirtschaftlich und kann bei steigenden Zugriffszahlen skaliert werden.
Technische Ausgestaltung
Die technische Architektur von Sturmwarnung.online besteht aus drei zentralen Komponenten: einem automatisierten Webscraper, einer PostgreSQL-Datenbank und einer mit Dash entwickelten Webanwendung. Alle Komponenten werden in einer Docker-Umgebung auf einem Hetzner-Server betrieben.

Die Architekturübersicht zeigt den vollständigen Datenfluss von den angebundenen Warnquellen über die Verarbeitung und Speicherung bis zur öffentlichen Bereitstellung der Webseite.
Datenerfassung mit Playwright
Die Warninformationen werden aus den Webseiten der kantonalen Sturmwarndienste von Zürich, Thurgau und Bern sowie aus den Gefahreninformationen von MeteoSchweiz ausgelesen. Hierfür wurde ein Webscraper mit Playwright entwickelt. Der Scraper öffnet die angebundenen Webseiten automatisiert, verarbeitet die dargestellten Inhalte und extrahiert die für die Sturmwarnung relevanten Informationen. Der Scraping-Prozess wird alle 30 Sekunden ausgeführt. Die erfassten Daten werden anschließend vereinheitlicht und in einer PostgreSQL-Datenbank gespeichert. Dadurch steht der Webanwendung jederzeit ein zentraler und einheitlich strukturierter Datenbestand zur Verfügung.
Überwachung der Datenaktualität
Da die angebundenen Webseiten und insbesondere MeteoSchweiz ihre Informationen nicht immer in gleichmäßigen Abständen aktualisieren, werden zwei unterschiedliche Zeitpunkte überwacht:
Zeitpunkt des letzten erfolgreichen Scraping-Vorgangs
Zeitpunkt der letzten inhaltlichen Aktualisierung durch die Datenquelle
Der Zustand einer Datenquelle wird über ein Farbsystem dargestellt:
Weiß: Die Quelle wurde innerhalb der letzten fünf Minuten erfolgreich ausgelesen und die bereitgestellten Warninformationen sind aktuell.
Orange: Die Quelle wurde innerhalb der letzten fünf Minuten erfolgreich ausgelesen, die letzte inhaltliche Aktualisierung durch MeteoSchweiz liegt jedoch mehr als 20 Minuten zurück.
Rot: Der letzte erfolgreiche Scraping-Vorgang liegt mehr als fünf Minuten zurück. Dies deutet auf eine nicht erreichbare Quelle, eine veränderte Webseitenstruktur oder einen technischen Fehler beim Scraping hin.
Dadurch kann zwischen einem technischen Fehler bei der Datenerfassung und einer verzögerten Aktualisierung durch den ursprünglichen Datenanbieter unterschieden werden.
Speicherung und Verarbeitung
Die ausgelesenen Warninformationen werden in einer PostgreSQL-Datenbank gespeichert. Die Datenbank bildet die zentrale Verbindung zwischen dem Webscraper und der Webanwendung.
Durch die Trennung von Datenerfassung, Datenspeicherung und Darstellung können die einzelnen Komponenten unabhängig voneinander weiterentwickelt und gewartet werden. Änderungen an einer Datenquelle müssen dadurch nicht unmittelbar zu Anpassungen an der Benutzeroberfläche führen.
Webanwendung mit Dash
Die interaktive Webanwendung wurde mit dem Python-Framework Dash entwickelt. Dash übernimmt sowohl die Darstellung der Warninformationen als auch die Interaktion mit der Karte.
Für die geografische Darstellung wurden eigene GeoJSON-Dateien für die relevanten Schweizer Seen erstellt. Diese Dateien enthalten die geografischen Konturen der Gewässer und ermöglichen es, die ausgelesenen Warnzustände den jeweiligen Seen eindeutig zuzuordnen.
Die Warnlage wird dadurch nicht nur als textliche Information, sondern unmittelbar in ihrem geografischen Zusammenhang dargestellt. Die Kartenstruktur kann zukünftig um weitere Seen, Kantone oder zusätzliche Warninformationen erweitert werden.
Containerisierung und Versionsverwaltung
Webscraper, PostgreSQL-Datenbank und Dash-Webanwendung werden in einer gemeinsamen Docker-Umgebung betrieben. Für die einzelnen Komponenten werden reproduzierbare Docker-Images erstellt.
Dadurch kann die Anwendung unabhängig von der lokalen Entwicklungsumgebung einheitlich bereitgestellt werden. Aktualisierungen lassen sich kontrolliert testen und anschließend auf dem Server ausrollen.
Der vollständige Quellcode und die Konfiguration der Anwendung werden über GitHub versioniert. Änderungen an Scraping-Logik, Datenverarbeitung, GeoJSON-Dateien oder Benutzeroberfläche bleiben dadurch nachvollziehbar. Gleichzeitig ermöglicht die Versionsverwaltung eine strukturierte Weiterentwicklung und bei Bedarf die Wiederherstellung früherer Anwendungsstände.
Hosting und Skalierbarkeit
Die Anwendung wird auf einem kostengünstigen Hetzner-Server betrieben. Dadurch bleiben die laufenden Infrastrukturkosten insbesondere in der Anfangsphase gering.
Die Docker-basierte Architektur ermöglicht es, die Anwendung bei steigenden Zugriffszahlen weiterzuentwickeln. Die Leistung des Hetzner-Servers kann bei Bedarf erhöht werden. Zusätzlich können Webanwendung, Datenbank und Scraping-Prozess zukünftig auf getrennte Systeme oder mehrere Instanzen verteilt werden.
Damit ist die Lösung für den aktuellen Umfang wirtschaftlich dimensioniert, kann aber bei einem größeren Nutzeraufkommen oder bei der Integration zusätzlicher Datenquellen erweitert werden.
Sicherheit und öffentliche Bereitstellung
Die öffentliche Bereitstellung von sturmwarnung.online erfolgt über Cloudflare. Zwischen der Domain und dem Hetzner-Server wird eine abgesicherte Verbindung über einen Cloudflare Tunnel hergestellt.
Der Server muss dadurch nicht direkt über seine öffentliche IP-Adresse für die Webanwendung erreichbar sein. Auch das Öffnen eines öffentlichen Webserver-Ports in der Server-Firewall ist für die Bereitstellung über den Tunnel nicht erforderlich. Die Verbindung wird stattdessen vom Server ausgehend zu Cloudflare aufgebaut.
Cloudflare übernimmt dabei mehrere sicherheitsrelevante Aufgaben:
verschlüsselte Bereitstellung der Webseite über HTTPS
Schutz und Abschirmung der tatsächlichen Server-IP-Adresse
Weiterleitung des Datenverkehrs über einen abgesicherten Tunnel
Reduzierung der direkt erreichbaren Angriffsfläche des Servers
Filterung auffälliger oder unerwünschter Webanfragen
Schutz vor einem erhöhten oder missbräuchlichen Anfrageaufkommen
zentrale Verwaltung der Domain und der TLS-Verschlüsselung
Öffentliche Anfragen werden damit zunächst von Cloudflare verarbeitet und anschließend über den Tunnel an die Dash-Webanwendung weitergeleitet. Der eigentliche Hetzner-Server bleibt vom öffentlichen Webzugriff getrennt und stellt die Anwendung nicht unmittelbar über seine eigene IP-Adresse bereit.
Eingesetzte Technologien:
Python · Dash · Playwright · PostgreSQL · Docker · GeoJSON · GitHub · Hetzner Cloud · Cloudflare Tunnel



