WMS |
|
WMS – Web Map Services wurden in die Anwendung integriert, um in Programmfunktionen mit Kartendarstellungen flexible Hintergrundkarten über das Internet anzeigen zu können. Dies ermöglicht es, eine Vielzahl von topografischen Karten, Landschafts- und Geländemodellen, Satellitenbildern und Karten mit Verwaltungsgrenzen zu nutzen, ohne diese lokal installiert haben zu müssen. Damit wird die Anwendung weitestgehend vom Vorhandensein lokal installierter Rasterkarten unabhängig.
Zahlreiche WMS sind vorkonfiguriert, so dass sie sofort über den Menüpunkt "Hintergrund - WMS auswählen" (Strg + W ) oder die Schaltfläche
auswählbar sind. Alternativ können die Tastenkombination (Strg + 1, Strg + 2 bis Strg + 0) genutzt werden, um die damit assoziierten WMS schnell aktivieren zu können. Fast alle vom BKG angebotenen Dienste sind nutzbar, ein Großteil der geschützten (nicht öffentlichen) Dienste des BKG ist für den Nutzerkreis von TSN freigeschaltet.
WMS auswählen
•Ein Icon in der Statuszeile des jeweiligen Fensters gibt Auskunft über die Verwendung und den Status eines WMS:
kein WMS aktiv
ein WMS ist aktiv und aktualisiert
ein WMS ist aktiv und wartet auf Antwort vom Server (wird momentan aktualisiert)
ein WMS ist aktiv und hat einen Fehler (Fehlermeldung als Quickinfo)
Um das Zoomen, Verschieben, Einpassen von Karten für WMS zu steuern, kann die Ausdehnung der Karte mit dem Menüpunkt "Hintergrund - Ausdehnung festlegen" (↑ + Strg + A) oder die Schaltfläche
angepasst werden. Dies ist insbesondere sinnvoll, wenn keine Vektordaten wie administrative Grenzen geladen sind.
Ausdehnung der Karte festlegen
Mit der Menüfunktion "Ansicht - Übersichtsfenster mit WMS anzeigen" (Strg + Ü) kann ein WMS festgelegt werden, welcher im Übersichtsfenster des Karten-Explorers bzw. Polygon-Editors erscheint. Dazu ist der WMS im angezeigten Auswahlfenster festzulegen.
Die vorkonfigurierten WMS können bei Bedarf durch Doppelklick auf den WMS-Layer in der Layer-Kontrolle oder den Menüpunkt "Hintergrund - WMS bearbeiten" (↑ + Strg + W) angepasst bzw. eigene Services können hinzugefügt werden.
WMS bearbeiten
Tipp: Im Karten-Explorer kann ein WMS aktiviert werden, indem seine URL (z.B. https://sgx.geodatenzentrum.de/wms_topplus_open) in die Zwischenablage kopiert und mit dem Menüpunkt "Erstellen - aus Zwischenablage" oder Strg + V eingefügt wird.
WMS verfügen über eine Schnittstelle, über die Informationen zu seinen Fähigkeiten (Capabilities) abgefragt werden können. Insbesondere kann damit eine Beschreibung für verfügbare Kartenebenen abgerufen werden, um den WMS individuell anzupassen. Der Menüpunkt "Hintergrund - WMS-Capabilities" (↑ + Strg + C) kontaktiert diese Schnittstelle und stellt die wichtigsten Informationen zum WMS übersichtlich dar.
Der Systemadministrator kann eine angepasste Liste der WMS erstellen.
Globale Einstellungen - WMS
Prinzipiell ist die Unterstützung von WMS in die Anwendung transparent integriert und zahlreiche WMS sind komplett vorkonfiguriert, so dass keinerlei weiteres technisches Wissen erforderlich und das Lesen und Verstehen der nächsten Abschnitte nicht zwingend nötig ist. Die folgenden Ausführungen wenden sich demzufolge an alle, die Interesse an der Implementierung haben oder aktiv vorhandene WMS anpassen oder eigene in die Anwendung integrieren möchten.
Die Unterstützung für WMS ist vollumfänglich integriert, wobei folgende zwei Einschränkungen zu beachten sind:
•Aus programmtechnischen Gründen werden die Karten automatisch immer im JPEG-Format angefordert. Die programmintern verwendete Komponente zum Anzeigen von Karten funktioniert mit diesem Format zuverlässig!
•Dies hat folgende Konsequenz:
Eine gleichzeitige Verwendung mehrerer WMS, also das Übereinanderlegen mehrerer WMS ist für das (verlustbehaftete und damit nicht wirklich „farbechte“) JPEG-Format nicht sinnvoll, weil sich Layer nicht vollständig (für eine Farbe) transparent schalten lassen, um sie korrekt übereinander stapeln zu können. Daher ist die WMS-Unterstützung auf die Nutzung als Hintergrundkarte fokussiert – die Auswahl eines WMS ersetzt automatisch einen eventuell aktiven WMS.
WMS sind standardisiert aufgebaut. Über eine URL (Internetadresse) wird die WMS-Schnittstelle zusammen mit verschiedenen Parametern aufgerufen. Eine Anfrage besteht demzufolge immer aus zwei Teilen, der URL der WMS-Schnittstelle auf der linken Seite und den Parametern für die Anfrage auf der rechten Seite getrennt durch ein ?, z.B. https://sgx.geodatenzentrum.de/wms_topplus_open?service=wms&request=GetCapabilities
Ein Parameter ist ein Paar aus dem Namen des Parameters gefolgt von einem = und dem Wert des Parameters. Mehrere Parameter werden durch ein & getrennt. Optisch "aufgehübscht" kann das wie folgt dargestellt werden:
URL?parameter1=wert¶meter2=wert...
Parameter |
Bedeutung |
Service= |
Gibt an, welcher Dienst benötigt wird, hier immer WMS. |
Request= |
Gibt an, welche Anforderung benötigt wird. Folgende Anforderungen können von WMS unterstützt werden: •GetCapabilities •GetMap •GetLegendGraphics •GetFeatureInfo |
Version= |
Gibt an, welche Version der Schnittstelle für den Aufruf verwendet werden soll. Das Programm verwendet automatisch die Version 1.3.0, wenn die Angabe nicht manuell anders vorgenommen wurde. Nur wenn ein Server explizit nur eine andere Version unterstützt, sollte der entsprechende Wert (z.B. 1.1.0 oder 1.1.1) eingetragen werden. Bestimmte Parameter unterscheiden sich zwischen den Versionen, was vom Programm dann erkannt und berücksichtigt wird. |
Format= |
Das gewünschte Format, in dem die Antwort auf die Anforderung erwartet wird, ist hier anzugeben. |
Die vermutlich einfachste Form einer Anfrage an einen WMS ist die Anforderung GetCapabilities, was den WMS dazu veranlasst, eine Dokument an den Client zurückzugeben, welches die Fähigkeiten des WMS beschreibt:
https://sgx.geodatenzentrum.de/wms_topplus_open?service=wms&request=GetCapabilities
Der WMS gibt dabei Informationen über seine dargestellten Inhalte, Kontaktadressen, eventuelle Gebühren zur Nutzung, aber vor allem technische Informationen wie unterstützte Formate, Projektionen, räumliche Abdeckung, Layer (Kartenschichten) und ihre vordefinierten Einfärbungen, Abfragemöglichkeiten für Sachdaten (FeatureInfo) und Legenden zurück. Damit ist es dem Client möglich, alle notwendigen Informationen zur weiteren Interaktion mit einem WMS zu ermitteln, solange er nur die Internetadresse (URL) seiner eigentlichen Schnittstelle kennt.
Die Kenntnis der Fähigkeiten des WMS macht es dann möglich, gezielt Karten (Bilder) anzufragen, was mit der Anforderung GetMap und zahlreichen weiteren notwendigen Parametern, die später erklärt werden, erfolgt. Eine solche Anforderung könnte z.B. wie folgt aussehen:
https://sgx.geodatenzentrum.de/wms_topplus_open?service=wms&version=1.3.0&request=GetMap&layers=web&styles=default&CRS=EPSG:4647&bbox=32500000,5700000,32520000,5720000&width=800&height=800&format=image/jpeg
Wenn Sie diesen Hyperlink ausführen, wird ein JPEG-Bild im Browser angezeigt, welches für den Layer web einen Ausschnitt der TopPlusOpen in Vollfarben anzeigt. Wenn Sie den Layer web mit web_grau oder web_light ersetzen, würde das Bild in Grautönen oder in hellen Farben angezeigt werden.
Das Programm (z.B. der Karten-Explorer) muss die Parameter zur Laufzeit mit den notwendigen Werten aufrufen, um genau den richtigen Kartenausschnitt für die aktuelle Fenstergröße und die gerade verwendete Projektion vom Server anzufordern.
Deshalb wird der Eintrag von oben vom Programm automatisch für das Anzeigen einer Hintergrundkarte (GetMap) in folgenden Aufruf konvertiert:
https://sgx.geodatenzentrum.de/wms_topplus_open?service=wms&layers=web&version=1.3.0&request=GetMap&styles=&CRS=EPSG:<epsg>&bbox=<bbox>&width=<width>&height=<height>&format=<format>
Bei jedem notwendigen Aktualisieren der Karte (z.B. beim Zoomen und Verschieben) oder beim Ändern der Fenstergröße werden die Platzhalter für die aktuelle Kartenausdehnung <bbox>, die Breite <width> und die Höhe <height> des Fensters sowie die Projektion <epsg> durch die Werte im aktuellen Programmkontext ersetzt und die Karte (das JPEG-Bild) vom Server angefordert, herunter geladen und im Programm angezeigt.
Parameter |
Bedeutung |
layers= |
Gibt an, welcher oder welche Layer (Kartenebene) angezeigt werden soll(en). z.B. &layers=relief für einen einzigen Layer der DGM200 oder &layers=colormap,kontur für eine Überlagerung zweier Layer der DGM200 Dieser Parameter sollte manuell vorbelegt werden, um dem Programm mitzuteilen, welche Kartenebene(n) angezeigt werden sollen! Alle übrigen Parameter können vom Programm automatisch mit Standardeinstellungen und aktuellem Programmkontext gesteuert werden. Dies ist normalerweise der einzige Parameter, der beim Einrichten eigener WMS mitzuteilen ist, der Rest wird vom Programm i.d.R. eigenständig richtig verwendet, so dass z.B. das Einfügen folgender Angabe für einen funktionierenden WMS ausreichen würde: https://sgx.geodatenzentrum.de/wms_topplus_open?layers=web_light |
styles= |
Gibt an, welche vordefinierte Stil für den/die Layer verwendet werden soll. Im Allgemeinen kann dieser Parameter leer bleiben (also styles=). In diesem Falle wird der Standardstil verwendet. Bei der expliziten Angabe von Stilen ist zu beachten, dass wenn hier Werte angeben sind, dann müssen sie mit dem Parameter Layers synchron sein, es muss also für jeden Layer auch ein Style in der entsprechenden Reihenfolge angegeben sein (z.B. &layers=layer1,layer2&styles=stil1,stil2) |
crs= (Version 1.3.0)srs= (Version 1.1.1) |
Gibt an, welche Projektion zu verwenden ist. Der Parameter wird zur Laufzeit vom Programm mit der aktuellen Projektion (EPSG-Code) an den WMS übergeben, z.B. &CRS=EPSG:4647 und darf nicht manuell vordefiniert werden. |
bbox= |
Gibt an, für welche geografische Ausdehnung die Karte generiert werden soll. Dieser Parameter wird vom Programm mit den Koordinatenpaaren (links, unten, rechts, oben) der aktuell auf dem Bildschirm sichtbaren Karte übergeben (&bbox=32351929.98,5689682.08,32389230.59,5722651.90) und darf nicht manuell vordefiniert werden. |
width= height= |
Gibt die Breite und Höhe der Karte in Bildschirmeinheiten (Pixel) an. Damit wird dem WMS mitgeteilt, wie groß das zu erzeugende Bild sein soll, um exakt die aktuelle Kartengröße auf dem Bildschirm hinterlegen zu können. Diese Parameter werden vom Programm mit den aktuellen Werten entsprechend der Fenstergröße auf dem Bildschirm übergeben (&width=801&height=708) und dürfen nicht manuell vordefiniert werden. |
format= |
Gibt an, welches Format zu verwenden ist. Dieser Parameter wird vom Programm automatisch mit &format=image/jpeg angegeben und darf nicht manuell vordefiniert werden. Die Komponente zum Anzeigen von Karten unterstützt andere Formate (TIFF, PNG etc.) nicht zuverlässig. |
transparent= |
Falls gewünscht wird, dass die Karte für die weiße Farbe transparent dargestellt werden soll, ist dieser Parameter manuell zur URL hinzuzufügen. Die Karte wird dann dementsprechend vom WMS erstellt und vom Programm auch anders verarbeitet. Damit lassen sich WMS-Layer auch über anderen Layern darstellen. Leider ist eine hundertprozentige Transparenz mit dem verwendeten JPEG-Format nicht möglich, da das Format nicht wirklich farbgetreu arbeitet. Dieser Sachverhalt schränkt die tatsächlich Nutzbarkeit eines transparenten Layers ggf. ein. |
time= |
Gibt an für welchen Zeitpunkt oder Zeitraum eine Karte erzeugt werden soll. Dieser Parameter kann manuell angegeben werden, wenn der WMS ihn unterstützt, z.B. &time=2024-07-23T12:00:00Z |
bgcolor= |
Gibt an welche Hintergrundfarbe genutzt werden soll. Normalerweise wird der Hintergrund weiß dargestellt (0xFFFFFF). Sollte eine andere Farbe gewünscht sein, kann dieser Parameter als RGB-Wert manuell eingetragen werden, z.B. &bgcolor=0xBEBEBE für grau. |
Für zahlreiche WMS sind die Layer abfragbar. In diesem Falle kann i.d.R. die Identifizieren-Funktion des Karten-Explorers benutzt werden, um eine Position auf der Karte mit der Maus anzuklicken und entsprechende Informationen zu den Objekten an der Mausposition zu erhalten.
Identifizieren
Dabei wird die Anforderung GetFeatureInfo an den WMS gesendet, die neben den von GetMap bekannten Parametern zusätzlich die (mit der Maus angeklickte) Bildschirmposition (&i=, &j=) überträgt, sowie angibt, welche Layer (&query_layers=) in welchem Format (&info_format=) und mit welcher maximalen Feature-Anzahl (&feature_count=) ermittelt werden sollen.
Alle erforderlichen Parameter werden vom Programm automatisch mit Werten initialisiert und müssen nur dann manuell in der URL angegeben werden, wenn das vom Programm angeforderte Format (Vorgabe &info_format=application/json) nicht unterstützt wird, nur bestimmte Layer/Kartenebenen (&query_layers=) abgefragt werden sollen oder die maximale Anzahl (Vorgabe &feature_count=10) geändert werden soll.
Das Info-Format eines WMS ist nicht wirklich standardisiert. Im einfachsten Fall, z.B. wenn der Parameter nicht angegeben ist, wird die Serverantwort als reiner Text &info_format=text/plain ausgegeben. Dieses Format ist jedoch unstrukturiert, kann nur unzureichend analysiert werden und wird vom Programm deshalb nicht verwendet. Standardmäßig wird die Abfrage mit &info_format=application/json ausgeführt. Alternativ ist die Angabe &info_format=text/xml und &info_format=application/geojson möglich, das heißt, diese Formate können analysiert und dargestellt werden.
Parameter |
Bedeutung |
query_layers= |
Gibt an, welcher oder welche Layer (Kartenebene) abgefragt werden soll(en). Ist der Parameter nicht angegeben, werden alle Layer abgefragt, die unter &layers=... aufgeführt sind, also alle Layer, die auch dargestellt werden. Ist es der Wunsch, nur die Feature bestimmter Layer abzufragen, ist die Liste manuell unter &query_layers=... entsprechend anzugeben, wobei nur Layer erscheinen dürfen, die auch unter &layers= als anzuzeigende Layer aufgeführt sind, ansonsten antwortet der WMS mit einer Fehlermeldung. |
info_format= |
Gibt an, in welchem Format der Server antworten soll. Dieser Parameter sollte nur angegeben werden, wenn der vom Programm automatisch verwendete Wert &info_format=application/json nicht funktioniert. In diesem Falle kann versucht werden, ob &info_format=text/xml oder &info_format=application/geojson erfolgreich sind. Andere Formate werden derzeit vom Programm nicht verarbeitet. |
feature_count= |
Gibt an, zu wie vielen Features maximal Infos ermittelt und übertragen werden sollen. Hintergrund ist, dass an einer Position häufig sehr viele Objekte gefunden werden können. Insbesondere dann, wenn mehrere Layer (Kartenebenen) überlagert sind, wie es z.B. bei administrativen Grenzen der Fall ist, dann ist an der Position gleichzeitig eine Gemeinde, ein Kreis und ein Bundesland. Ist der Parameter nicht angegeben, fügt das Programm automatisch &feature_count=10 ein. |
Hier noch einmal eine Zusammenfassung zum Bearbeiten von WMS:
•In der Regel sollte nur ein Parameter beim WMS manuell angegeben werden, der Parameter layers=..., um dem System mitzuteilen, welcher oder welche Layer (Kartenebenen) dargestellt werden sollen! Alle anderen Parameter werden vom System automatisch mit Standardwerten verwendet, die funktionieren sollten.
•Optional können/sollten bei Bedarf folgende Parameter manuell angegeben werden:
oversion=..., wenn die Vorgabe version=1.3.0 nicht vom WMS unterstützt wird.
otransparent=true, wenn die weiße Farbe für die angeforderte Karte transparent dargestellt werden soll.
ostyles=..., wenn eine alternative Einfärbung für Layer verwendet werden soll.
oinfo_format=..., wenn das voreingestellte Abfrageformat info_format=application/json nicht unterstützt wird. In diesem Falle können alternativ application/geojson oder text/xml genutzt werden.
oquery_layers=..., wenn nicht alle der im Layers-Parameter angegebenen Layer mit der GetFeatureInfo-Anforderung abgefragt werden sollen, ist der oder sind die Layer aufzulisten, die berücksichtigt werden sollen.
ofeature_count=..., wenn der Standardwert, dass maximal 10 Feature (Geo-Objekte) bei einer GetFeatureInfo-Anforderung ermittelt werden, abgeändert werden soll.
Einige WMS sind nicht frei verfügbar und erfordern eine Authentifizierung. Hierbei kann die Autorisierung über eine UUID (Universally Unique Identifier) erfolgen, der am Ende der URL eingefügt ist. Eine Reihe der Dienste des BKG sind geschützt und müssen für die Nutzung auf diese Weise freigeschaltet werden. Für die Benutzer des Projektes TSN erfolgt dies durch einen Platzhalter in der URL, der zur Laufzeit des Programms (beim der Anforderung mit GetMap) durch die eigentliche, im Programm hinterlegte UUID ersetzt wird, z.B.:
https://sgx.geodatenzentrum.de/wms_lbm_2018__<uuid>?layers=clc@request=GetMap!