HBUMNMapServer ger Capter Migration

= Migration = (1)\index{Migration}

Wer hat diesen Traum nicht: man installiert eine neue Version einer Software, und alles funktioniert reibungslos, mit dem Unterschied, dass man jetzt zusätzlich noch die neuen Features einsetzen kann.

Obwohl es Software geben soll, mit der das funktioniert, warten wir wohl alle immer noch darauf, diese Software zu Gesicht zu bekommen. Auch MapServer stellt keine Ausnahme dar. Allerdings kann man sich den Streß im Vorhinein erheblich verringern, wenn man weiß, was die kritischen und fehlerträchtigen Stellen sind, auf die man bei der Migration achten muß. Dabei soll das vorliegende Kapitel helfen.

=Von Version 3.6 nach Version 4.0=

Das MapServer-Wiki hat eine eigene Seite zu diesem Thema.

Geänderte und neue Parameter
Geänderte Parameter in der Syntax des Mapfiles werden Ihnen wahrscheinlich zuerst auffallen, da bei Ihrem Einsatz MapServer Fehlermeldungen wirft.


 * Das =STYLE= -Objekt ist jetzt die korrekte Weise, um die Darstellung einer Class zu notieren. Eine detaillierte Beschreibung finden Sie in Abschnitt~\ref{text:mapfile:styles}.
 * =OFFSITE= erwartet jetzt nicht mehr nur eine Zahl als Parameter (die Nummer der transparent zu setzenden Farbe in der Farbpalette), sondern einen RGB-Wert, also drei Zahlen.
 * Layer, die Verbindungen zu WMS-Servern aufbauen, werden jetzt anders notiert. Die Parameter für den URL des entfernten Servers werden nicht mehr in die =CONNECTION= des Layers geschrieben, sondern über Metdaten angegeben. Näheres finden Sie in Abschnitt~\ref{text:wms:client}.
 * Das Ausgabeformat kann mit dem neuen Parameter =OUTPUTFORMAT= näher spezifiziert werden. Das folgende funktioniert zwar als Angabe immer noch:        Man sollte sich allerdings mit der neuen Syntax vertraut machen. Mehr zu dieser Art von Ausgabeformaten finden Sie in Abschnitt~\ref{text:mapfile:ausgabeformate}.    Im gleichen Zusammenhang wandern die Parameter =INTERLACE=, =TRANSPARENT=  und =IMAGEQUALITY=  in die Definition der Ausgabeformate. Auch diese Parameter konnten vorher im Header der Datei gesetzt werden, und das kann auch weiterhin geschehen. Die Notation über Ausgabeformate ist allerdings zu bevorzugen.

MapServer kompilieren
Falls Sie bisher MapServer aus den Quellen selber kompiliert haben, und das auch weiterhin tun möchten, sollten Sie die folgenden Dinge beachten:


 * Die Bibliothek GD muß mindestens in Version 2.0.12 vorliegen. Für den erfahrenen MapServer-Kompilierer mag der Gedanke, ein Upgrade der GD durchzuführen, den einen oder anderen Schrecken bergen. Allerdings ist GD ab Version 2 wesentlich einfacher zu handhaben als die vorhergenden Versionen, sodass man sich hiervor nicht zu fürchten braucht.
 * Für WMS- und WFS-Unterstützung benötigen Sie jetzt nicht mehr die Bibliothek =libwww=, sondern =curl=.

Eine detaillierte Beschreibung der MapServer-Kompilierung finden Sie weiter vorne in Anhang~\ref{text:installation}.

Queries
FIXME: einiges


 * Die Query-Modi =ITEMQUERY= und =ITEMNQUERY=  FIXME:!1

Diverse Probleme

 * Projektionen können Ihnen einen Streich spielen. Da Sie beim Update auf MapServer 4.0 eventuell auch Ihre Projektionsbibliothek aktualisieren, könnten Sie auf das Problem stoßen, dass auf Seite~\pageref{text:mapfile:epsgchanges} beschrieben ist. Falls Sie nach der Migration plötzlich Fehlermeldungen von proj.4 erhalten, prüfen Sie, ob sich eventuell der EPSG-Code der von Ihnen verwendeten Projektion geändert hat.
 * Das Format für Shapefile-Indizes mit der Endung =.qix= hat sich geändert. MapServer 4.0 wird also die alten Indizes nicht lesen und Fehler werfen. Die Indizes können mit dem Werkzeug =shptree=  aus dem Quellcodepaket schnell neu erzeugt werden. Mehr zu Indizes und ihre Bedeutung erfahren Sie in Abschnitt~\ref{text:mapfile:indizes} und in Anhang~\ref{anhang:performance:indizes}.

MapScript
Auch für Ihre MapScript-Applikationen ergeben sich Änderungen; neben diversen neuen Objekten gibt es neue Notationen für teilweise zentrale Objektmethoden. Im folgenden muß das schon bisher in diesem Buch für Beispiele herangezogene PHP MapScript für Erklärungen herhalten.


 * Mit der Einführung neuer Sektionen für das Mapfile gibt es dementsprechend auch neue MapScript-Objekte, um auf diese Sektionen und ihre Eigenschaften zuzugreifen. Im einzelnen sind das styleObj (siehe Seite~\pageref{ref:phpms:styleobj} für den Abschnitt in der Referenz), errorObj (Seite~\pageref{ref:phpms:errorobj}), gridObj (Seite~\pageref{ref:phpms:gridobj}) und outputformatObj (Seite~\pageref{ref:phpms:outputformatobj}).
 * Die Speicherfunktion von =imageObj= nimmt keine Parameter wie Bildqualität, Transparenz und so weiter mehr entgegen. Diese werden jetzt, wie auch im Mapfile, über das =OUTPUTFORMAT=  geregelt.