-
Notifications
You must be signed in to change notification settings - Fork 4
Niederschlagsradar
Der Deutsche Wetterdienst bietet unterschiedlich aufbereitete Radar-Daten an, die in binären Formaten zur maschinellen Weiterverarbeitung bereitgestellt werden. Diese WeeWX-Erweiterung enthält auch ein Modul zur Verarbeitung von Radardaten.
Bei den Formaten, die von diesem Modul ausgewertet werden können, ist Deutschland in ein 1km-Raster eingeteilt. Für jeden Rasterpunkt werden verschiedene Meßwerte bereitgestellt. Die Daten werden alle 5 Minuten aktualisiert. Das paßt insoweit sehr gut zum Standard-Aktualisierungsintervall von WeeWX. In Auswertung dieser Daten liefert das Modul folgende Daten:
- aktuelle Meßwerte für in der Konfiguration definierte Orte als WeeWX-Variable (observation type) zur Darstellung in Skins
- Karten für Deutschland oder einen Teil davon als PNG-Datei
- Vorhersage der Radarreflektivität und der Niederschlagsintensität für die nächsten zwei Stunden als animierte GIF-Datei
Das Format HG liefert den aktuellen Niederschlagsstatus (d.h. gibt es Niederschlag und wenn ja, welcher Art). Die Werte werden zusätzlich in den passenden wawa-Code zur Darstellung von Niederschlagssymbolen (Icons) mittels $presentweather
umgewandelt. Die Karte zeigt die Niederschlagsart durch Farben. Eine Vorhersage stellt der Deutsche Wetterdienst für dieses Format nicht bereit.
Das Format WN liefert den Wert der Radarreflektivität dBZ. Dabei werden nicht nur die aktuellen Meßwerte übermittelt, sondern auch eine Vorhersage für die nächsten 2 Stunden. Die Karte zeigt die Werte in einer Farbskala.
Das Format RV liefert die Niederschlagsmenge der letzten 5 Minuten und die Niederschlagsrate. Dabei werden nicht nur die aktuellen Meßwerte übermittelt, sondern auch eine Vorhersage für die nächsten 2 Stunden. Die Karte zeigt die Werte (die sich wahlweise als Niederschlagsmenge der letzten 5 Minuten oder als aktuelle Niederschlagsrate interpretieren lassen) in einer Farbskala.
Ein Format mit dieser Kennung gibt es beim Deutschen Wetterdienst nicht. Die Bezeichnung wird hier verwendet, um eine Zusammenfassung der Werte aus den Formaten HG und RV zu bezeichnen. Sie dient dazu, den Wetterzustand wawa zu bestimmen (nur ausgewählte Codes, die mit Niederschlägen zusammenhängen). Außerdem kann eine Karte gezeichnet werden, bei der die Niederschlagsart durch die Farbe und die Niederschlagsintensität durch die Farbsättigung gekennzeichnet wird.
Die Formatbeschreibung beim Deutschen Wetterdienst enthält eine lange Liste von ähnlichen Formaten, die nicht alle öffentlich erhältlich sind. Einige davon aber schon. Sie lassen sich herunterladen und eingeschränkt auch zu Karten verarbeiten. Die für die Formate HG, WN und RV bereitgestellten Koordinatendateien sind dafür aber nicht nutzbar, da eine andere Projektion verwendet wird.
Da die Erde rund ist, kann man nicht so einfach ein 1km-Raster über einen Landstrich legen. Dazu muß man sich einer kartographischen Projektion bedienen. Eine solche hat der Deutsche Wetterdienst auch angewendet, um die Radardaten auf das Raster abzubilden. Von daher findet man die Daten für einen bestimmten Ort nicht an Hand der geographischen Koordinaten. Es ist eine Umrechnung erforderlich. Zum Glück empfiehlt der Deutsche Wetterdienst auch gleich ein passendes Programm, das frei verfügbar ist, und stellt die nötigen Parameter zu dessen Benutzung bereit.
Die Koordinaten der Projektion heißen Rechtswert (gemessen von West nach Ost, englisch: easting) und Hochwert (gemessen von Süd nach Nord, englisch: northing).
Die Konfiguration steht im Abschnitt [WeatherServices]
in weewx.conf
. Sollte es dabei zu Problemen mit der Größe der Konfigurationsdatei kommen, kann die Konfiguration auch mittels include
in eine eigene Datei ausgelagert werden.
Die Unterabschnitte [[[Station]]]
und [[[Karte]]]
können sich mit jeweils geändertem Namen (z.B. Station1
, Station2
usw.) wiederholen, wenn man die Daten für mehrere Orte ermitteln oder mehrere Karten mit unterschiedlichen Ausschnitten erzeugen will.
[WeatherServices]
path = /etc/weewx/skins/SKINNAME/dwd
...
[[radar]]
places_de1200 = /path/to/file
[[[Station]]]
provider = DWD
model = HG
easting = replace_me
northing = replace_me
prefix = ""
latitude = replace_me
longitude = replace_me
[[[Karte]]]
provider = DWD
model = HG
prefix = ""
map = 100, 100, 900, 1000
name = Deutschland
borders = countrycoords.txt
borders_copyright = EuroGeographics
filter = ..., ...
background = light
Wird die Konfiguration in eine Include-Datei ausgelagert, entfällt die Abschnittsbezeichnung [WeatherServices]
und alle Abschnitte erhalten eine eckige Klammer weniger.
Die Schlüssel haben folgende Bedeutung:
-
path
: Ort, an den die erzeugte(n) Karte(n) gespeichert werden sollen -
provider
: hier immerDWD
, weil die Daten vom Deutschen Wetterdienst stammen -
model
:HG
für Niederschlagsart 2m über Grund,WN
für Radarreflektivität,RV
für Niederschlagsmenge und Niederschlagsrate,HGRV
für die kombinierten Daten aus Niederschlagsart und Niederschlagsrate. Es ist möglich, mehrere dieser Werte durch Komma getrennt anzugeben. -
prefix
: Namenspräfix, der den Variablennamen (observation type) vorangestellt wird, wenn mehrere Orte konfiguriert sind; bei Karten Namensbestandteil des Dateinamens der erzeugten Datei -
easting
: Rechtswert des Ortes, für den die Daten ermittelt werden sollen, in Meter -
northing
: Hochwert des Ortes, für den die Daten ermittelt werden sollen, in Meter -
latitude
: geographische Breite des Ortes, für den die Daten ermittelt werden sollen (optional) -
longitude
: geographische Länge des Ortes, für den die Daten ermittelt werden sollen (optional) -
map
: Abmessungen der zu erzeugenden Karte in Pixeln: Die ersten beiden Werte bezeichnen die Koordinaten der linken unteren Ecke der Karte, die anderen beiden Werte Breite und Höhe, Wertebereich 0...1100 in West-Ost-Richtung und 0...1200 in Süd-Nord-Richtung. Alternativ dazu kann der Kartenausschnitt auch durch Angabe eines Bundeslandes im ISO3166-2-Code (z.B.DE-MV
für Mecklenburg-Vorpommern) angegeben werden. -
name
: Name der Karte, der in das Titelfeld der Bilddatei aufgenommen werden soll -
borders
: Datei, die Linien enthält, die auf der Karte dargestellt werden sollen, z.B. als Landesgrenzen -
borders_copyright
: Urheberrechtshinweistext, der auf die Quelle der Daten vonborders
verweist und auf der Karte unten links dargestellt wird -
credits
: Copyright-Text auf der Karte (optional) -
filter
: Liste von Orten, die nicht auf der Karte dargestellt werden sollen (optional) -
background
: Hintergrundfarbe. Mögliche Werte sindlight
unddark
oder eine Farbangabe in #-Notation. (optional) -
background_img
: Bilddatei, die als Hintergrund der Karte verwendet werden soll (optional) -
forecast
: nur beiWN
undRV
. Mögliche Werte sindnone
(keine Vorhersage),PNG
(jeden Vorhersagezeitpunkt als eigenständige PNG-Datei speichern) oderGIF
(Vorhersage als animierte GIF-Datei speichern). -
animation_interval
: Zeit zwischen den Bildern beim animierten GIF (optional) -
places_de1200
: Datei, die eine Tabelle zusätzlicher Orte zur Darstellung auf der Karte enthält (optional)
Drei vorbereitete Dateien mit Landesgrenzen zur unmittelbaren Verwendung finden Sie unter skins/DWD/geo. Sie unterscheiden sich in Umfang und Auflösung. Wenn Sie selbst so eine Datei erstellen wollen, gelten die folgenden Informationen.
Koordinatendateien für Landesgrenzen sind u.a. bei EuroGeographics, Geofabrik und Overpass-Turbo erhältlich.
Dateien, die pro Zeile ein Koordinatenpaar enthalten, können direkt dem Programm proj
übergeben werden und erzeugen eine gleichartige Datei mit Rechts- und Hochwerten, die direkt bei der Option borders
referenziert werden kann. Verschiedene Linien werden durch eine Zeile mit zwei Sternchen und einem Leerzeichen dazwischen getrennt. In der Koordinatendatei vor dem Aufruf von proj
müssen es vier Sternchen sein.
Zu beachten ist, daß alle diese Anbieter einen Urheberrechtshinweis verlangen. Dazu ist der Schlüssel borders_copyright
zu benutzen. Im Falle von EuroGeographics ist das EuroGeographics
, im Falle der bei Geofabrik und Overpass-Turbo heruntergeladenen Daten OpenStreetMap, ODbL 1.0
.
Zur Einordnung des Kartenbildes wird auf der Karte die Lage von Ortschaften dargestellt. Für die Darstellung Deutschlands im Ganzen sind ausreichend Ortschaften bereits vorkonfiguriert. Weitere Orte können hinzugefügt werden. Dazu muß der Schlüssel places_de1200
existieren und auf eine Textdatei zeigen, die eine Tabelle der Orte enthält. Jede Zeile enthält einen Ort. Durch jeweils ein Leerzeichen getrennt muß die Zeile folgende Informationen enthalten:
Rechtswert
Hochwert
Ortsname
Breite
Länge
Maßstab
Die Spalten haben folgende Bedeutung:
-
Rechtswert
,Hochwert
: Koordinaten des Ortes in der Projektion in Metern (können mit dem Programmproj
berechnet werden) -
Ortsname
: Name des Ortes (darf keine Leerzeichen enthalten, diese sind demzufolge durch Unterstreichstriche zu ersetzen)Wird der Ortsbezeichnung ein Zirkumflex-Zeichen (Dach, Caret,
^
) vorangestellt, handelt es sich um einen Berg, der auf der Karte mit einem Dreieck anstelle eines Punktes markiert wird. -
Breite
,Länge
: geographische Breite und Länge des Ortes (die Zahlen werden zur Zeit nicht genutzt) -
Maßstab
: Um so größer die Zahl ist, um so kleiner muß der Kartenausschnitt sein, daß der Ort angezeigt wird. Das dient dazu, Übersichtskarten nicht mit Ortsnamen zu überfrachten.
Für den Maßstab gilt folgende Zuordnung:
Breite des Kartenausschnitts in km | Anzeige von Orten mit Maßstabswert |
---|---|
513...1100 km | 1.0 |
301...512 km | bis 2.0 |
257...300 km | bis 3.0 |
201...256 km | bis 4.0 |
167...200 km | bis 5.0 |
129...166 km | bis 6.0 |
101...128 km | bis 8.0 |
51...100 km | bis 10.0 |
bis 50 km | bis 20.0 |
keine Darstellung | über 20.0 |
Soll ein Ort, der in der Voreinstellung enthalten ist, ausgeblendet werden, ist er in die Datei aufzunehmen und mit einem Maßstabswert >20.0 zu versehen.
Als Koordinaten eines Ortes wurde bei Städten der jeweilige Marktplatz (und dort, soweit vorhanden, der Brunnen) verwendet. Bei Dörfern, die keinen zentralen Platz haben, ist es der ungefähre Mittelpunkt der von der Bebauung eingenommenen Fläche.
Folgende Variablen (observation types) werden erzeugt:
- für das Format HG:
-
radarHGValue
: Niederschlagsstatus nach der Codierung des Deutschen Wetterdienstes (Rohwert) -
radarHGWawa
: zugehöriger wawa-Code (Achtung! Es können keine Intensitäten bereitgestellt werden) -
radarHGDateTime
: Zeitstempel der Information
-
- für das Format WN:
-
radarWNDBZ
: Radarreflektivität in dBZ -
radarWNDateTime
: Zeitstempel der Information
-
- für das Format RV:
-
radarRVRain
: Niederschlagsmenge der letzten 5 Minuten -
radarRVRainRate
: aktuelle Niederschlagsrate -
radarRVDateTime
: Zeitstempel der Information -
radarRVRainRateForecast
: Kurzfristvorhersage der Niederschlagsrate für die nächsten zwei Stunden im 5-Minuten-Intervall. Nur in der Form$day.radarRVRainRateForecast.series
nutzbar. -
radarRVRain2hForecast
: Vorhersage der Gesamt-Niederschlagsmenge der nächsten zwei Stunden
-
- für das kombinierte Format HGRV:
-
radarWawa
: wawa-Code unter Einbeziehung der Intensität -
radarRainRate
: Niederschlagsrate (derselbe Wert wieradarRVRainRate
)
-
Wenn ein Präfix konfiguriert ist, ist es den o.g. Namen vorangestellt, wobei der erste Buchstabe in einen Großbuchstaben verwandelt wird. Ist das Präfix zum Beispiel xyz
, lautet der Name dann xyzRadarHGValue
.
Ein Wettersymbol kann wie folgt dargestellt werden:
$presentweather($wawa=$current.radarWawa).svg_icon
Anstelle von svg_icon
können auch andere Symbolsätze verwendet werden, siehe Beschreibung von $presentweather
.
Die Karten werden als Graphikdateien im PNG-Format erzeugt.
<img src="radar-HG.png?v=$current.dateTime.raw" alt="Landkarte der Niederschlagssituation in Deutschland" style="max-width:900px" />
Die Anfügung mit $current.dateTime.raw
ist nötig, um den Cache des Browsers zu überlisten, daß die Datei jedes Mal neu vom Server heruntergeladen wird.
#from user.weatherservicesradar import DwdRadar
...
#for $idx,$val in $DwdRadar.TEXT['de'].items()
<p>
<i class="statusIcon" style="background-color:$DwdRadar.COLORS_HG[$idx]"></i>
$val
</p>
#end for
Und in einer CSS-Datei:
.statusIcon {
width:14px;
height:14px;
display:inline-block;
border:1px solid #808080;
}
Anstelle von de
kann auch en
stehen.
Das Beispiel liefert eine waagerechte Tabelle mit den zu erwartenden Niederschlagsintensitäten der nächsten zwei Stunden im 5-Minuten-Abstand.
<table>
#set $forecast = $day.radarRVRainRateForecast.series
<tr>
<th>Zeit</th>
#for $i in $forecast
#if $i[1].raw>$current.dateTime.raw
<td class="center">$i[1].format("%H:%M")</td>
#end if
#end for
</tr>
<tr>
<th>mm/h</th>
#for $i in $forecast
#if $i[1].raw>$current.dateTime.raw
<td class="center">$i[2].format(add_label=False)</td>
#end if
#end for
</tr>
</table>
<p style="font-size:65%">vom DWD aus Radardaten berechnet, herausgegeben am ${current.radarRVDateTime}</p>
in graphs.conf
:
[[RV]]
[[[radarRVRainRateForecast]]]
Wenn ein Präfix konfiguriert ist, ist es dem Namen voranzustellen. Wenn mehrere Orte konfiguriert sind, kann man sie in einem Diagramm darstellen, indem man die weiteren Variablen (observation type) jeweils in drei eckige Klammern eingeschlossen hinzufügt.
Zu Testzwecken kann das Modul auch von der Kommandozeile aus aufgerufen werden. Auf diesem Wege kann man die Erzeugung der Karten testen und verschiedene Koordinaten ausprobieren, ohne jeweils WeeWX neu starten zu müssen. Es ist auch möglich, vorab heruntergeladene Dateien zu verarbeiten.
Mit dem Aufruf
python3 /usr/share/weewx/user/weatherservicesradar.py --help
können die verfügbaren Aufrufparameter angezeigt werden. Dieser Aufruf gibt Folgendes aus:
Usage: weatherservicesradar.py [options] [file.bz2]
weatherservicesradar.py --convert-geojson [options] sourcefile targetfile
Direct call is for testing only.
Options:
-h, --help show this help message and exit
-v, --verbose verbose output
--places=FILE optional list of places to show on the map
Commands:
--write-map write map image
--get=LOCATION print reading for the specified location
--print-locations print locations list
--test-thread test thread
--convert-geojson convert geojson file to list for proj
Map creation options:
--image-size=X,Y,W,H
optional x y width height
--filter=LIST optional list of locations to filter
--borders=FILE file of border coordinates
--background=TYPE optional background type light or dark
--svg output in SVG format
GEOJSON options:
--include-comment include comments in list
--color=COLOR line color
The maximum image size for HG, WN, and RV is 1100px wide and 1200px high,
referring to 1100 km west-east and 1200 km south-north. Coordinates go from
west to east and south to north, respectively.
Ohne Angabe einer Datei werden die aktuellen Daten im Format HG
heruntergeladen und verarbeitet. Soll ein anderes Format heruntergeladen werden, ist anstelle eines Dateinamens =WN
für das WN-Format und =RV
für das RV-Format anzugeben. Wird eine Datei angegeben, ergibt sich das Format aus dem Inhalt der Datei.
Bei image-size
können wie auch in der WeeWX-Konfiguration die Namen der Bundesländer im ISO3166-2-Code angegeben werden. Beispielsweise führt die Option --image-size=DE-MV
zur Erzeugung einer Karte für das Land Mecklenburg-Vorpommern.
Der Deutsche Wetterdienst empfiehlt das Programm proj
, das für Linux ganz normal mit apt-get
installiert werden kann. Der Konfigurationsstring lautet:
+proj=stere +lat_0=90 +lat_ts=60 +lon_0=10 +a=6378137 +b=6356752.3142451802 +no_defs +x_0=543196.83521776402 +y_0=3622588.8619310018
Das Programm wird auf der Kommandozeile wie folgt aufgerufen:
echo longitude latitude | proj +proj=stere +lat_0=90 +lat_ts=60 +lon_0=10 +a=6378137 +b=6356752.3142451802 +no_defs +x_0=543196.83521776402 +y_0=3622588.8619310018
longitude
und latitude
sind durch die entsprechenden Werte in Dezimalgrad mit Punkt als Dezimaltrennzeichen zu ersetzen. Bitte beachten Sie, daß die Reihenfolge der Werte umgekehrt zu den üblichen Gepflogenheiten ist.
Wenn man mehrere Koordinaten auf einmal umrechnen will, kann man die Werte auch in eine Datei schreiben (ein Koordinatenpaar pro Zeile) und beim Programmaufruf übergeben:
proj +proj=stere +lat_0=90 +lat_ts=60 +lon_0=10 +a=6378137 +b=6356752.3142451802 +no_defs +x_0=543196.83521776402 +y_0=3622588.8619310018 <datei_der_umzurechnenden_werte.txt >datei_der_umgerechneten_werte.txt
Beispiele:
Ort | geographische Breite | geographische Länge | Rechtswert | Hochwert |
---|---|---|---|---|
Fichtelberg | 50.429444° | 12.954167° | 764264.57 m | -661198.14 m |
Brocken | 51.7991° | 10.6156° | 587565.63 m | -506791.63 m |
Zugspitze | 47.42122° | 10.9863° | 623159.66 m | -1022123.31 m |
Die Nutzungsbedingungen des Deutschen Wetterdienstes und der Anbieter geographischer Basisinformationen wie auch die GPL, unter der dieses Modul steht, verlangen Namensnennung. Dies ist bei der Veröffentlichung der Daten zu beachten. Deswegen enthält die erzeugte Graphik unten links solche Copyright- bzw. Urheberrechtsvermerke. Wenn der Kartenausschnitt so klein gewählt wird, daß diese Daten nicht direkt auf der Karte angebracht werden können, müssen sie anderweitig in räumlicher Nähe zu der Darstellung erscheinen.
Auch für die Einzelwerte gilt die Vorschrift zur Nennung der Datenquellen.