MapServer Quickstart
MapServer ist eine Open Source serverbasierte Anwendung, mit der geografische Kartenbilder und Vektordaten im Internet mittels OGC Standards wie etwa WMS , WFS und WCS veröffentlicht werden können.
This Quick Start Contents
Bemerkung
Was werden wir lernen ? Sie werden lernen, wie mit Hilfe eines OGC WMS Request über MapServer ein Bild von Layern einer Mapdatei angefordert werden kann.
Öffnen Sie den Webbrowser mit folgender URL:
http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=Getmap&VERSION=1.1.1&LAYERS=Admin%20Countries&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600
Was bedeutet der Aufruf? Einfach gesagt, es ist ein Web Map Service (WMS) GetMap Request, der MapServer sagt, er soll die angegebene Mapdatei verwenden, um bestimmte Layer als PNG Bild mit festgelegten Eigenschaften wie Bildgröße, Ausdehnung, Projektion, etc.* darzustellen. Alle Layer im „&LAYERS=…“ Bereich, die STATUS ON oder STATUS DEFAULT in der Mapdatei haben, werden nun dargestellt. Das Ergebnis sieht wie folgt aus:
Bemerkung
Alle Parameter des Requests sind WMS-spezifisch, außer „?map=/home/user/mapserver_quickstart.map“, welcher MapServer-spezifisch ist.
Obwohl MapServer für den Einsatz in Webanwendungen ausgerichtet ist, können Bilder auch über die Kommandozeile erzeugt werden. Dies kann beispielsweise bei sich wiederholenden Kartendarstellungen oder beim Debuggen hilfreich sein.
Öffnen Sie ein Terminal () und tippen Sie:
shp2img -m mapserver_quickstart.map -o mymap.png
Wenn dieser Aufruf erfolgreich ausgeführt wird, finden Sie unter file:///home/user/mymap.png ein generiertes Kartenbild.
Bemerkung
Was werden wir lernen ? Sie werden lernen, wie man neue Layer-Objekte in einer Mapdatei definiert.
Wir ergänzen jetzt einen weiteren Layer zu unserer Mapdatei. Vor dem letzten END in der Datei, fügen wir folgende Layer-Konfiguration hinzu:
LAYER
NAME "Lakes"
STATUS ON
TYPE POLYGON
DATA "ne_10m_lakes"
CLASS
STYLE
COLOR 153 179 204
END
END
END
Nun haben wir 2 Layer-Definitionen in unserer Mapdatei. Der neue Layer hat die „STATUS ON“ Eigenschaft. Das heisst, solange wir ihn nicht explizit anfragen, wird er nicht dargestellt.
Nehmen wir nun unseren vorherigen WMS GetMap Request und ergänzen den neuen Layer „Lakes“ zu dem erzeugten Bild. Dazu müssen wir einfach nur den neuen layer Namen zur „LAYERS“-Liste hinzufügen:
http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=Getmap&VERSION=1.1.1&LAYERS=Admin%20Countries,Lakes&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600
Das Bild, das nun vom MapServer dargestellt wird sieht aus wie das vorherige, nur mit dem zusätzlichen neuen lake-Layer:
Bemerkung
Was werden wir lernen ? Sie sehen ein Beispiel für die Darstellungselemente eines Layers in Abhängigkeit von seinen Eigenschaften.
In einer Mapdatei kann ein Layer-Objekt eine unendliche Anzahl von CLASS-Objekten enthalten. Diese werden verwendet, um die Darstellung von Elementen eines Layers (DATA) zu definieren. Zum Beispiel, wenn wir uns die „10m_lakes“ Datei mit einem Tool wie ogrinfo <http://www.gdal.org/ogrinfo.html> anzeigen lassen _, sehen wir die Geometrie und Attribut-Definitionen der Objekte. Diese Attributwerte können verwendet werden, um die Objekte innerhalb eines Datensatzes mit mehreren unterschiedlichen CLASS-Objekten unterschiedlich darzustellen.
Im „10m_lakes“ Datensatz haben wir das ScaleRank Attribut, welches in Bezug zur Größe der Seen steht. Wir können es benutzen, um die Seen unterschiedlich darzustellen. Im LAYER-Objekt fügen wir ein weiteres CLASS-Objekt hinzu:
LAYER
NAME "Lakes"
STATUS ON
TYPE POLYGON
DATA "ne_10m_lakes"
CLASSITEM "ScaleRank"
CLASS
EXPRESSION /0|1/
STYLE
COLOR 153 179 204
OUTLINECOLOR 0 0 0
END
END
CLASS
STYLE
COLOR 153 179 204
END
END
END
Was macht dieses neue CLASS-Objekt? Die Klasse definiert, dass das Elemente mit der „ScaleRank“-Eigenschaft gleich „0“ oder „1“ mit einem schwarzen Umriss gezeichnet werden sollen. CLASS-Objekte werden immer von oben nach unten für jedes Objekt gelesen. Wenn ein Objekt mit der „EXPRESSION“ mit einer Klasse übereinstimmt, wird diese Klasse verwendet, um das Objekt darzustellen. Wenn das Objekt nicht mit einer Klasse übereinstimmt, wird es anhand der nächsten Klasse überprüft. Wenn ein Objekt mit keiner Klasse übereinstimmt und die letzte Klasse in einem LAYER-Objekt keine „EXPRESSION“ enthält, dann wird diese Klasse als Standard benutzt. Das LAYER-Objekt „CLASSITEM“ teilt MapServer mit, welches Attribut bei der Auswertung von EXPRESSIONs benutzt werden soll.
Das Ergebnis dieser Ergänzung bewirkt, dass große Seen mit einem schwarzen Umriss gezeichnet werden:
Bemerkung
Lernen Sie mehr über EXPRESSIONS im MapServer.
Dies ist ein einfaches Beispiel und Sie können noch viel, viel mehr machen. Die MapServer Projekt Webseite enthält zahlreiche Hilfen, um Ihnen einen einfachen Einstieg zu ermöglichen. Hier sind ein paar Tipps, wo sie als nächstes nachschauen können:
- Lesen Sie die Introduction to MapServer.
- Schauen Sie sich das MapServer Tutorial an, es enthält weitere Mapdatei Beispiele.
- Lesen Sie über OGC Support and Configuration um mehr über OGC Standards im MapServer (WMS, WFS, SLD, WFS Filter Encoding, WCS, SOS, etc.) zu lernen.
- Bereit, mit dem MapServer zu arbeiten ? Dann tragen Sie sich in die Mailing Listen der Community ein, um Ideen auszutauschen, Verbesserungen zu diskutieren und Fragen zu stellen.