WSV
PEGELONLINE PEGELONLINE Webservices PEGELONLINE

EDIS Dict-API – Dokumentation

Die Dict-API ist ein zentraler Baustein, um die Nutzung der PEGELONLINE-Echtzeitdateninfrastruktur (EDIS) zu unterstützen. Ziel von EDIS ist eine möglichst schnelle und effiziente Auslieferung von Messdaten (weitere Informationen siehe: EDIS). Hierzu werden entsprechende Messdatenströme über einen MQTT-Broker angeboten.

Da das MQTT-Protokoll jedoch nur sehr eingeschränkte Möglichkeiten zur Recherche nach Datenströmen, die durch einen MQTT-Broker angeboten werden, bietet, wird diese Lücke durch die Dict-API geschlossen. Anhand verschiedener Suchparameter wie z.B. Stationsnamen, Bundesland, Gewässer, Parameter können PEGELONLINE-Stationen und Datenströme gefunden werden. Die Antwort auf eine Suchanfrage enthält neben grundlegenden Metadaten zu Stationen und Zeitreihen auch die Information, über welche Topics des EDIS-MQTT-Broker die jeweiligen Echtzeitdaten der Zeitreihen abonniert werden können.

Ebenso werden Links zum PEGELONLINE-REST-Service (REST-API) angeboten, welche es ermöglichen zu den jeweiligen Zeitreihen Messdaten aus der Vergangenheit abzurufen. Dies kann beispielsweise genutzt werden, um die über den MQTT-Broker ausgelieferten Echtzeit-Messwerte mit historischen Messdaten oder Referenzwerten in einen Kontext zu setzen.

Die Dict-API ist eine einfache API, welche das REST-Paradigma umsetzt. Sie ist über folgende URL erreichbar: Dict-API

Es ist keine Authentifizierung oder Autorisierung erforderlich, um die Dict-API zu nutzen.

Suche nach Stationen und ihren Zeitreihen

Um die Suche nach Stationen und ihren Zeitreihen auszuführen kann der /search Endpunkt der Dict-API verwendet werden. Zur Suche können folgende Suchparameter genutzt werden:

Parameter Beispiel Beschreibung
station station=köln Stationen mit dem angegebenen Namen
gewaesser gewaesser=rhein Stationen an dem angegebenen Gewässer
agency agency=dresden Stationen mit der angegebenen Agency
land land=hamburg Stationen im angegebenen Bundesland
country country=deutschland Stationen im angegebenen Nationalstaat
einzugsgebiet einzugsgebiet=ems Stationen im angegebenen Einzugsgebiet
kreis kreis=emsland Stationen im angegebenen Landkreis
parameter parameter=wassertemperatur Stationen mit angegebenem Messparameter
bbox bbox=7,52,8,53 Stationen in der durch Koordinaten angegebenen Bounding Box (`minLon, minLat, maxLon, maxLat`)

Bei Angabe mehrerer Parameter werden diese durch eine UND-Verknüpfung kombiniert. Beispiel:

/search?kreis=emsland%amp;parameter=lufttemperatur

Die Suche erfolgt via „String matching“, es wird nach exakten Matches gesucht innerhalb des Datenbestandes gesucht.

Zusätzlich gibt es einen Wildcard-Parameter, welcher über alle Stationsparameter sucht. Dieser ist nicht mit den regulären Suchparametern kombinierbar:

Parameter Beispiel Beschreibung
q q=köln Allgemeiner Suchparameter, durch den alle Parameter durchsucht werden. Kann nicht mit anderen Parametern kombiniert werden.

Ausgabe von Stationen und ihren Zeitreihen

Die Antwort auf eine Suchanfrage enthält ein JSON-Dokument mit folgenden Inhalten:

Attribut Beschreibung
mqtttopics Liste aller Topics des MQTT-Broker, die zur Suchanfrage passen.
pegelonlinelinks Liste der Links zum Download der verfügbaren Messdaten aller zur Suchanfrage passenden Zeitreihen (über die PEGELONLINE-REST-API).
stations Liste aller Stationen mit ihren Zeitreihen, die zur Suchanfrage passen

Die in der Antwort enthaltenen stations-Objekte enthalten folgende Informationen (dies ist eine Erweiterung der Ausgaben der PEGELONLINE-REST-API):

Attribut Beschreibung
uuid Eindeutige unveränderliche ID.
number Pegelnummer
shortname Pegelname (max. 40 Zeichen)
longname Pegelname (max. 255 Zeichen)
km Flusskilometer
agency Wasserstraßen- und Schifffahrtsamt
longitude Längengrad in WGS84 Dezimalnotation
latitude Breitengrad in WGS84 Dezimalnotation
water Angaben zum Gewässer (shortname und longname)
timeseries Die an der Station verfügbaren Zeitreihen (siehe unten)
country Das Land, in dem sie die Station befindet
country_alternatives Alternative Bezeichnungen für das Land, in dem sich die Station befindet
land Das Bundesland, in dem sie die Station befindet
land_alternatives Alternative Bezeichnungen für das Bundesland, in dem sich die Station befindet
kreis Der Landkreis, in dem sie die Station befindet
kreis_alternatives Alternative Bezeichnungen für den Landkreis, in dem sich die Station befindet
water_alternatives Alternative Bezeichnungen für das Gewässer, an dem sich die Station befindet
Einzugsgebiet Das Einzugsgebiet, in dem sich die Station befindet
mqtttopic Das MQTT-Topic, über das Messdaten der Station abonniert werden können

Die in der Antwort enthaltenen timeseries-Objekte enthalten folgende Informationen (dies ist eine Erweiterung der Ausgaben der PEGELONLINE-REST-API):

Attribut Beschreibung
shortname Kurzbezeichnung
longname Langbezeichnung
unit Maßeinheit
equidistance Abstand der Messwerte in Minuten
mqtttopic Das MQTT-Topic, über das Messdaten der Zeitreihe abonniert werden können
pegelonlinelink Link zum Download der Messdaten der Zeitreihe über die PEGELONLINE REST-API

Das nachfolgende Beispiel zeigt exemplarische einen Auszug aus einer typischen Antwort der Dict-API auf eine Suchanfrage (hier mit dem Suchparameter „station=Münster“):


            {
              "mqtttopics": [
                "edis/pegelonline/+/+/+/+/ccd3e8f1-39e9-4e09-aa41-625afda84460/+",
                "edis/pegelonline/+/+/+/+/ed260406-bdd6-42ef-bf2a-1246eea392f9/+",
                "edis/pegelonline/+/+/+/+/ccd3e8f1-39e9-4e09-aa41-625afda84460/+",
                "edis/pegelonline/+/+/+/+/ed260406-bdd6-42ef-bf2a-1246eea392f9/+"
              ],
              "pegelonlinelinks": [
                "https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/ccd3e8f1-39e9-4e09-aa41-625afda84460/W/measurements.json",
                "https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/ed260406-bdd6-42ef-bf2a-1246eea392f9/W/measurements.json",
                "https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/ccd3e8f1-39e9-4e09-aa41-625afda84460/W/measurements.json",
                "https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/ed260406-bdd6-42ef-bf2a-1246eea392f9/W/measurements.json"
              ],
              "stations": [
                {
                  "uuid": "ccd3e8f1-39e9-4e09-aa41-625afda84460",
                  "number": "27800040",
                  "shortname": "MÜNSTER OW",
                  "longname": "MÜNSTER OW",
                  "km": 70.315,
                  "agency": "RHEINE",
                  "longitude": 7.664374042081728,
                  "latitude": 51.968941959729285,
                  "water": {
                    "shortname": "DEK",
                    "longname": "DORTMUND-EMS-KANAL"
                  },
                  "timeseries": [
                    {
                      "shortname": "W",
                      "longname": "WASSERSTAND ROHDATEN",
                      "unit": "m+NN",
                      "equidistance": 1,
                      "mqtttopic": "edis/pegelonline/+/+/+/+/ccd3e8f1-39e9-4e09-aa41-625afda84460/W",
                      "pegelonlinelink": "https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations/ccd3e8f1-39e9-4e09-aa41-625afda84460/W/measurements.json"
                    }
                  ],
                  "country": "Deutschland",
                  "country_alternatives": [
                    "Germany",
                    "Niemcy",
                    "Alemaña",
                    "Allemagne",
                    "Duitsland"
                  ],
                  "land": "Nordrhein-Westfalen",
                  "land_alternatives": [
                    "North Rhine-Westphalia",
                    "Nadrenia Północna-Westfalia",
                    "Rhénanie-du-Nord-Westphalie",
                    "Noordrijn-Westfalen"
                  ],
                  "kreis": "Münster",
                  "kreis_alternatives": [
                    "Munster"
                  ],
                  "water_alternatives": [
                    "DEK"
                  ],
                  "einzugsgebiet": "Ems",
                  "mqtttopic": "edis/pegelonline/+/+/+/+/ccd3e8f1-39e9-4e09-aa41-625afda84460/+"
                },
                {
                    // Weitere Stationen
                }
              ]
            }
        

Testen der Dict-API via Swagger UI

Unter der URL Dict-API /search steht über Swagger UI eine Möglichkeit bereit, die Funktionalität der Dict-API über ein Web-Formular auszuprobieren. Hierzu werden für alle unterstützten Suchparameter entsprechende Eingabefelder angeboten, über die Nutzende ihre Suchparameter eingeben können (zum Aktivieren der Eingabefelder bitte auf den Button „Try it out“ klicken). Nach der Eingabe der Parameterwerte für die Suche, kann über die „Execute“-Schaltfläche eine Anfrage an die Dict-API gestellt werden:

Unterhalb der Eingabemaske wird das Ergebnis der Suchanfrage in einem separaten Feld dargestellt. Neben der eigentlichen Antwort der Dict-API erfolgt weiterhin eine Information darüber, über welchen HTTP-Aufruf die Anfrage an die Dict-API erfolgt ist und welche Inhalte der Header der Server-Antwort aufweist.