OGC WMS

Nutzung standardkonformer Datenquellen - Web Map Service (WMS)-Dienste

Mit dem Ebenentyp WMS-Dienst können Dienste über eine URL in den Administrativen Baum hinzugefügt werden. 

Hinweis zu WMTS: Im Geomis Sachsen werden die Orthofotos, die bereits als WMS zur Verfügung stehen als WMTS Dienst angeboten. Dieser kann ebenfalls in cardo eingebunden werden. (ab Version 3.8.1) Lesen Sie dazu hier weiter.
 
Ein Beispiel finden Sie auf den folgenden Seiten.
Transformationsproxy verwenden

Es ist möglich, WMS-Dienste, welche nicht das benötigte Bezugssystem anbieten, über einen zwischengeschalteten Dienst (Transformationsproxy genannt) die gewünschte(n) Bezugssysteme noch hinzuzufügen. Beim Bildabruf in einem der hinzugefügten Bezugssysteme erfolgt dann eine automatische Transformation des Kartenbildes.

Bei der Verwendung der OpenStreetMap-Kacheln als Grundkarte im cardo.Map kann dies beispielsweise nützlich sein, da andere WMS Dienste selten in dem für die OSM-Kacheln verwendeten Bezugssystem (Spherical Mercator) angeboten werden.

Die Url des cardo-eigenen Transformationsproxys lautet:

http://IhrServer/net3/public/wmsproxy.ashx?...

An diese URL werden noch folgende Parameter angehangen: 

  • additionalSrs: Durch Komma getrennt die EPSG-Codes der Bezugssysteme, die dem Dienst "untergeschoben" werden sollen (mind. eines).
  • prefSrcSrs: (optional) Hiermit kann ein EPSG-Code vorgegeben werden, der im Original-Dienst existiert und der verwendet werden soll, um das Kartenbild abzuholen, wenn eines der "untergeschobenen" Bezugssysteme zur Anzeige gebracht werden soll. Wenn hier ein möglichst ähnlich gelagertes System angegeben wird, werden Drehungen/Verzerrungen im Endergebnis minimiert. Fehlt dieser Parameter oder bietet der Dienst den eingestellten Code nicht an, dann wird das Erstbeste angebotene Bezugssystem verwendet.
  • source: Die Url zum Quell-WMS-Dienst, ohne die Parameter Request=GetCapabilities&Version=... . Beachten Sie bitte auch den Hinweis am Ende der Seite zur korrekten URL-Kodierung.
  • qf: (optional), Dezimalzahlen (mit Dezimalpunkt) im Bereich größer 0 bis einschließlich 4, Standard ist 1. Dies ist ein Qualitätsfaktor, der intern die Sub-Pixel-Genauigkeit bei der Reprojektion der Bildpunkte erhöht. Werte über 1 verbessern die Qualität. Ein empfehlenswerter Wert ist 2. Der optische Unterschied bei darüber hinaus gehenden Werten ist kaum warnehmbar und wird mit einer deutlich längeren Rechenzeit erkauft.
  • login: (optional) Durch Komma getrennte Angabe von Nutzername und Kennwort, falls der Original-Server eine Anmeldung erfordert.
  • proxy: (optional) Falls für den Zugriff auf das Internet ein Proxy-Server benötigt wird, kann dieser in der Form servername:port angegeben werden. Ist für cardo ein Standardproxy definiert, dann wird dieser Standardproxy automatisch verwendet.
  • proxyLogin: (optional) Falls Ihr Proxy-Server eine Anmeldung erfordert, können, durch Komma getrennt, Nutzername und Kennwort angegeben werden.
  • forceTransformation: (optional), true|false, Standard ist false. Hiermit kann erzwungen werden, dass der Transformationsproxy die Reprojektion grundsätzlich selbst ausführt. Standardmäßig ist es so, dass Bezugssysteme, die der angesprochene WMS-Dienst selbst bereitstellt nur 1:1 druchgereicht werden.

Weitere Erläuterungen zu login, proxy und proxyLogin: Die Angaben erfolgen in der gleichen Form, wie in den analogen Eingabefeldern der Ebenendefinition. Die Werte können daher 1:1 übernommen werden und müssen dann aus der Ebenendefinition gelöscht werden. Keine dieser Angaben gelangt nach "draußen" und die Login-Daten werden bei der internen Kommunikation verschlüsselt übertragen.

Weitere Erläuterungen zu prefSrcSrs: Wenn der Proxy ein Bild in einem Bezugssystem produzieren soll, welches der Original-Dienst nicht anbietet, dann muss der Proxy ein Bild in einem Bezugssystem vom Dienst abholen, das dieser anbietet. Dazu nimmt der Proxy das erstbeste SRS aus der Liste, welche der Dienst in den Capabilities bekannt gibt. Anschließend transformiert der Proxy das erhaltene Bild und gibt es weiter. Je nachdem, wie unterschiedlich die Bezugsysteme gelagert sind, ergeben sich bei der Transformation des Bildes mehr oder weniger große "Umformungen" (Rotation, Verzerrung). Um den negativen Einfluss auf die Darstellung möglichst klein zu halten, sollten das Quell-Bezugssystem und das Ziel-Bezugssystem so ähnlich wie möglich sein (gleiche Projektion, gleicher oder nahe liegender Mittelmeridian). Damit der Proxy nicht das ungeeignetste Bezugssystem verwendet, weil das in der Liste zufällig als erstes steht, kann dem Proxy mit dem Parameter prefSrcSrs (übersetzt: bevorzugtes Quell-Bezugssystem) eine bessere Alternative vorgegeben werden.

Zusätzliche Hinweise:

  • Beachten Sie, dass die URL den allgemeinen Regeln (RFC 3986) entsprechend valide sein muss. Besonders mehrere "?" in der URL können  Probleme bereiten (Es darf nur ein "?" in der URL vorhanden sein! . Es trennt den Teil "Domainname + Pfad + Datei" von den Zusatzargumenten ab!). Sonderzeichen, die Teil von Argumentwerten sind müssen URL-kodiert werden (s.u.).
  • Der im cardo für OSM-Kacheln verwendete EPSG-Code (Spherical Mercator) ist: 3857
  • Ab der Version 3.8.2 ist die Angabe eines Proxy-Servers möglich (siehe oben).

Beispiele:

http://IhrCardo/net3/public/wmsproxy.ashx?prefSrcSrs=25833&additionalSrs=3857&source=
http://www.landesvermessung.sachsen.de/ias/basiskarte4
/service/SRV4IN_FLURST/WMSFREE_/WMSFREE_/wmsservice

oder

http://IhrCardo/net3/public/wmsproxy.ashx?additionalSrs=31469,3857&prefSrcSrs=25833&source=http://isk.geobasis-bb.de/ows/dnm.php

-> Fehlermeldungen

Wichtiger Hinweis: Die Url des Original-WMS-Dienstes enthält u.U. Sonderzeichen, die URL-kodiert werden müssen. Es kann dazu die Seite:
http://webs.idu.de/url.htm verwendet werden.
 
Beispiel:

unkodiert:
http://www.example.com/service/?Argument1=Wert1&Argument2=Wert2

kodiert:
http%3A//www.example.com/service/%3FArgument1%3DWert1%26Argument2%3DWert2

Fragen, Probleme, Lösungen
WMS Url: Anzeige Detaildaten

Anwendung: bspw. in der Sachdatenanzeige im cardo4 als Parameter mit der Aktion "Öffnen einer URL" für eine Sachdatenspalte

Problem: URL wird in der Ausgabe mit dem Parameter text/plain geöffnet:

https://www.umwelt.sachsen.de/arcgis/services/wasser/wrv/MapServer/WmsServer?REQUEST=GetFeatureInfo&VERSION=1.3.0&Service=WMS&CRS=EPSG:25833&FORMAT=image/png24&WIDTH=1485&HEIGHT=841&BBOX=405159.87729,5655628.51640,406972.41093,5656655.00852&LAYERS=17&QUERY_LAYERS=17&INFO_FORMAT=text/plain&I=378&J=296&FEATURE_COUNT=5000

Lösung:

Hinterlegung der Einstellung im Managementcenter. Dazu gibt es beim WMS Diensten die Eigenschaft wmsGetFeatureInfoFormatOrder. Dort stellen Sie text/html ein. Bei der nächsten Sachdatenabfrage steht im Link dann html.

https://www.umwelt.sachsen.de/arcgis/services/wasser/wrv/MapServer/WmsServer?REQUEST=GetFeatureInfo&VERSION=1.3.0&Service=WMS&CRS=EPSG:25833&FORMAT=image/png24&WIDTH=1485&HEIGHT=841&BBOX=405159.87729,5655628.51640,406972.41093,5656655.00852&LAYERS=17&QUERY_LAYERS=17&INFO_FORMAT=text/html&I=378&J=296&FEATURE_COUNT=5000

Fehlermeldung/Fehlerausgabe/ITC/XML Schema Validierung

Fehlermeldung:

Error while Reading Capabilities Request: HTTP_STATUS_DENIED, Statuscode: 401 

In der Angabe der URL des WMS-Dienstes fehlt die "/public/" Freigabe oder Nutzername oder Password für diesen WMS-Dienst.

Fehlerausgabe WMS-Dienst

WMS-Dienste geben einen Fehlertext im Bild aus, wenn nicht alle Ebenen enthalten sind. Der Fehlertext wird dabei ohne Details ausgegeben. Zudem kann den Diensten in der GetMap-Anforderung der Parameter "ExceptionOn" übergeben werden, um Fehler zu generieren.

Folgende Werte sind möglich:

  • Failed: wenn bei alle Ebenen Fehler auftraten
  • SomeErrors: schon sobald bei einer Ebene ein Fehler auftrat

Nutzung ITC

Treten beim Laden der Ebene Meldungen auf, bspw. Node: Failed for "Dienstname" kann dies verschiedene Ursachen haben. Nutzen Sie dazu die detaillierte Anzeige im ITC. Prüfen Sie ggf. die Timeout Einstellung.

XML Schema Validierung

Weiterhin können Sie zum Prüfen von WMS Diensten die XML Schema Validierung nutzen, um genauere Informationen zu Dienst zu erhalten.

Maptip für WMS Ebenen anzeigen?

Auf WMS Ebenen kann kein Maptip eingerichtet werden. Als Alternative können Sie das gleiche Thema als WFS Ebene einbinden und auf dieser die Maptips einrichten. Um die Graphik des WMS Dienstes für die Darstellung zu nutzen, verschieben Sie beide Ebenen in einen Ordner und vergeben für diesen Ordner die Eigenschaft "Knoten ist nicht erweiterbar".

Maptip eines WMS Dienstes als separates Fenster öffnen? (cardo3)

Vorgehensweise zur Formatierung des Selektionsergebnisses für WMS Dienste

Hinweis für den Administrator: Einstellung -WMS - Eigenschaften:
Parameter =>  wmsGetFeatureInfoFormatOrder: text/plain 

 

  1. Markieren Sie die Ebene im GIS-Ebenen-Baum als selektierbar. Beachten Sie jedoch, dass Sie die Ebenenliste des WMS - Dienstes nicht extrahieren.
  2. Anschließend mit einen Rechtsklick auf die Ebene klicken und in dem erscheinden Kontextmenü den Eintrag "Selektionsfenster anpassen" auswählen oder klicken Sie mit der rechten Maustaste in die Karte und wählen den Eintrag "Selektionsfenster" oder wählen das Selektionswerkzeug und selektieren ein Objekt.
  3. In der Ergebnisliste des Selektionsfensters klicken Sie nachfolgend auf die 3 Punkte um die Eigenschaften der Selektionstabelle zu bearbeiten

    Selektiosfenster1.png

  4. Anschließend klicken Sie auf die Schaltfläche "Link bearbeiten" -  des Datenfeldes "RequestURL"
  5. In den nachfolgend erscheinendem Dialog tragen Sie die Linkumsetzung in das dafür vorgesehene Feld ein.

    Selektionsfenster2.png

  6. Linkumsetzung: LINK("(.*)text/plain(.*)","$1text/html$2")

  7. und bestätigen die Eingabe durch einen Linksklick auf die Ok-Schaltfläche.

  8. Im Anschluss daran, definieren Sie noch den Aliasnamen und das Format der Anzeige für das Datenfeld "RequestURL". (Siehe obere Grafik)

    Aliasnamen: Detailseite

    Format: TEXT:Detailseite aufrufen

  9. Um die Einstellungen abzuschließen klicken Sie auf die Schaltfläche "Standard speichern"

  10.  

    Nachdem das Selektionsfenster aktualisiert wurde erscheint der Ergebnisliste der Eintrag

    "Detailseite aufrufen"

  11. Durch einfaches Anklicken mit der linken Maustaste wird dieser Link geöffnet  und die Daten des ausgewählten Datensatzes werden formatiert in einer Detailseite präsentiert.

Selektionsfenster3.png

Maptip eines WMS Dienstes als separates Fenster öffnen? (cardo4)

Vorgehensweise zur Formatierung des Maptipergebnisses für WMS Dienste

Hinweis für den Administrator: Einstellung -WMS - Eigenschaften:
Parameter =>  wmsGetFeatureInfoFormatOrder: text/plain / text/html

Wird der Parameter wmsGetFeatureInfoFormatOrder gesetzt, so wird automatisch im Maptip folgender Link definiert:

 

Mit Klick auf den Link öffnet sich ein weiterer Tab mit dem Inhalt des Klickpunktes: (HTML)

 

WMS Druckauflösung

Problem: Qualitätsunterschied zwischen Darstellung eines Dienstes im Browser/GIS und einer nachfolgenden Druckausgabe. Im GIS ist die Darstellung gut bis sehr gut. Der Druck ist schlecht, da Texte nicht mehr lesbar sind und Konturen verwaschen. (Anpassung der dpi in den Druckvorlagen führte zu keinem Ergebnis)

Lösung

Um die Druckqualität um Ausdruck zu erhöhen, müssen Sie den Parameter wmsAllowResolutionChange auf „ja“ setzen. Standard ist false.   

Beschreibung: Erlaubt die physische Auflösung anzufordern, wenn das Bild hoch oder runterskaliert wird (bspw. im Ausdruck). Standard ist false. Mit true kann das alte Verhalten wieder aktiviert werden (wie in den Versionen vor 3.8.10)

WMS Layersortierung

Die Reihenfolge der Layer eines WMS Dienstes kann in den Capabilities des Dienstes eingesehen werden.

Layer im Administrativen Baum

Die Anzeige der Layer im administrativen Baum erfolgt immer alphanumerisch. Dies kann nicht verändert werden.

Beachten Sie: auch wenn Sie die Reihenfolge der Layer im Managementcenter händisch anpassen, erfolgt die Sortierung im Administrativen Baum alphanumerisch.

Zeichungsreihenfolge im cardo

Die Zeichnungsreihenfolge entspricht immer der Reihenfolge in den Capabilities.

Wird im Managementcenter die Reihenfolge der Layer verändert, bspw. auf 4, 2, 6 (Layernummerierung) so werden die Layer im cardo4 entsprechend dieser Definition (kann sich von den Capabilities unterscheiden) dargestellt.