Allgemeines
Mittels einer Definition eines WMS-Layers können verschiedenste Attribute, die die Darstellung eines WMS-Layers beeinflussen, gesetzt werden.
Diese Attribute werden im Bereich "Überblick" genauer beschrieben.
Aufbau einer WMSLayerdefinition
Eine WMSLayerdefinition erfolgt in XML. Es empfiehlt sich folgende Deklaration:
<?xml version="1.0" encoding="UTF-8"?> <WMSLayer xmlns="http://www.geograt.de/namespaces/gisx3/layerdefinition/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... </WMSLayer>
WMSLayerdefinitionen werden im Unterverzeichnis "definitions/layers/wms" abgelegt und müssen die Dateiendung ".xml" besitzen. Es gelten die allgemeinen Hinweise zur Benamung.
Überblick
Attribut | Beschreibung | Datentyp | Optional |
---|---|---|---|
uri | Angabe der URl für der/die WMS-Layer. Eine elegante Form die Anmeldeinformation vor Benutzern zu verstecken, finden Sie weiter unten im Dokument. | URI | Nein |
projection | Optionale Angabe eines EPSG Codes für die Abfrage des WMS Layer (Beispiel: EPSG:5650). Wenn nicht angegeben, wird GISX versuchen, den WMS in dem Koordinatensystem der Karte abzufragen (EPSG:3857, WGS84 Web Mercator). | Text | Ja |
gutter | Angabe, wieviel Meter über den Kachelbereich hinaus (Überlappung) der/die WMS-Layer geladen werden soll. Verhindert Darstellungsfehler. | Ganzzahl | Ja |
preload | Angabe, wieviele Kacheln ausserhalb des aktuellen Sichtbereichs für der/die WMS-Layer geladen werden sollen. | Ganzzahl | Ja |
version | Versionsangabe für der/die WMS-Layer. | Text | Nein |
format | Formatangabe für der/die WMS-Layer. Beispiel: image/png | Text | Nein |
transparent | Angabe, ob der/die WMS-Layer transparent sein soll. | true | false | Ja |
layers | Layername des WMS-Layers auf dem Server. | WMSLayer | Nein |
Layers
Hat man sich für einen WMS-Layer entschieden, muss noch der passende Wert für das Attribut "layers" ermittelt werden. Dies kann direkt mit der "uri" des WMS-Layer bewerkstelligt werden, indem man die uri mit "?getCapabilities" erweitert.
Beispiel: http://www.wms.nrw.de/geobasis/wms_nw_alkis_grau?getCapabilities -> Dort nach dem Begriff "Layer" suchen. Der Wert des Tags "Name" ist der passende Wert für das Attribut "layers".
Gutter
Wie bei WMSLayer erwähnt sorgt gutter für eine Überlappung der Kacheln und kann so Darstellungsfehler verhindern. Bei bestimmten Daten, welche über WMS-Server zur Verfügung gestellt werden, ist es mögliche die grafische Ausprägung vom Client aus zu beeinflussen.
Wenn Punktförmige Objekte z.B. Kanaldeckel sich am Rand einer Kachel befinden und man für die Darstellung ein Symbol verwendet, welches dann über den Kachelrand hinaus ragt, wird dieses abgeschnitten.
In dieser Grafik wurden bereits die Unterteilungen für die nächsten Zoomstufen eingezeichnet.
Preload
Mit preload werden Kacheln außerhalb des sichtbaren Bereiches geladen um die Darstellung für's panen schneller zu laden. Hierfür werden z.B. eine Kacheln in jede Richtung zusätzlich geladen. Beim Zoomen führt das auch dazu, dass die Randbereich des neuen sichtbaren Ausschnittes verschwommen sind anstatt überhaupt nicht angezeigt zu werden. Um sich das ganze leichter vorzustellen ein kleines Beispiel:
A | B | C | D | E | F | G | H | |
---|---|---|---|---|---|---|---|---|
1 | ||||||||
2 | ||||||||
3 | ||||||||
4 | ||||||||
5 |
Es wird angenommen, dass die Tabelle eine Ansammlung von Tiles ist und der rote Bereich (B2 - G4) bereits im Browser dargestellt wird. Wenn wir nun die Karte um eine Tile-Spalte nach rechts verschieben, so dass der Bereich B3 - H4 dargestellt wird, müssen die Kacheln H2 - H4 nicht erst geladen werden, da diese bereits beim Browser im Cache liegen.
WMS mit Benutzername und Passwort versteckt einbinden
Durch die Angabe von Benutzername und Passwort in der URI des WMS Layers werden diese Informationen direkt zum Client gesendet, können dort demnach gelesen werden.
Wenn Sie diese Informationen verstecken möchten, hilft die Einbindung als redirect.
Im Beispiel sehen Sie zunächst die Layerdefinition (z.B. in einer Karte) vorher:
<layer> <wms> .... <uri>http://user:password@securedWMS.de/service/someService</uri> ... <layers> <layer>some-layer</layer> </layers> </wms> </layer>
Legen Sie zunächst eine Datei mit einem beliebigen Namen und der Endung .properties in <GISX3HOME>config/redirect an (Im Beispiel securedWMS.properties):
# Some sort of test for redirecting services userInfo=user:password # The host host=securedWMS.de # The path path=/service/someService
Anschließend ändern Sie die URI in der Layerdefinition:
<layer> <wms> .... <uri>./restservice/redirect/securedWMS</uri> ... <layers> <layer>some-layer</layer> </layers> </wms> </layer>
Beachten Sie bitte das der letzte Teil der URI mit dem Namen der oben angelegten .properties Datei übereinstimmen muss.