HBUMNMapServer ger Capter 1

= Einführung =

Dieses Kapitel gibt eine kurze Einführung, was dieses Buch ist, was es möchte, und wie es das zu erreichen gedenkt.

Aufbau dieses Buches
Zuvörderst möchten wir Sie in Kapitel durch den Aufbau des Buches lotsen -- diesen Abschnitt lesen Sie gerade. Es folgt eine ausführliche Beschreibung des sogenannten Mapfiles in Kapitel, der zentralen Konfigurationsdatei des MapServers.

Das nächste Kapitel, Nummer, handelt von den notwendigen Schritten, den MapServer zu einer OGC-konformen Anwendung zu machen. Dieser Standard ist weithin anerkannt, und in seiner grundlegenden Anwendung ist der MapServer mit seinen Parametern und so weiter proprietär. Um seine Schnittstellen an den genannten Standard anzupassen, sind einige Änderungen (im wesentlichen am Mapfile) nötig.

Kapitel beschäftigt sich mit Daten, die nicht in einzelnen Dateien vorliegen, sondern in Datenbanken gespeichert sind. Dabei werden einige proprietäre Wege angeschnitten und Verwendung des freien PostGIS ausführlich vorgestellt.

Von der MapServer-Webseite kann man sich eine Demo-Applikation herunterladen: das berühmte Itasca-Demo. Viele Anfragen auf der Mailingliste beziehen sich auf dieses Demo; anscheinend ist es nicht ganz einfach an den Start zu bringen. Kapitel über Demos, das auf Seite \pageref{text:demos} beginnt, soll Ihnen bei der Installation der bekanntesten Demos helfen.

Das darauf folgende Kapitel setzt sich mit MapScript auseinander, das die Funktionalitäten, die der MapServer bietet, in eine Bibliothek mit einfach zu benutzender Programmierschnittstelle auslagert.

Das letzte Kapitel im Textteil, Kapitel, nimmt sich diverser kleiner Werkzeuge an, die als Bestandteil der MapServer-Distribution oder diverser Bibliotheken ein unentdecktes Dasein fristen, jedoch erheblichen Nutzen haben können.

Der Anhang besteht aus diversen Teilen; er bietet eine kurze Referenz bezüglich der Limits des MapServers und der Änderungen, die sich zwischen den verschiedenen Versionen ergeben haben (in Form des 'offiziellen' ChangeLogs), eine PHP MapScript-Referenz, eine Anleitung zum Bezug und zur Installation des MapServers, eine Anleitung zur Migration von Anwendungen zwischen verschiedenen MapServer-Versionen, eine Liste und Beschreibung der unterstützten Raster- und Vektorformate, Überlegungen zur Sicherheit von MapServer und drauf basierender Anwendungen, Hinweise zur Steigerung der Performance Ihrer Anwendungen sowie einige Verweise ins Internet, die Informationen geben können, die über den Umfang dieses Bandes hinausgehen.

Was ist ein Mapserver?
Unter einem Mapserver möchten wir ein Programm verstehen, das Karten nach bestimmten Anforderungen erstellt und diese dann ausliefern. Ein Mapserver hat die Aufgabe Karten individuell, unmittelbar und interaktiv Geodaten zu visualisieren und in Form von Karten auszuliefern. Der klassische Ansatz, der auch vom UMN MapServer verfolgt wird, ist ein Programm in einem Webserver -- wie zum Beispiel Apache -- laufen zu lassen, das über URL-Parameter angesprochen werden kann.

MapServer ist ein Programm, dessen Entwicklung unter Unix seinen Anfang genommen hat. Getreu der Unix-Philosophie, dass ein Programm immer genau eine bestimmte Aufgabe erfüllen soll, diese aber richtig, ist der MapServer von Hause aus kein GIS, sondern tatsächlich nur Software, die Karten ausliefert. Wir werden jedoch sehen, dass es einige Möglichkeiten gibt, diese selbstgesteckten Grenzen etwas zu erweitern.

Neben den diversen Lösungen, die Java-Applets für die Navigation verwenden, verwendet MapServer normalerweise ein HTML-Interface mit eingebetteten Formularen, um die Interaktion mit dem Benutzer zu gestalten.

Vorteile des UMN MapServer
Ich möchte an dieser Stelle kein bestimmtes Produkt für einen Vergleich herbeiziehen; stattdessen ist es eher angebracht, die Unterschiede zwischen einer freien und einer proprietären Software herauszuarbeiten. Zuerst ist proprietäre Software teuer. Wo der UMN MapServer und die begleitenden Bibliotheken frei (und an dieser Stelle bedeutet frei tatsächlich: kostenlos) aus dem Internet zu beziehen sind, werden bei proprietären Produkten schon Kosten nur für eine Standardinstallation fällig. Dazu kommen weitere Nutzungs- und Lizenzgebühren und Wartungskosten, sowie Aufwendungen für Schulungen etc. Und am Ende dürfen Sie sich daran machen, tatsächlich Ihre Applikation für den Server zu entwickeln.

Bei Software, die neu in Ihrem Unternehmen eingesetzt wird, sind die letztgenannten Kosten, insbesondere die Schulung betreffend, nicht zu vermeiden, falls Sie diesen Teil nicht an ein anderes Unternehmen übergeben, das Ihre Daten aufbereitet und die Applikation entwickelt. Aber der Batzen, den die Lizenz- und Nutzungsgebühren ausmachen, lässt sich mit MapServer angenehm umschiffen.

Des weiteren haben Sie die Möglichkeit, die Software nach Belieben zu verändern, denn die Quelltexte stehen Ihnen zu Verfügung. Auf diese Weise werden auch Fehler sehr schnell beseitigt, da man nicht darauf warten muß, dass sich ein bestimmter Hersteller dazu herabläßt, sich eines Fehlers anzunehmen. Des weiteren ist die Software wesentlich vertrauenswürdiger, denn Sie können immer in sie 'hineinsehen', wenn Sie es für richtig halten.

Ein ganz wichtiger Punkt ist die ausgesprochen aktive Nutzergemeinschaft des UMN MapServers. Auf der Homepage http://www.umn-mapserver-community.de können Sie beispielsweise zwischen einer Mailinglist und einem Forum wählen um sich gegebenenfalls auch kostenlose Unterstützung zu beschaffen. Natürlich können Sie sich auch in die englische Mailingliste auf der Homepage http://mapserver.org eintragen.

Und letztlich -- aber nur, wenn Ihnen das etwas wert ist -- ist das Karma der Software besser; sie ist frei und als Produkt gemeinsamer Arbeit vieler Personen entstanden, die die Software entwickeln.

Die verschiedenen Funktionsweisen
Der UMN MapServer kann auf drei verschiedene Weisen eingesetzt werden: als CGI-Programm, als OGC-konformer Mapserver (ebenfalls als CGI funktionierend); und schließlich kann seine Funktionalität, in einer Bibliothek zusammengefaßt, von verschiedenen Programmiersprachen aus erschlossen werden.

Beachten Sie bitte -- verzeihen Sie die Wiederholung --, dass MapServer kein voll funktionsfähiges GIS ist, sondern eine Software zum Anzeigen von Karten. Dementsprechend werden Sie nach Dingen wie dem Messen von Entfernungen vergeblich suchen. Solche Funktionen können aber hinzuprogrammiert werden.

MapServer als CGI
In dieser Funktionsweise ist MapServer ein CGI-Programm, das in einem Webserver wie beispielsweise dem Apache residiert. Das Programm wird über einen URL aufgerufen, dem eine Reihe von Parametern mitgegeben werden, wie etwa der gewünschte Ausschnitt, der dargestellt werden soll, die anzuzeigenden Layer und so weiter.

Des weiteren kann das Programm ein HTML-Template verarbeiten, das die fertige Karte eingebettet bekommt und auch Navigationselemente enthält, um in die Karte hinein- und herauszoomen und sie verschieben zu können.

Außerdem besitzt der MapServer die Möglichkeit, rudimentäre Anfragen über die Daten auszuwerten, die den Karten zugrunde liegen. Die Präsentation von Abfrageergebnissen läuft ebenfalls über eigene HTML-Templates ab.

Konfiguriert wird der MapServer über eine zentrale Layout-Datei mit dem Namen Mapfile.

MapServer OGC-konform
In seiner OGC-konformen Variante funktioniert der MapServer ebenfalls als CGI-Programm. Er arbeitet jedoch kein Template mehr ab, sondern liefert ausschließlich Karten aus.

Der WMS-Standard des OGC definiert das Aussehen der Parameter, die an einen konformen MapServer übergeben werden. Durch diese gemeinsame Schnittstelle sind solche Server in der Lage, auch untereinander zu kommunizieren, sodass die benötigte Rechenzeit für eine fertige Karte auf mehrere Server verteilt werden kann.

Der UMN MapServer kann im WMS-Modell sowohl als Server als auch als Client fungieren.

Darüberhinaus unterstützt der MapServer auch die Funktionalität eines WFS, eines Web Feature Server, allerdings ist zu beachten dass in Version 5.2 noch nicht die Funktionalität als WFS-T (also als schreibender WFS) zur Verfügung steht. MapServer beantwortet also auch endlich Anfragen über die der Kartendarstellung zugrunde liegenden Daten.

MapScript
MapScript ist ein Oberbegriff für die Möglichkeit, die Funktionalität des MapServers aus einer beliebigen Programmiersprache zu benutzen. Die sicherlich am häufigsten genutzte und am Besten dokumentierte Variante stellt dabei PHP/Mapscript dar, aber auch Python/Mapscript oder Java/Mapscript werden desöfteren genutzt. Dabei kann ein Mapfile geladen und alle seine Bestandteile manipuliert werden; und natürlich können auch Karten generiert werden. Außerdem gibt es einige Funktionen, um Shapefiles zu manipulieren und die fertigen Daten eines Layers zu verändern, indem beispielsweise neue Punkte zur Anzeige hinzugefügt werden.

ChangeLog
Ein ChangeLog finden Sie in jedem guten Quelltextpaket -- und natürlich auch in jedem guten Buch. Eine solche Datei zeigt an, mit welchem Versionssprung sich welche Dinge geändert haben. Insbesondere falls Sie bereits eine frühere Ausgabe des Handbuchs besitzen, werden Sie die folgende Liste sicherlich zu schätzen wissen.

\subsubsection{Handbuch zu Version 4.0}

Die folgenden Dinge haben sich im Vergleich zum Handbuch für Version 3.6 geändert:

\item ChangeLog: zur Verdeutlichung von Änderungen hinzugefügt. \item Kapitel über das Mapfile: Filtern von Rasterdaten; neue Notation der Ausgabeformate des MapServers (ab Seite ); diverse Beispiele im Abschnitt über Symbole. Außerdem wurden die Abschnitte etwas umsortiert, ein Abschnitt über Graticule-Layer hinzugefügt, und so weiter. \item Kapitel über OGC-Konformität: WFS-Funktionalität und OGC Map Contexts hinzugefügt. \item Kapitel über Datenbanken: PostGIS wird ausführlicher behandelt als zuvor. \item Kapitel über MapScript: Beschreibung der Fehlerbehandlung über das neue errorObj-Objekt. \item Kapitel über Dateiformate: einige neue Beispiele zur korrekten Notation für diverse Dateiformate, beispielsweise MapInfo-Dateien. \item Kapitel über Installation: Hinweis auf die MapServer-Distribution aus dem Hause MapMedia. \item Referenz zu PHP MapScript: Vollständig überarbeitet, inklusive Einfügen der neuen Objekte \textit{styleObj}, \textit{errorObj} und so weiter. \item Neues Kapitel über offizielle Demos, als eine Art Schnelleinstieg: Kapitel ab Seite \pageref{text:demos} \item Neues Kapitel im Anhang über die Migration einer MapServer-Anwendung zwischen verschiedenen Versionen, im Moment natürlich von Version 3.6 nach Version 4.0: Anhang  ab Seite \pageref{anhang:migration}. \item Neues Kapitel im Anhang über die Sicherheit von MapServer-Installationen und Anwendungen: Anhang ab Seite \pageref{anhang:sicherheit}. \item Neues Kapitel im Anhang über Optimierung der Performance von MapServer-Anwendungen: Anhang ab Seite \pageref{anhang:performance}. \item Neue kurze Abhandlung über die MapServer-Lizenz \item Und natürlich wurden diverse neue Literatur- und Quellenverweise, Richtig- und Klarstellungen (die sich insbesondere aus den MapMedia-Schulungen ergeben haben) hinzugefügt und Rechtschreibfehler entfernt. Neue gibt es kostenlos dazu! Außerdem gibt es eine Menge neuer Abbildungen und endlich einen brauchbaren Index.

Migration
Falls Sie bisher schon mit dem MapServer gearbeitet haben, und 'einfach nur' ein Upgrade vornehmen wollen, möchten Sie wahrscheinlich einen Überblick über die Änderungen haben, die Ihnen bei der Migration auf die Füße fallen könnten. Es gibt daher ein eigenes Kapitel zu diesem Thema, das Sie in Anhang finden.

Danksagung
Dieses Handbuch wurde -- natürlich neben einer Menge eigener Erfahrungen und Notizen zu der Software -- zu einem guten Teil aus der Dokumentation zusammengetragen, die sich auf der offiziellen MapServer-Seite \cite{http:website:mapserver} und dem dazugehörigen Wiki befindet. Ich möchte allen beteiligten Personen für ihre Zeit und Mühe danken, die sie in die Zusammenstellung der Dokumentation gesteckt haben. Dazu kommen selbstverständlich all die vielen anderen, die die Software weiter entwickeln oder durch ihre Beiträge auf der Mailingliste und ihre Arbeit am Wiki die Arbeit mit dem MapServer zu einer erfreulichen Sache machen.

Des weiteren möchte ich lobend die Teilnehmer der MapMedia-Schulungen erwähnen, die nicht nur passiv konsumieren, sondern sich immer aktiv eingebracht haben und dadurch auch Fehler im Handbuch aufgezeigt haben.

Für den Screenshot auf Seite \pageref{gtopo30} kamen Daten zum Einsatz, für deren Verwendung der Vertreiber in Veröffentlichungen um folgenden Zusatz bittet:

\textit{These data are distributed by the Land Processes Distributed Active Archive Center (LP DAAC), located at the U.S. Geological Survey's EROS Data Center\ http://LPDAAC.usgs.gov.}