Skip to content

Open Geospatial Consortium (OGC) Server abfragen

roe-dl edited this page Sep 16, 2024 · 14 revisions

Was ist OGC?

Das Open Geospatial Consortium (OGC) ist ein Zusammenschluß aller großen Wetterdienste, Unternehmen der IT-Branche u.a. Es hat ein Format zur Datenabfrage von ortsbezogenen Daten definiert. Server betreiben zum Beispiel der Deutsche Wetterdienst (DWD), die österreichische GeoSphere Austria und die amerikanische NOAA.

Konfiguration

Beispiel für eine Konfiguration:

[WeatherServices]
    path = /etc/weewx/skins/SKINNAME/SUBDIRECTORY
    ...
    [[download]]
        ...
        [[[Landkreis Döbeln]]]
            provider = DWD
            model = wms
            server_url = 'https://maps.dwd.de/geoserver/dwd/ows'
            map = 12.83,51.04,0.45,0.2
            warncellids = 814522080,814522250,814522310,814522450,814522510,814522570,814522620,814522220
            file = "warnungen-landkreis-doebeln.png"
            [[[[parameters]]]]
                layers = dwd:Warngebiete_Gemeinden,dwd:Warnungen_Gemeinden,dwd:Gewaessernetz_Deutschland_fein,dwd:Warngebiete_Gemeinden
                width = 512
                height = 362
                format = "image/png"
                cql_filter = "WARNCELLID IN ($warncellids);WARNCELLID IN ($warncellids);INCLUDE;INCLUDE"
                styles = '','',gewaessernetz_deutschland_fein_blau,Warngebiete_Gemeinden_Text
                transparent = true

Die einzelnen Schlüssel bedeuten:

  • path: Verzeichnis, in das die heruntergeladenen Dateien gespeichert werden sollen.
  • provider: Name des Anbieters, z.B. DWD, ZAMG, NOAA etc.
  • model: hier immer wms, ggf. ergänzt um eine Versionsnummer, z.B. wms 1.1.1 oder wms 1.3.0
  • server_url: URL zur Abfrage beim Anbieter (Das ist der Teil bis zum Fragezeichen.)
  • map: Kartenausschnitt: westliche Grenze, südliche Grenze, Breite, Höhe bei WMS 1.1.1, abhängig vom CRS bei WMS 1.3.0
  • warncellids: im Falle von Warnkarten des deutschen Wetterdienstes eine Liste der Warncell-IDs (optional)
  • file: Dateiname, unter dem die heruntergeladene Datei gespeichert werden soll
  • [[[parameters]]]: Abschnitte mit den Aufrufparametern laut OGC-Spezifikation
    • crs or srs: Koordinatensystem, bei manchen Servern optional, bei anderen zwingend erforderlich
    • layers: kommagetrennte Liste der darzustellenden Layer (Was es da gibt, muß beim Anbieter erfragt werden.)
    • width: Breite der Graphik in Pixeln
    • height: Höhe der Graphik in Pixeln
    • format: zu erzeugendes Format (Was es da gibt, muß beim Anbieter erfragt werden.)
    • cql_filter: Datenfilterbedingungen. Die Liste muß exakt so lang sein wie die Liste bei layers und für jeden Layer eine Bedingung enthalten. Wenn man keine Einschränkungen vornehmen will, kann man INCLUDE schreiben.
    • styles: Manche Layer haben verschiedene Darstellungsoptionen. Die Liste muß auch hier exakt so lang sein wie die Liste bei layers. Wenn für einen Layer keine Darstellungsoption festgelegt werden soll, sind zwei Hochkommata zu schreiben ('').
    • transparent: transparenter (true) oder weißer (false) Hintergrund (optional)
  • compare_content: Die Zieldatei soll nur dann neu gespeichert werden, wenn sie sich geändert hat. Normalerweise liefert der Server einen Zeitstempel der letzten Änderung, der zu diesem Zweck verglichen wird. Hat sich die Datei nicht geändert, wird sie gar nicht erst heruntergeladen. Leider liefern (manche?) OGC-Server keinen solchen Zeitstempel. Dann bleibt nur, die Datei komplett herunterzuladen und inhaltlich zu vergleichen. Das ist hier der Standard, wenn der Schlüssel fehlt. Mit compare_content = false kann der Vergleich abgeschaltet werden. (optional)
  • log_success: Legt fest, ob ein erfolgreicher Download im Syslog protokolliert soll. Wird von der WeeWX-Grundkonfiguration übernommen, kann aber auch auf jeder Ebene neu definiert werden. (optional)
  • log_failure: Legt fest, ob Fehler im Syslog protokolliert werden sollen. Wird von der WeeWX-Grundkonfiguration übernommen, kann aber auch auf jeder Ebene neu definiert werden. (optional)
  • log_sleeping: Legt fest, ob die Schlafenszeit des Threads protokolliert werden soll (optional)

Um die heruntergeladene Datei mit auf den Webserver hochzuladen, muß die Datei in die Liste beim Schlüssel copy_always in skin.conf eingefügt werden. Beim obigen Beispiel wäre das:

...
[CopyGenerator]
    ...
    copy_always = ..., SUBDIRECTORY/warnungen-landkreis-doebeln.png

anderes Beispiel: Satellitenbild des Meteosat-Satelliten:

[WeatherServices]
    path = /etc/weewx/skins/SKINNAME/SUBDIRECTORY
    ...
    [[download]]
        ...
        [[[Satellitenbild]]]
            provider = DWD
            model = wms
            map = -53.99411011583333,22.998440489999993,107.99722,53.99412
            file = meteosat-europe.png
            [[[[parameters]]]]
                layers = dwd:Satellite_meteosat_1km_euat_rgb_day_hrv_and_night_ir108_3h,dwd:Laender
                width = 1024
                height = 574
                format = "image/png"

Das Ergebnis kann dann so aussehen:

image

Beispiel Warnkarte Sachsen:

[WeatherServices]
    path = /etc/weewx/skins/SKINNAME/SUBDIRECTORY
    ...
    [[download]]
        ...
        [[[Warnkarte Sachsen]]]
            provider = DWD
            model = wms
            map = 11.55,50.1,3.9,1.65
            file = "wms-sachsen.png"
            [[[[parameters]]]]
                layers = dwd:Warngebiete_Gemeinden,dwd:Warnungen_Gemeinden,dwd:Gewaesser,dwd:Warngebiete_Bundeslaender,dwd:BRD_Orte
                width = 512
                height = 338
                format = "image/png"
                cql_filter = WARNCELLID LIKE '814%' OR WARNCELLID LIKE '714%';WARNCELLID LIKE '814%' OR WARNCELLID LIKE '714%';INCLUDE;INCLUDE;INCLUDE

Das Ergebnis kann dann so aussehen:

image

Beispiel EUMETSAT:

[WeatherServices]
    path = /etc/weewx/skins/SKINNAME/SUBDIRECTORY
    ...
    [[download]]
        ...
        [[[Satellitenbild von EUMETSAT]]]
            provider = EUMETSAT
            model = wms 1.3.0
            map = 22.998440489999993,-53.99411011583333,53.99412,107.99722
            file = wms-eumetsat.png
            [[[[parameters]]]]
                crs = EPSG:4326
                layers = backgrounds:ne_background,msg_fes:ir108,msg_fes:h60b,backgrounds:ne_10m_coastline,backgrounds:ne_boundary_lines_land,backgrounds:graticules-light,msg_fes:rdt
                width = 1024
                height = 574
                format = "image/png"
                transparent = true

Das Ergebnis kann dann so aussehen:

image

Verweise