2. GeoShop WMS Server

2.1. Überblick

Der GeoShop WMS Server als WMS Server ermöglicht das Publizieren von GeoShop Views.

2.2. Unterstützte WMS Features

Der GeoShop WMS Server unterstützt folgende WMS Requests gemäss WMS 1.1.0 Spezifikation:

  • getCapabilities.

  • getMap.

  • getFeatureInfo.

Ausserdem werden folgende Koordinatensysteme (SRS) unterstützt:

  • EPSG:21780: Liechtensteinisches Koordinatensystem.

  • EPSG:21781: Schweizer Koordinatensystem LV03.

Grundsätzlich ist es möglich, jedes Koordinatensystem zu benutzen in welchem die INTERLIS Dateien auf dem GeoShop Server gespeichert sind. Eine automatische Transformation zwischen den verschiedenen Koordinatensystemen ist jedoch nur zwischen den beiden oben genannten Koordinatensystemen möglich.

2.3. Installation

2.3.1. Installation des WMS Server

Der WMS Server wird in folgenden Teilschritten installiert:

[Anmerkung]

Ab GeoShop Version 2.8 muss man nur HOST_URL setzen und den WMS Dienst aktivieren.

GEOSHOP_DIR ist das Root-Installationsverzeichnis des GeoShop.

  1. Installation der Programmdateien (nur falls Dateien noch nicht vorhanden):

    Kopieren Sie die Datei WMSServer.jar nach GEOSHOP_DIR\system\bin

    Kopieren Sie die Dateien capabilities.igs und capabilties.tem nach GEOSHOP_DIR\system\www\wms.

  2. Anpassen von GEOSHOP_DIR\\user\options\appserver.opt (nur falls noch nicht vorhanden):

    Fügen Sie folgenden neuen Einträge ein:

    MAP
       AppServer MAP
          ...
          HOST_URL STRING <GeoShop Basis URL>
          ...
       }
       ...
       WMSServer MAP
          USER STRING wms
          PASSWORD STRING wms
          EXPAND_VIEWS STRING OFF
          LAYERS_QUERYABLE STRING ON
          LAYERS_SCALEHINT STRING 1000x800
          SRS STRING EPSG:21781
          GETCAPABILITIES_SCRIPT STRING /wms/getCapabilities.igs
          GETFEATUREINFO_SCRIPT  STRING /wms/getFeatureInfo.igs
       }
       ...
    }

    Für <GeoShop Basis URL> muss man die Basis URL des GeoShop angeben (d.h. http://<host>:<port>, z.B. http://www.infogrips.ch:3501).

  3. WMS Benutzer erzeugen (nur falls noch nicht vorhanden):

    In der Datei GEOSHOP_DIR\user\users\wms.usr muss folgendes definiert werden:

    USER
       name STRING wms
       password STRING wms
       privileges LIST
          STRING client
          STRING info
          STRING multi
       }
       views LIST
          STRING <view>
          ...
       }
       queries LIST
       }
       products LIST
       }
       preferences MAP
          range.minX REAL <minX>
          range.minY REAL <minY>
          range.maxX REAL <maxX>
          range.maxY REAL <maxY>
       }
    }

    [Anmerkung]

    Unter Views muss man die Views eintragen, welche man als WMS Dienst publizieren möchte (s.a. Kapitel Konfiguration). Die range.* Parameter werden für die Berechnung der max. geographischen Ausdehnung der publizierten Views benötigt.

  4. Ergänzen in der Datei GEOSHOP_DIR\user\services\services.srv (nur falls Einträge nicht bereits vorhanden):

    Machen Sie folgende Ergänzungen in der Datei

    LIST
       ...
       MAP
          name STRING wms
          description STRING 'WMS Server'
          module STRING WMSServer
          server STRING appserver
       }
       ...
       MAP
          name STRING igs
          description STRING 'generic ig/script service'
          module STRING ICSServer
          server STRING appserver
       }
       ...
    }

  5. Aktivieren des WMS Server Moduls:

    Starten Sie den GeoShop Administrator und aktivieren Sie den wms bzw. igs Service unter Servers>Services. Danach sollten Sie den GeoShop Dienst frisch starten (ebenfalls via Administrator möglich).

2.3.2. Testen der Installation

Nach der Erfolgreichen Installation bzw. Aktivierung des WMS Server können Sie den WMS Dienst wie folgt Testen:

  1. Rufen Sie die URL

    http://localhost:3501/WMS?request=getcapabilities

    mit einem Internetbrowser (IE, Netscape oder Firefox) auf. Annahme: Der GeoShop läuft auf dem lokalen Rechner auf dem Port 3501.

  2. Der Browser sollte darauf eine XML Datei anzeigen.

    Falls der Browser die XML Datei nicht anzeigt, sollten man in GEOSHOP_DIR\data\logs\serverlogs\appserver.log kontrollieren, ob folgender Abschnitt vorhanden ist:

    ...
    --------------------------------------
    module WMSServer 1.0c
    --------------------------------------
    testing environment ...
    USER is wms
    SRS is EPSG:21781
    --------------------------------------
    ...

    Falls dies nicht der Fall ist:

    • Haben Sie alle Dateien installiert ?

    • Haben Sie den Modul in appserver.opt und services.srv eingetragen (Achtung: Die Gross/Kleinschrift des Namen WMSServer ist wesentlich) ?

    • Ist der Benutzer wms.usr vorhanden ?

    • Haben Sie den WMS Dienst aktiviert und den GeoShop frisch gestartet ?

2.4. Konfiguration

2.4.1. Konfiguration von appserver.opt

In GEOSHOP_DIR\user\options\appserver.opt können Sie im Abschnitt WMSServer folgende Optionen setzen:

USER

Benutzername unter welchem der GeoShop die WMS Bilder erzeugt (normalerweise wms). Der Benutzer muss in \user\users vorhanden sein.

PASSWORD

Passwort des GeoShop Benutzers. Das Passwort sollte man änderen. Dazu muss man das Passwort auch in \user\users\<wmsuser>.usr nachführen.

EXPAND_VIEWS

ON oder OFF. Falls OFF (= Default) gesetzt ist, werden mit getCapabilities nur die Views als WMS Layer geliefert. Falls ON gesetzt ist, werden alle Layer der Views als WMS Layer mit getCapabilities geliefert.

LAYERS_QUERYABLE

ON oder OFF. Definiert, ob beim Request getCapabilities die Layer als queryable für den Request getFeatureInfo gesetzt werden sollen oder nicht.

LAYERS_SCALEHINT

OFF oder <pixelwidth>x<pixelheight>. Definiert, ob beim Request getCapabilities die Layers mit ScaleHint min/max versehen werden. Als Berechnungswert für ScaleHint muss mit dieser Option die mittlere Bildgrösse <pixelwidth>x<pixelheight> (Beispiel: 800x600) definiert werden, mit der der Request getMap Bilder bestellt. ScaleHint min/max definiert den Range über die Diagonale eines Pixels in Meter im Massstab 1:1. Über die Bildgrösse definiert durch die Option und den Ranges min_range/max_range in Quadratmeter der Layer in den Views des GeoShops wird diese Pixelgrösse berechnet.

SRS

Koordinatensytem des GeoShop Server. Das Koordinatensystem ist des Koordinatensystem in dem die INTERLIS Dateien auf dem Server abgelegt sind. Für die Schweiz gilt z.B. EPSG:21781. Ist diese Option nicht unter WMSServer definiert, so wird die gleichnamige Option unter dem Abschnitt GeoShopServer verwendet.

SRS_SHIFT_21781_2056

Ein X/Y Shift zwischen den Koordinatensystemen EPSG:21781 (CH LV03) und EPSG:2056 (CH LV95). Erfolgt eine Transformation zwischen diesen zwei Koordinatensystemen über einen Shift, so wird dieser Wert des Shift verwendet. Bei Default ist der Shift 2000000/1000000.

GETCAPABILITIES_SCRIPT

igs-Script für den WMS-Request getCapabilties. z.B. /wms/getCapabilities.igs . Mit dem Script kann der Output des Requests konfiguriert werden.

GETFEATUREINFO_SCRIPT

igs-Script für den WMS-Request getFeatureInfo. z.B. /wms/getFeatureInfo.igs . Mit dem Script kann der Output des Requests konfiguriert werden.

LOG_WMS_REQUESTS

ON oder OFF . Detailliertes loggen der WMS Requests im GeoShop Logfile. Empfohlen wird OFF .

IMAGE_SAVE

ON oder OFF . Sollen Images beim Request getMap auf dem GeoShop Server gespeichert werden. Default Speicherort ist GEOSHOP_DIR\data\images. Images erhalten Namen wms<#>.<ext> . Empfohlen wird OFF .

IMAGE_LOG

ON oder OFF . Soll ein kreiertes Image beim Request getMap im GeoShop Logfile protokolliert werden. Das Image wird mit folgendem Inhalt protokolliert (Beispiel):wms3.png 18.09.2008 16:20:46 .

IMAGE_ANNOTATION

ON|OFF|LOWER_RIGHT|LOWER_LEFT|UPPER_RIGHT|UPPER_LEFT . Soll im Image beim Request getMap eine Annotation geschrieben werden. Mit dem Wert OFF wird die Annotation nicht geschrieben. Mit dem Wert ON wird die Annotation unten rechts ins Bild geschrieben. Mit den anderen Werten kann die Position der Annotation im Bild bestimmt werden. Die Annotation enthält folgenden Inhalt (Beispiel) : wms3.png 18.09.2008 16:20:46 .

IMAGE_DIR

Absoluter oder relativer Pfad zu GEOSHOP_DIR\data zur Ablage der gespeicherten Images beim Request getMap. Hat nur Wirkung bei IMAGE_SAVE=ON . Default Speicherort ist GEOSHOP_DIR\data\images. Beispiel absoluter Pfad c:\wmsimages. Beispiel relativer Pfad \wmsimages für GEOSHOP_DIR\data\wmsimages .

IMAGE_MAXCOUNT

<Integer> oder OFF. Ein Integer-Wert bis zu welchem Wert eindeutige Images wms<#>.<ext> beim Request getMap gespeichert werden sollen. Beim Erreichen des Wertes wird wieder mit 0 angefangen, Beispiel IMAGE_MAXCOUNT=10 ergibt Images wms0.png .. wms10.png . Mit IMAGE_MAXCOUNT=OFF ist keine obere Grenze gesetzt. Hat nur Wirkung bei IMAGE_SAVE=ON .

WMS_URL

Basisadresse für den WMS Dienst (Default = WMS). Mit OFF wird der Dienst nicht registriert.

SWMS_URL

Basisadresse für den SWMS Dienst (Default = SWMS). Mit OFF wird der Dienst nicht registriert

DPI

Bildschirmauflösung des WMS-Client in dpi (Dots per Inch). Default: 96. Der Wert wird für die Ermittlung des Massstabs in Zusammenhang mit den GeoShop-View Parametern min_scale bzw. max_scale verwendet.

2.4.2. Konfiguration zusätzliche WMS-URL's

In GEOSHOP_DIR\user\options\appserver.opt können weitere WMS-URL's definiert werden. Zum Beispiel mit anderen Layers oder mit/ohne Annotations.

Dazu sind weitere WMSServer zu definieren in der Form WMSServer<i>, wobei i 2 bis 9 sein kann.

WMSServer {
  :
}
WMSServer2 {
  :
}
WMSServer3 {
  :
}

Wenn in einer Map die Option WMS_URL oder SWMS_URL nicht gesetzt ist, erhält die URL für den WMS Request die Form http://.../WMS<i>?...

Beispiele:

WMSServer ergibt http://.../WMS?... und http://.../SWMS?...

WMSServer2 ergibt http://.../WMS2?... und http://.../SWMS2?...

WMSServer3 ergibt http://.../WMS3?... und http://.../SWMS3?...

Mit den Definitionen der Optionen WMS_URL und SWMS_URL können unterschiedliche WMS und/oder SWMS Dienste mit unterschiedliche Layers - durch den User - zur Verfügung gestellt werden.

! z.B. öffentlicher WMS http://.../WMS?... mit öffentlichen Layers
WMSServer {
  USER  STRING wms 
  :
  WMS_URL STRING WMS
  SWMS_URL STRING OFF
}

! z.B. öffentlicher WMS  http://.../WMSABC?... mit öffentlichen Layers
! z.B. geschützer  SWMS  http://.../SWMSXYZ?... mit geschützen Layers je nach User
WMSServer2 {
  USER STRING user_abc
  :
  WMS_URL STRING WMSABC
  SWMS_URL STRING SWMSXYZ
}

2.4.3. Konfiguration von <wmsserver>.usr

In der Datei GEOSHOP_DIR\user\users\<wmsserver>.usr kann definiert werden, welche Views der GeoShop per WMS publizieren soll. Die Views müssen auf dem GeoShop vorhanden sein.

2.5. Sicherheit

2.5.1. Authentifizierung mit Secure WMS (SWMS)

OGC WMS beinhaltet keine Authentifizierung, das heisst, alle publizierten WMS-Layer sind frei zugänglich. Um bestimmten Anwendern bestimmte Layer nur über eine Authentifizierung zugänglich zu machen, beinhaltet der GeoShop einen zusätzlichen Secure-WMS-Service SWMS.

Der GeoShop Secure-WMS-Service wird über die URL http://<geoshop-url</SWMS? angesprochen. Der GeoShop Secure-WMS-Service frägt über die http-Authentifizierung den Benutzer mit Password ab. Dieser Benutzer entspricht einem GeoShop Benutzer, in dem die gewünschten Layer für den Benutzer definiert werden.

Durch die Kombination des WMS-Service und des Secure-WMS-Service lassen sich so öffentliche und geschützte WMS-Layer publizieren.

Öffentliche WMS Layer unter WMS-Service http://<geoshop-url</WMS?

Auf diese WMS-Layer kann ohne Authentifizierung zugegriffen werden. Die WMS-Layer werden in einem GeoShop User definiert. Zum Beispiel wms.usr wie weiter oben beschrieben .

Geschützte WMS Layer unter Secure-WMS-Service http://<geoshop-url</SWMS?

Auf diese WMS-Layer kann nur mit einer Authentifizierung zugegriffen werden. Die WMS-Layer werden in GeoShop Users definiert. Zum Beispiel User wms_x.usr für die WMS-Layer A,B und wms_y.usr für die WMS-Layer C,D .

Bei Applikationen, in denen WMS-Layer integriert werden können, die aber die http-Authentifizierung nicht unterstützen, muss ein Proxy dazwischen geschaltet werden. Die Applikation bezieht die WMS-Layer über eine URL des Proxy. Der Proxy leitet den Request weiter zum GeoShop und übernimmt die Authentifizierung. Die Authentifizierung ist im Proxy konfiguriert. Der Proxy kann in einem Web-Server integriert sein oder ein separates Programm sein. Die Applikation kann so ohne eigene http-Authentifizierung auf die WMS-Layer zugreifen.

2.5.2. Verschlüsselung mit HTTPS

Der GeoShop lässt sich zusätzlich unter dem Hypertext Transfer Protocol Secure (HTTPS) betreiben. Die Kommunikation zwischen Client und GeoShop Server erfolgt dann verschlüsselt (s.a. GeoShop-Server Dokumentation zu HTTPS).

2.5.3. Verschleierung der Basisadressen

Als zusätzliches Sicherheitsmerkmal lassen sich die Basisadressen für WMS und SWMS verschleiern. Dazu müssen die Optionen WMSServer.WMS_URL bzw. WMSServer.SWMS_URL wie folgt in appserver.opt gesetzt werden:

MAP
   WMSServer MAP
      ...
      WMS_URL STRING <WMS-Basis URL>
      SWMS_URL STRING <SWMS-Basis URL>

   }
   ...

2.6. Requests Beispiele

Folgendes sind Beispiele für die WMS Request.

  • getCapabilities.

    http://www.infogrips.ch/servlet/redirector/demo/WMS?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.1.1

  • getMap.

    http://www.infogrips.ch/servlet/redirector/demo/WMS?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1 &LAYERS=av&STYLES=&FORMAT=image/png&TRANSPARENT=TRUE&SRS=EPSG:21781 &BBOX=675764,245364,675861,245435&WIDTH=730&HEIGHT=538

  • getFeatureInfo.

    http://www.infogrips.ch/servlet/redirector/demo/WMS?REQUEST=getFeatureInfo&SERVICE=WMS&VERSION=1.1.1 &QUERY_LAYERS=av&SRS=EPSG:21781&BBOX=675764,245364,675861,245435&WIDTH=730&HEIGHT=538&X=200&Y=200