<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wiki-Jtmapmedia</id>
	<title>OSGeo - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wiki-Jtmapmedia"/>
	<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/wiki/Special:Contributions/Wiki-Jtmapmedia"/>
	<updated>2026-04-12T12:20:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=User:Jtmapmedia&amp;diff=125529</id>
		<title>User:Jtmapmedia</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=User:Jtmapmedia&amp;diff=125529"/>
		<updated>2020-10-25T13:39:25Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSGeo Member&lt;br /&gt;
|Name=Jörg Thomsen&lt;br /&gt;
|JobTitle=GIS-Consultant&lt;br /&gt;
|Company=WhereGroup&lt;br /&gt;
|Country=Germany&lt;br /&gt;
|State=Berlin&lt;br /&gt;
|City=Berlin&lt;br /&gt;
|Coordinate=52.4744, 13.4022&lt;br /&gt;
|LocalChapter=FOSSGIS&lt;br /&gt;
|Email=joerg.thomsen@fossgis.de&lt;br /&gt;
|Photo=Avatar_lolla-237x250.jpg&lt;br /&gt;
|Languages=German; English;&lt;br /&gt;
|Info=Jörg Thomsen is active in the german language OSGeo local chapter FOSSGIS e.V which organized the annual FOSSGIS conference. Since march 2020 he is the vice chairman of FOSSGIS e.V.. He is part of the Mapbender Team and loves MapServer. Jörg Thomsen leads several workshops and presentations on Mapbender, MapServer, GeoServer, PostgreSQL/PostGIS and OWS at a lot of Conferences FOSSGIS, AGIT, Intergeo).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Profile last updated: October 2020&lt;br /&gt;
&lt;br /&gt;
[[Category:OSGeo Member]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=User:Jtmapmedia&amp;diff=125528</id>
		<title>User:Jtmapmedia</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=User:Jtmapmedia&amp;diff=125528"/>
		<updated>2020-10-25T13:39:11Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSGeo Member&lt;br /&gt;
|Name=Jörg Thomsen&lt;br /&gt;
|JobTitle=GIS-Consultant&lt;br /&gt;
|Company=WhereGroup&lt;br /&gt;
|Country=Germany&lt;br /&gt;
|State=Berlin&lt;br /&gt;
|City=Berlin&lt;br /&gt;
|Coordinate=52.4744, 13.4022&lt;br /&gt;
|LocalChapter=FOSSGIS&lt;br /&gt;
|Email=joerg.thomsen@fossgis.de&lt;br /&gt;
|Photo=Avatar_lolla-237x250.jpg&lt;br /&gt;
|Languages=German; English;&lt;br /&gt;
|Info=Jörg Thomsen is active in the german language OSGeo local chapter FOSSGIS e.V which organized the annual FOSSGIS conference. Since march 2020 he is the vice chairman of FOSSGIS e.V.. He is part of the Mapbender Team and loves MapServer. Jörg Thomsen leads several workshops and presentations on Mapbender, MapServer, GeoServer, PostgreSQL/PostGIS and OWS at a lot of Conferences FOSSGIS, AGIT, Intergeo).&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
;Profile last updated: October 2020&lt;br /&gt;
&lt;br /&gt;
[[Category:OSGeo Member]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=User:Jtmapmedia&amp;diff=125527</id>
		<title>User:Jtmapmedia</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=User:Jtmapmedia&amp;diff=125527"/>
		<updated>2020-10-25T13:28:36Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSGeo Member&lt;br /&gt;
|Name=Jörg Thomsen&lt;br /&gt;
|JobTitle=GIS-Consultant&lt;br /&gt;
|Company=WhereGroup&lt;br /&gt;
|Country=Germany&lt;br /&gt;
|City=Berlin&lt;br /&gt;
|LocalChapter=FOSSGIS&lt;br /&gt;
|Email=joerg.thomsen@fossgis.de&lt;br /&gt;
|Photo=Avatar_lolla-237x250.jpg&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
;Profile last updated: October 2020&lt;br /&gt;
&lt;br /&gt;
[[Category:OSGeo Member]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=File:Avatar_lolla-237x250.jpg&amp;diff=125526</id>
		<title>File:Avatar lolla-237x250.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=File:Avatar_lolla-237x250.jpg&amp;diff=125526"/>
		<updated>2020-10-25T13:23:40Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=34439</id>
		<title>Komitee für Bildung und Dokumentationserstellung</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=34439"/>
		<updated>2009-01-23T10:37:45Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* 2009-01-22 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Komitee für Bildung und Dokumentationserstellung ==&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe des Komitees für Bildung und Dokumentationserstellung ist es, die Nutzung der unter dem Dach der OSGeo entwickelten &lt;br /&gt;
Softwareprodukte durch Anleitungen und Tutorials zu unterstützen.&lt;br /&gt;
Diese Anleitungen sollen vorrangig im WIKI erstellt werden, um die Vorteile einer gemeinsamen Erstellung ausnutzen zu können.&lt;br /&gt;
Fühlen Sie sich frei sich als Mitglied in dieses Komitee einzutragen und eigene Anleitungen zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Mitglieder ==&lt;br /&gt;
* [[User:Kai Behncke | Kai Behncke]]&lt;br /&gt;
* [[User:Peter_panther | Florian Thürkow]]&lt;br /&gt;
* [[User:Simon Appelt | Simon Appelt]]&lt;br /&gt;
* [[User:jtmapmedia | Jörg Thomsen]]&lt;br /&gt;
* [[User:Markus Weißmann | Markus Weißmann]]&lt;br /&gt;
* [[User:Sven Boehme | Sven Boehme]]&lt;br /&gt;
* [[User:Matthias Heber | Matthias Heber]]&lt;br /&gt;
* [[User:Khoffmann | Karsten Hoffmann]]&lt;br /&gt;
* [[User:Astrid Emde | Astrid Emde]]&lt;br /&gt;
* [[User:mikee63 | Mike Elstermann]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;float-right&amp;quot; style=&amp;quot;background-color:transparent;&amp;quot;&lt;br /&gt;
| [[Image:Autorentreffen_Linuxhotel091001.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| Treffen zum UMN MapServer Handbuch im Linuxhotel in Essen, Januar 2009&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kommunikation ==&lt;br /&gt;
=== mails ===&lt;br /&gt;
* mapserver-de@freegis.org&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
* irc://irc.freenode.net/#fossgis&lt;br /&gt;
* [http://widget.mibbit.com/?settings=d6c564d91b45ad67d712a5d287c9a39e&amp;amp;server=irc.freenode.net&amp;amp;channel=%23fossgis Webchat]&lt;br /&gt;
* regelmässige Treffen: Donnerstags 17:30 Uhr&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
* Übernahme von Teilen aus dem englischen UMN Dokument&lt;br /&gt;
* FOSSGIS 2009: [http://www.fossgis.de/konferenz/wiki/Dienstag%2C_17._M%C3%A4rz_2009#Entwickler-_und_Anwendertreffen_ab_17:30_Uhr  Di 17.3.09 17:30 ]&lt;br /&gt;
* evtl. weiteres Treffen Linux-Tag&lt;br /&gt;
* Fertigstellung September 2009 &lt;br /&gt;
* evtl. Intergeo 2009 Bereitstellung des Buches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anleitungen ==&lt;br /&gt;
* [[Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida) | Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida)]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.0 | Neuerungen des UMN MapServers 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0 | Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0]]&lt;br /&gt;
&lt;br /&gt;
* [[UMN-Mapserver_Performancetest | UMN-Mapserver Performancetest]]&lt;br /&gt;
&lt;br /&gt;
* [[Wxs mapscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Konstruktion von Diagrammen mit dem UMN MapServer 5.0 | Konstruktion von Diagrammen mit dem UMN MapServer 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.2 | Neuerungen des UMN MapServers 5.2]]&lt;br /&gt;
&lt;br /&gt;
Auf der FOSSGIS 2008 in Freiburg wurde beschlossen, dass im Rahmen von OSGeo Dach (Bildung) gemeinschaftlich das neue Handbuch für den UMN MapServer erstellt wird. Die Erstellung des Buches wird über ein WIKI laufen. Sofern Sie Interesse haben tragen Sie sich bitte in die Mailingliste [http://freegis.org/mailman/listinfo/mapserver-de mapserver-de] ein, und setzen Sie, wenn Sie möchten, oben auch einen namentlichen Link.&lt;br /&gt;
&lt;br /&gt;
Hier gehts zur Gliederung des Handbuches&lt;br /&gt;
[http://wiki.osgeo.org/wiki/HBUMNMapServer_ger http://wiki.osgeo.org/wiki/HBUMNMapServer_ger]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf mapserver user manual ]&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung der IRC treffen==&lt;br /&gt;
=== 2009-01-22===&lt;br /&gt;
Link zum gesamten Protokoll: http://logs.qgis.org/fossgis/%23fossgis.2009-01-22.log&lt;br /&gt;
&lt;br /&gt;
'''SVN der OSGEO'''&lt;br /&gt;
* wir nutzen das SVN für&lt;br /&gt;
** MapFiles&lt;br /&gt;
** Beispieldaten&lt;br /&gt;
** Grafiken (hochaufgelöste Raster und Vektor-Versionen für den Druck)&lt;br /&gt;
** LaTeX- und PDF-Druck-Versionen zu den gedruckten Ausgaben (Ergänzung, Jörg)&lt;br /&gt;
&lt;br /&gt;
'''Beispieldaten'''&lt;br /&gt;
* Es werden, wie in Essen besprochen, OSM-Daten von Hamburg für die Beispiele genommen&lt;br /&gt;
* Versuch Demo-Rasterdaten für Hamburg zu bekommen (über Kai/Simon/GiN)&lt;br /&gt;
&lt;br /&gt;
'''Finanzierung'''&lt;br /&gt;
* Beantragung der Unterstützung durch den FOSSGIS e. V.&lt;br /&gt;
* Versuch auch über den AK-WebGIS des GiN Zuschüsse zu bekommen.&lt;br /&gt;
Erläuterung für Außenstehende: Es geht hier nicht um die Bezahlung der Arbeitszeiten, nur die Erstattung oder Bezuschussung anfallender Kosten (z.B. Reisekosten) und einer Auslage der Druckkosten.&lt;br /&gt;
&lt;br /&gt;
'''Druck'''&lt;br /&gt;
&lt;br /&gt;
Angebote werden eingeholt, wenn es soweit ist, dass gedruckt werden kann. Eine Option ist die bisherige Druckerei (Schaltungsdienst Lange, Berlin), eine weitere Books on Demand: http://www.bod.de.&lt;br /&gt;
&lt;br /&gt;
'''Grafiker'''&lt;br /&gt;
&lt;br /&gt;
gefunden! &lt;br /&gt;
Chrsitian aus Osnabrück&lt;br /&gt;
&lt;br /&gt;
'''Nächster offizieller IRC'''&lt;br /&gt;
&lt;br /&gt;
Der bisherige Termin, Do 17:30, passt leider nicht mehr allen, ein Neuer muss gefunden werden: http://www.doodle.com/sprra5ehbuvex32d&lt;br /&gt;
&lt;br /&gt;
[[Category: Education]]&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33944</id>
		<title>Komitee für Bildung und Dokumentationserstellung</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33944"/>
		<updated>2009-01-11T12:26:06Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Mitglieder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Komitee für Bildung und Dokumentationserstellung ==&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe des Komitees für Bildung und Dokumentationserstellung ist es, die Nutzung der unter dem Dach der OSGeo entwickelten &lt;br /&gt;
Softwareprodukte durch Anleitungen und Tutorials zu unterstützen.&lt;br /&gt;
Diese Anleitungen sollen vorrangig im WIKI erstellt werden, um die Vorteile einer gemeinsamen Erstellung ausnutzen zu können.&lt;br /&gt;
Fühlen Sie sich frei sich als Mitglied in dieses Komitee einzutragen und eigene Anleitungen zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Mitglieder ==&lt;br /&gt;
* [[User:Kai Behncke | Kai Behncke]]&lt;br /&gt;
* [[User:Peter_panther | Florian Thürkow]]&lt;br /&gt;
* [[User:Simon Appelt | Simon Appelt]]&lt;br /&gt;
* [[User:jtmapmedia | Jörg Thomsen]]&lt;br /&gt;
* [[User:Markus Weißmann | Markus Weißmann]]&lt;br /&gt;
* [[User:Sven Boehme | Sven Boehme]]&lt;br /&gt;
* [[User:Matthias Heber | Matthias Heber]]&lt;br /&gt;
* [[User:Khoffmann | Karsten Hoffmann]]&lt;br /&gt;
* [[User:Astrid Emde | Astrid Emde]]&lt;br /&gt;
* [[User:mikee63 | Mike Elstermann]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;float-right&amp;quot; style=&amp;quot;background-color:transparent;&amp;quot;&lt;br /&gt;
| [[Image:Autorentreffen_Linuxhotel091001.jpg]]&lt;br /&gt;
|-&lt;br /&gt;
| Treffen zum UMN MapServer Handbuch im Linuxhotel in Essen, Januar 2009&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kommunikation ==&lt;br /&gt;
=== mails ===&lt;br /&gt;
* mapserver-de@freegis.org&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
* irc://irc.freenode.net/#fossgis&lt;br /&gt;
* regelmässige Treffen: Donnerstags 17:30 Uhr&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
* Übernahme von Teilen aus dem englischen UMN Dokument&lt;br /&gt;
* FOSSGIS 2009: [http://www.fossgis.de/konferenz/wiki/Dienstag%2C_17._M%C3%A4rz_2009#Entwickler-_und_Anwendertreffen_ab_17:30_Uhr  Di 17.3.09 17:30 ]&lt;br /&gt;
* evtl. weiteres Treffen Linux-Tag&lt;br /&gt;
* Fertigstellung September 2009 &lt;br /&gt;
* evtl. Intergeo 2009 Bereitstellung des Buches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anleitungen ==&lt;br /&gt;
* [[Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida) | Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida)]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.0 | Neuerungen des UMN MapServers 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0 | Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0]]&lt;br /&gt;
&lt;br /&gt;
* [[UMN-Mapserver_Performancetest | UMN-Mapserver Performancetest]]&lt;br /&gt;
&lt;br /&gt;
* [[Wxs mapscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Konstruktion von Diagrammen mit dem UMN MapServer 5.0 | Konstruktion von Diagrammen mit dem UMN MapServer 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.2 | Neuerungen des UMN MapServers 5.2]]&lt;br /&gt;
&lt;br /&gt;
Auf der FOSSGIS 2008 in Freiburg wurde beschlossen, dass im Rahmen von OSGeo Dach (Bildung) gemeinschaftlich das neue Handbuch für den UMN MapServer erstellt wird. Die Erstellung des Buches wird über ein WIKI laufen. Sofern Sie Interesse haben tragen Sie sich bitte in die folgende Mailingliste [http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de] ein, und setzen Sie, wenn Sie möchten, oben auch einen namentlichen Link.&lt;br /&gt;
&lt;br /&gt;
Hier gehts zur Gliederung des Handbuches&lt;br /&gt;
[http://wiki.osgeo.org/wiki/HBUMNMapServer_ger http://wiki.osgeo.org/wiki/HBUMNMapServer_ger]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf mapserver user manual ]&lt;br /&gt;
&lt;br /&gt;
[[Category: Education]]&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33943</id>
		<title>Komitee für Bildung und Dokumentationserstellung</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33943"/>
		<updated>2009-01-11T12:22:18Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Mitglieder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Komitee für Bildung und Dokumentationserstellung ==&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe des Komitees für Bildung und Dokumentationserstellung ist es, die Nutzung der unter dem Dach der OSGeo entwickelten &lt;br /&gt;
Softwareprodukte durch Anleitungen und Tutorials zu unterstützen.&lt;br /&gt;
Diese Anleitungen sollen vorrangig im WIKI erstellt werden, um die Vorteile einer gemeinsamen Erstellung ausnutzen zu können.&lt;br /&gt;
Fühlen Sie sich frei sich als Mitglied in dieses Komitee einzutragen und eigene Anleitungen zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Mitglieder ==&lt;br /&gt;
* [[User:Kai Behncke | Kai Behncke]]&lt;br /&gt;
* [[User:Peter_panther | Florian Thürkow]]&lt;br /&gt;
* [[User:Simon Appelt | Simon Appelt]]&lt;br /&gt;
* [[User:jtmapmedia | Jörg Thomsen]]&lt;br /&gt;
* [[User:Markus Weißmann | Markus Weißmann]]&lt;br /&gt;
* [[User:Sven Boehme | Sven Boehme]]&lt;br /&gt;
* [[User:Matthias Heber | Matthias Heber]]&lt;br /&gt;
* [[User:Khoffmann | Karsten Hoffmann]]&lt;br /&gt;
* [[User:Astrid Emde | Astrid Emde]]&lt;br /&gt;
* [[User:mikee63 | Mike Elstermann]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Autorentreffen_Linuxhotel091001.jpg |Treffen zum UMN MapServer Handbuch im Linuxhotel in Essen, Januar 2009]]&lt;br /&gt;
&lt;br /&gt;
== Kommunikation ==&lt;br /&gt;
=== mails ===&lt;br /&gt;
* mapserver-de@freegis.org&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
* irc://irc.freenode.net/#fossgis&lt;br /&gt;
* regelmässige Treffen: Donnerstags 17:30 Uhr&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
* Übernahme von Teilen aus dem englischen UMN Dokument&lt;br /&gt;
* FOSSGIS 2009: [http://www.fossgis.de/konferenz/wiki/Dienstag%2C_17._M%C3%A4rz_2009#Entwickler-_und_Anwendertreffen_ab_17:30_Uhr  Di 17.3.09 17:30 ]&lt;br /&gt;
* evtl. weiteres Treffen Linux-Tag&lt;br /&gt;
* Fertigstellung September 2009 &lt;br /&gt;
* evtl. Intergeo 2009 Bereitstellung des Buches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anleitungen ==&lt;br /&gt;
* [[Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida) | Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida)]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.0 | Neuerungen des UMN MapServers 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0 | Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0]]&lt;br /&gt;
&lt;br /&gt;
* [[UMN-Mapserver_Performancetest | UMN-Mapserver Performancetest]]&lt;br /&gt;
&lt;br /&gt;
* [[Wxs mapscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Konstruktion von Diagrammen mit dem UMN MapServer 5.0 | Konstruktion von Diagrammen mit dem UMN MapServer 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.2 | Neuerungen des UMN MapServers 5.2]]&lt;br /&gt;
&lt;br /&gt;
Auf der FOSSGIS 2008 in Freiburg wurde beschlossen, dass im Rahmen von OSGeo Dach (Bildung) gemeinschaftlich das neue Handbuch für den UMN MapServer erstellt wird. Die Erstellung des Buches wird über ein WIKI laufen. Sofern Sie Interesse haben tragen Sie sich bitte in die folgende Mailingliste [http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de] ein, und setzen Sie, wenn Sie möchten, oben auch einen namentlichen Link.&lt;br /&gt;
&lt;br /&gt;
Hier gehts zur Gliederung des Handbuches&lt;br /&gt;
[http://wiki.osgeo.org/wiki/HBUMNMapServer_ger http://wiki.osgeo.org/wiki/HBUMNMapServer_ger]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf mapserver user manual ]&lt;br /&gt;
&lt;br /&gt;
[[Category: Education]]&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=File:Autorentreffen_Linuxhotel091001.jpg&amp;diff=33942</id>
		<title>File:Autorentreffen Linuxhotel091001.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=File:Autorentreffen_Linuxhotel091001.jpg&amp;diff=33942"/>
		<updated>2009-01-11T12:19:59Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33941</id>
		<title>Komitee für Bildung und Dokumentationserstellung</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33941"/>
		<updated>2009-01-11T12:19:27Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Mitglieder */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Komitee für Bildung und Dokumentationserstellung ==&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe des Komitees für Bildung und Dokumentationserstellung ist es, die Nutzung der unter dem Dach der OSGeo entwickelten &lt;br /&gt;
Softwareprodukte durch Anleitungen und Tutorials zu unterstützen.&lt;br /&gt;
Diese Anleitungen sollen vorrangig im WIKI erstellt werden, um die Vorteile einer gemeinsamen Erstellung ausnutzen zu können.&lt;br /&gt;
Fühlen Sie sich frei sich als Mitglied in dieses Komitee einzutragen und eigene Anleitungen zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Mitglieder ==&lt;br /&gt;
* [[User:Kai Behncke | Kai Behncke]]&lt;br /&gt;
* [[User:Peter_panther | Florian Thürkow]]&lt;br /&gt;
* [[User:Simon Appelt | Simon Appelt]]&lt;br /&gt;
* [[User:jtmapmedia | Jörg Thomsen]]&lt;br /&gt;
* [[User:Markus Weißmann | Markus Weißmann]]&lt;br /&gt;
* [[User:Sven Boehme | Sven Boehme]]&lt;br /&gt;
* [[User:Matthias Heber | Matthias Heber]]&lt;br /&gt;
* [[User:Khoffmann | Karsten Hoffmann]]&lt;br /&gt;
* [[User:Astrid Emde | Astrid Emde]]&lt;br /&gt;
* [[User:mikee63 | Mike Elstermann]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Autorentreffen_Linuxhotel091001.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Kommunikation ==&lt;br /&gt;
=== mails ===&lt;br /&gt;
* mapserver-de@freegis.org&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
* irc://irc.freenode.net/#fossgis&lt;br /&gt;
* regelmässige Treffen: Donnerstags 17:30 Uhr&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
* Übernahme von Teilen aus dem englischen UMN Dokument&lt;br /&gt;
* FOSSGIS 2009: [http://www.fossgis.de/konferenz/wiki/Dienstag%2C_17._M%C3%A4rz_2009#Entwickler-_und_Anwendertreffen_ab_17:30_Uhr  Di 17.3.09 17:30 ]&lt;br /&gt;
* evtl. weiteres Treffen Linux-Tag&lt;br /&gt;
* Fertigstellung September 2009 &lt;br /&gt;
* evtl. Intergeo 2009 Bereitstellung des Buches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anleitungen ==&lt;br /&gt;
* [[Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida) | Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida)]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.0 | Neuerungen des UMN MapServers 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0 | Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0]]&lt;br /&gt;
&lt;br /&gt;
* [[UMN-Mapserver_Performancetest | UMN-Mapserver Performancetest]]&lt;br /&gt;
&lt;br /&gt;
* [[Wxs mapscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Konstruktion von Diagrammen mit dem UMN MapServer 5.0 | Konstruktion von Diagrammen mit dem UMN MapServer 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.2 | Neuerungen des UMN MapServers 5.2]]&lt;br /&gt;
&lt;br /&gt;
Auf der FOSSGIS 2008 in Freiburg wurde beschlossen, dass im Rahmen von OSGeo Dach (Bildung) gemeinschaftlich das neue Handbuch für den UMN MapServer erstellt wird. Die Erstellung des Buches wird über ein WIKI laufen. Sofern Sie Interesse haben tragen Sie sich bitte in die folgende Mailingliste [http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de] ein, und setzen Sie, wenn Sie möchten, oben auch einen namentlichen Link.&lt;br /&gt;
&lt;br /&gt;
Hier gehts zur Gliederung des Handbuches&lt;br /&gt;
[http://wiki.osgeo.org/wiki/HBUMNMapServer_ger http://wiki.osgeo.org/wiki/HBUMNMapServer_ger]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf mapserver user manual ]&lt;br /&gt;
&lt;br /&gt;
[[Category: Education]]&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33939</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33939"/>
		<updated>2009-01-11T11:37:58Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Bild mit Bildunterschrift */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; noch klären&lt;br /&gt;
 Abbildungsverzeichnis, Tabellenverzeichnis, Codeverzeichnis (Unterschrift für Codeblock angeben)&lt;br /&gt;
 Bilder svn, externer Link&lt;br /&gt;
&lt;br /&gt;
= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
Text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
bbbbbbbbbbbbrrrrr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TExt&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
&lt;br /&gt;
[[Vorlage UMN Handbuch Mapfile]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  #Anführungszeichen &amp;quot; verwenden&lt;br /&gt;
  #Parameternamen ALLE in GROSSBUCHSTABEN auch die von den ows-Diensten&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   &lt;br /&gt;
   ...&lt;br /&gt;
   CLASS&lt;br /&gt;
    STYLE&lt;br /&gt;
    END&lt;br /&gt;
    LABEL&lt;br /&gt;
    END&lt;br /&gt;
   END&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Auf die Bilder soll über einen Link zum SVN verweisen werden.&lt;br /&gt;
&lt;br /&gt;
Die Bilder werden im svn verwaltet unter (noch klären), dort auch Vektorvorlagen und Versionen hoher Auflösung ablegen.&lt;br /&gt;
&lt;br /&gt;
Darauf achten, dass der Druck s/w erfolgt und die Abb. auch in Graustufen gut lesbar sind.&lt;br /&gt;
&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33938</id>
		<title>Komitee für Bildung und Dokumentationserstellung</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33938"/>
		<updated>2009-01-11T11:29:49Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Komitee für Bildung und Dokumentationserstellung ==&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe des Komitees für Bildung und Dokumentationserstellung ist es, die Nutzung der unter dem Dach der OSGeo entwickelten &lt;br /&gt;
Softwareprodukte durch Anleitungen und Tutorials zu unterstützen.&lt;br /&gt;
Diese Anleitungen sollen vorrangig im WIKI erstellt werden, um die Vorteile einer gemeinsamen Erstellung ausnutzen zu können.&lt;br /&gt;
Fühlen Sie sich frei sich als Mitglied in dieses Komitee einzutragen und eigene Anleitungen zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Mitglieder ==&lt;br /&gt;
* [[User:Kai Behncke | Kai Behncke]]&lt;br /&gt;
* [[User:Peter_panther | Florian Thürkow]]&lt;br /&gt;
* [[User:Simon Appelt | Simon Appelt]]&lt;br /&gt;
* [[User:jtmapmedia | Jörg Thomsen]]&lt;br /&gt;
* [[User:Markus Weißmann | Markus Weißmann]]&lt;br /&gt;
* [[User:Sven Boehme | Sven Boehme]]&lt;br /&gt;
* [[User:Matthias Heber | Matthias Heber]]&lt;br /&gt;
* [[User:Khoffmann | Karsten Hoffmann]]&lt;br /&gt;
* [[User:Astrid Emde | Astrid Emde]]&lt;br /&gt;
* [[User:mikee63 | Mike Elstermann]]&lt;br /&gt;
&lt;br /&gt;
== Kommunikation ==&lt;br /&gt;
=== mails ===&lt;br /&gt;
* mapserver-de@freegis.org&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
* irc://irc.freenode.net/#fossgis&lt;br /&gt;
* regelmässige Treffen: Donnerstags 17:30 Uhr&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
* Übernahme von Teilen aus dem englischen UMN Dokument&lt;br /&gt;
* FOSSGIS 2009: [http://www.fossgis.de/konferenz/wiki/Dienstag%2C_17._M%C3%A4rz_2009#Entwickler-_und_Anwendertreffen_ab_17:30_Uhr  Di 17.3.09 17:30 ]&lt;br /&gt;
* evtl. weiteres Treffen Linux-Tag&lt;br /&gt;
* Fertigstellung September 2009 &lt;br /&gt;
* evtl. Intergeo 2009 Bereitstellung des Buches&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anleitungen ==&lt;br /&gt;
* [[Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida) | Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida)]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.0 | Neuerungen des UMN MapServers 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0 | Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0]]&lt;br /&gt;
&lt;br /&gt;
* [[UMN-Mapserver_Performancetest | UMN-Mapserver Performancetest]]&lt;br /&gt;
&lt;br /&gt;
* [[Wxs mapscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Konstruktion von Diagrammen mit dem UMN MapServer 5.0 | Konstruktion von Diagrammen mit dem UMN MapServer 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.2 | Neuerungen des UMN MapServers 5.2]]&lt;br /&gt;
&lt;br /&gt;
Auf der FOSSGIS 2008 in Freiburg wurde beschlossen, dass im Rahmen von OSGeo Dach (Bildung) gemeinschaftlich das neue Handbuch für den UMN MapServer erstellt wird. Die Erstellung des Buches wird über ein WIKI laufen. Sofern Sie Interesse haben tragen Sie sich bitte in die folgende Mailingliste [http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de] ein, und setzen Sie, wenn Sie möchten, oben auch einen namentlichen Link.&lt;br /&gt;
&lt;br /&gt;
Hier gehts zur Gliederung des Handbuches&lt;br /&gt;
[http://wiki.osgeo.org/wiki/HBUMNMapServer_ger http://wiki.osgeo.org/wiki/HBUMNMapServer_ger]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf mapserver user manual ]&lt;br /&gt;
&lt;br /&gt;
[[Category: Education]]&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33937</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33937"/>
		<updated>2009-01-11T11:13:56Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Unterkapitel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; noch klären&lt;br /&gt;
 Abbildungsverzeichnis, Tabellenverzeichnis, Codeverzeichnis (Unterschrift für Codeblock angeben)&lt;br /&gt;
 Bilder svn, externer Link&lt;br /&gt;
&lt;br /&gt;
= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
Text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
bbbbbbbbbbbbrrrrr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TExt&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
&lt;br /&gt;
[[Vorlage UMN Handbuch Mapfile]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  #Anführungszeichen &amp;quot; verwenden&lt;br /&gt;
  #Parameternamen ALLE in GROSSBUCHSTABEN auch die von den ows-Diensten&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   &lt;br /&gt;
   ...&lt;br /&gt;
   CLASS&lt;br /&gt;
    STYLE&lt;br /&gt;
    END&lt;br /&gt;
    LABEL&lt;br /&gt;
    END&lt;br /&gt;
   END&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Auf die Bilder soll aüber einen Link zum SVN verweisen werden.&lt;br /&gt;
&lt;br /&gt;
Die Bilder werden im svn verwaltet unter (noch klären)&lt;br /&gt;
&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33936</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33936"/>
		<updated>2009-01-11T11:13:19Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Unterkapitel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; noch klären&lt;br /&gt;
 Abbildungsverzeichnis, Tabellenverzeichnis, Codeverzeichnis (Unterschrift für Codeblock angeben)&lt;br /&gt;
 Bilder svn, externer Link&lt;br /&gt;
&lt;br /&gt;
= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
Text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
bbbbbbbbbbbbrrrrr&lt;br /&gt;
aaaaaaaaaaaa&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
&lt;br /&gt;
[[Vorlage UMN Handbuch Mapfile]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  #Anführungszeichen &amp;quot; verwenden&lt;br /&gt;
  #Parameternamen ALLE in GROSSBUCHSTABEN auch die von den ows-Diensten&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   &lt;br /&gt;
   ...&lt;br /&gt;
   CLASS&lt;br /&gt;
    STYLE&lt;br /&gt;
    END&lt;br /&gt;
    LABEL&lt;br /&gt;
    END&lt;br /&gt;
   END&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Auf die Bilder soll aüber einen Link zum SVN verweisen werden.&lt;br /&gt;
&lt;br /&gt;
Die Bilder werden im svn verwaltet unter (noch klären)&lt;br /&gt;
&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33935</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33935"/>
		<updated>2009-01-11T11:12:42Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; noch klären&lt;br /&gt;
 Abbildungsverzeichnis, Tabellenverzeichnis, Codeverzeichnis (Unterschrift für Codeblock angeben)&lt;br /&gt;
 Bilder svn, externer Link&lt;br /&gt;
&lt;br /&gt;
= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
Text&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
bbbbbbbbbbbbrrrrr&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
&lt;br /&gt;
[[Vorlage UMN Handbuch Mapfile]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  #Anführungszeichen &amp;quot; verwenden&lt;br /&gt;
  #Parameternamen ALLE in GROSSBUCHSTABEN auch die von den ows-Diensten&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   &lt;br /&gt;
   ...&lt;br /&gt;
   CLASS&lt;br /&gt;
    STYLE&lt;br /&gt;
    END&lt;br /&gt;
    LABEL&lt;br /&gt;
    END&lt;br /&gt;
   END&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Auf die Bilder soll aüber einen Link zum SVN verweisen werden.&lt;br /&gt;
&lt;br /&gt;
Die Bilder werden im svn verwaltet unter (noch klären)&lt;br /&gt;
&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33934</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33934"/>
		<updated>2009-01-11T11:11:30Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; noch klären&lt;br /&gt;
 Abbildungsverzeichnis, Tabellenverzeichnis, Codeverzeichnis (Unterschrift für Codeblock angeben)&lt;br /&gt;
 Bilder svn, externer Link&lt;br /&gt;
&lt;br /&gt;
= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
&lt;br /&gt;
[[Vorlage UMN Handbuch Mapfile]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  #Anführungszeichen &amp;quot; verwenden&lt;br /&gt;
  #Parameternamen ALLE in GROSSBUCHSTABEN auch die von den ows-Diensten&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   &lt;br /&gt;
   ...&lt;br /&gt;
   CLASS&lt;br /&gt;
    STYLE&lt;br /&gt;
    END&lt;br /&gt;
    LABEL&lt;br /&gt;
    END&lt;br /&gt;
   END&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Auf die Bilder soll aüber einen Link zum SVN verweisen werden.&lt;br /&gt;
&lt;br /&gt;
Die Bilder werden im svn verwaltet unter (noch klären)&lt;br /&gt;
&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33933</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33933"/>
		<updated>2009-01-11T11:08:51Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Bild mit Bildunterschrift */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
&lt;br /&gt;
[[Vorlage UMN Handbuch Mapfile]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  #Anführungszeichen &amp;quot; verwenden&lt;br /&gt;
  #Parameternamen ALLE in GROSSBUCHSTABEN auch die von den ows-Diensten&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   &lt;br /&gt;
   ...&lt;br /&gt;
   CLASS&lt;br /&gt;
    STYLE&lt;br /&gt;
    END&lt;br /&gt;
    LABEL&lt;br /&gt;
    END&lt;br /&gt;
   END&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Auf die Bilder soll aüber einen Link zum SVN verweisen werden.&lt;br /&gt;
&lt;br /&gt;
Die Bilder werden im svn verwaltet unter (noch klären)&lt;br /&gt;
&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33932</id>
		<title>Komitee für Bildung und Dokumentationserstellung</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung&amp;diff=33932"/>
		<updated>2009-01-11T11:05:11Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Komitee für Bildung und Dokumentationserstellung ==&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe des Komitees für Bildung und Dokumentationserstellung ist es, die Nutzung der unter dem Dach der OSGeo entwickelten &lt;br /&gt;
Softwareprodukte durch Anleitungen und Tutorials zu unterstützen.&lt;br /&gt;
Diese Anleitungen sollen vorrangig im WIKI erstellt werden, um die Vorteile einer gemeinsamen Erstellung ausnutzen zu können.&lt;br /&gt;
Fühlen Sie sich frei sich als Mitglied in dieses Komitee einzutragen und eigene Anleitungen zu erstellen.&lt;br /&gt;
&lt;br /&gt;
== Mitglieder ==&lt;br /&gt;
* [[User:Kai Behncke | Kai Behncke]]&lt;br /&gt;
* [[User:Peter_panther | Florian Thürkow]]&lt;br /&gt;
* [[User:Simon Appelt | Simon Appelt]]&lt;br /&gt;
* [[User:jtmapmedia | Jörg Thomsen]]&lt;br /&gt;
* [[User:Markus Weißmann | Markus Weißmann]]&lt;br /&gt;
* [[User:Sven Boehme | Sven Boehme]]&lt;br /&gt;
* [[User:Matthias Heber | Matthias Heber]]&lt;br /&gt;
* [[User:Khoffmann | Karsten Hoffmann]]&lt;br /&gt;
* [[User:Astrid Emde | Astrid Emde]]&lt;br /&gt;
* [[User:mikee63 | Mike Elstermann]]&lt;br /&gt;
&lt;br /&gt;
== Kommunikation ==&lt;br /&gt;
=== mails ===&lt;br /&gt;
* mapserver-de@freegis.org&lt;br /&gt;
&lt;br /&gt;
=== IRC ===&lt;br /&gt;
* irc://irc.freenode.net/#fossgis&lt;br /&gt;
* regelmässige Treffen: Donnerstags 17:30 Uhr&lt;br /&gt;
&lt;br /&gt;
== Anleitungen ==&lt;br /&gt;
* [[Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida) | Anleitung für Routing (Pgrouting) und UMN MapServer mit den Freien Geodaten aus Osnabrück (Frida)]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.0 | Neuerungen des UMN MapServers 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0 | Installation von MapServer, Apache und PostgreSQL/PostGIS auf Debian 4.0]]&lt;br /&gt;
&lt;br /&gt;
* [[UMN-Mapserver_Performancetest | UMN-Mapserver Performancetest]]&lt;br /&gt;
&lt;br /&gt;
* [[Wxs mapscript]]&lt;br /&gt;
&lt;br /&gt;
* [[Konstruktion von Diagrammen mit dem UMN MapServer 5.0 | Konstruktion von Diagrammen mit dem UMN MapServer 5.0]]&lt;br /&gt;
&lt;br /&gt;
* [[Neuerungen des UMN MapServers 5.2 | Neuerungen des UMN MapServers 5.2]]&lt;br /&gt;
&lt;br /&gt;
Auf der FOSSGIS 2008 in Freiburg wurde beschlossen, dass im Rahmen von OSGeo Dach (Bildung) gemeinschaftlich das neue Handbuch für den UMN MapServer erstellt wird. Die Erstellung des Buches wird über ein WIKI laufen. Sofern Sie Interesse haben tragen Sie sich bitte in die folgende Mailingliste [http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de http://lists.osgeo.org/mailman/listinfo/viscom-discuss-de] ein, und setzen Sie, wenn Sie möchten, oben auch einen namentlichen Link.&lt;br /&gt;
&lt;br /&gt;
Hier gehts zur Gliederung des Handbuches&lt;br /&gt;
[http://wiki.osgeo.org/wiki/HBUMNMapServer_ger http://wiki.osgeo.org/wiki/HBUMNMapServer_ger]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf mapserver user manual ]&lt;br /&gt;
&lt;br /&gt;
[[Category: Education]]&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33931</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33931"/>
		<updated>2009-01-11T10:56:52Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Codeblock */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
&lt;br /&gt;
[[Vorlage UMN Handbuch Mapfile]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  #Anführungszeichen &amp;quot; verwenden&lt;br /&gt;
  #Parameternamen ALLE in GROSSBUCHSTABEN auch die von den ows-Diensten&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   &lt;br /&gt;
   ...&lt;br /&gt;
   CLASS&lt;br /&gt;
    STYLE&lt;br /&gt;
    END&lt;br /&gt;
    LABEL&lt;br /&gt;
    END&lt;br /&gt;
   END&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33930</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33930"/>
		<updated>2009-01-11T10:55:40Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  #Anführungszeichen &amp;quot; verwenden&lt;br /&gt;
  #Parameternamen ALLE in GROSSBUCHSTABEN auch die von den ows-Diensten&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   &lt;br /&gt;
   ...&lt;br /&gt;
   CLASS&lt;br /&gt;
    STYLE&lt;br /&gt;
    END&lt;br /&gt;
    LABEL&lt;br /&gt;
    END&lt;br /&gt;
   END&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=UMN_MapServer_Handbuch_Literaturverzeichnis&amp;diff=33929</id>
		<title>UMN MapServer Handbuch Literaturverzeichnis</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=UMN_MapServer_Handbuch_Literaturverzeichnis&amp;diff=33929"/>
		<updated>2009-01-11T10:49:00Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Diese Seite beinhaltet das Literaturverzeichnis im Latexformat. &lt;br /&gt;
 Bitte NICHT umformatieren und Einträge nach der Vorlage einfügen.&lt;br /&gt;
 &lt;br /&gt;
 Editor zur Erstellung des Literaturverzeichnisses: KBibTeX &lt;br /&gt;
&lt;br /&gt;
% $Id: biblio.bib,v 1.32 2003/09/16 10:59:16 cvsuser Exp $&lt;br /&gt;
&lt;br /&gt;
@misc{faq:dclp,&lt;br /&gt;
title	={{FAQ der Newsgroup de.comp.lang.php}},&lt;br /&gt;
url	={http://www.dclp-faq.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{ftp:intevation:rpm,&lt;br /&gt;
title	={{MapServer 3.6 RPM-Pakete}},&lt;br /&gt;
url	={ftp://ftp.intevation.de/freegis/gnu-linux-i586/updates/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{ftp:gtopo30,&lt;br /&gt;
title	={{GTOPO 30 FTP Download}},&lt;br /&gt;
url	={ftp://edcftp.cr.usgs.edu/pub/data/gtopo30/global/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:homepage:xml,&lt;br /&gt;
title	={{Extensible Markup Language}},&lt;br /&gt;
url	={http://www.w3c.org/XML/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:homepage:mime,&lt;br /&gt;
title	={{Multipurpose Internet Mail Extensions}},&lt;br /&gt;
url	={http://www.mhonarc.org/\~ehood/MIME/MIME.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:arcsde,&lt;br /&gt;
title	={{ESRI Arc/SDE}},&lt;br /&gt;
url	={http://www.esri.com/software/arcinfo/arcsde/index.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:cert,&lt;br /&gt;
title	={{CERT der Universit�t Stuttgart}},&lt;br /&gt;
url	={http://cert.uni-stuttgart.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:cubewerx,&lt;br /&gt;
title	={{CubeWerx}},&lt;br /&gt;
url	={http://www.cubewerx.com/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:derfrosch,&lt;br /&gt;
title	={{Private Website von Thorsten Fischer}},&lt;br /&gt;
url	={http://www.derfrosch.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:dmsolutions,&lt;br /&gt;
title	={{DM Solutions}},&lt;br /&gt;
url	={http://www2.dmsolutions.ca/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:epsg,&lt;br /&gt;
title	={{European Petroleum Survey Group}},&lt;br /&gt;
url	={http://www.epsg.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:fsf,&lt;br /&gt;
title	={{Free Software Foundation}},&lt;br /&gt;
url	={http://www.fsf.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:freegisdata,&lt;br /&gt;
title	={{Freie Geo-Daten beim FreeGIS-Projekt}},&lt;br /&gt;
url	={http://www.freegis.org/geo-data.de.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:greenwood,&lt;br /&gt;
title	={{Greenwood Mapping}},&lt;br /&gt;
url		={http://www.greenwoodmap.com/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:gd,&lt;br /&gt;
title	={{GD Imaging Library}},&lt;br /&gt;
url		={http://www.boutell.com/gd/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:gdal,&lt;br /&gt;
title	={{Geospatial Data Abstraction Library}},&lt;br /&gt;
url		={http://www.remotesensing.org/gdal/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:imagemagick,&lt;br /&gt;
title	={{ImageMagick Grafikwerkzeuge}},&lt;br /&gt;
url		={http://www.imagemagick.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:freetype,&lt;br /&gt;
title	={{Freetype TrueType-Bibliothek}},&lt;br /&gt;
url		={http://www.freetype.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:libcurl,&lt;br /&gt;
title   ={{curl}},&lt;br /&gt;
url     ={http://curl.haxx.se/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:libproj,&lt;br /&gt;
title   ={{Projection library libproj.4}},&lt;br /&gt;
url     ={http://www.remotesensing.org/proj/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:geotiff,&lt;br /&gt;
title   ={{GeoTiff Library}},&lt;br /&gt;
url     ={http://www.remotesensing.org/geotiff/geotiff.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:libwww,&lt;br /&gt;
title   ={{HTTP-Bibliothek libwww}},&lt;br /&gt;
url     ={http://www.w3c.org/Library/Distribution.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:lmicmn,&lt;br /&gt;
title   ={{Land Management Information Center}},&lt;br /&gt;
url     ={http://www.lmic.state.mn.us/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:mapmedia,&lt;br /&gt;
title   ={{MapMedia Website}},&lt;br /&gt;
url     ={http://www.mapmedia.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:ming,&lt;br /&gt;
title   ={{Ming SWF library}},&lt;br /&gt;
url     ={http://www.opaque.net/ming/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:pdflib,&lt;br /&gt;
title   ={{pdflib PDF library}},&lt;br /&gt;
url     ={http://www.pdflib.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:selfhtml,&lt;br /&gt;
title   ={{SelfHTML}},&lt;br /&gt;
url     ={http://selfhtml.teamone.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:swig,&lt;br /&gt;
title   ={{Interface-Generator SWIG}},&lt;br /&gt;
url     ={http://www.swig.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:tiff,&lt;br /&gt;
title   ={{libtiff website}},&lt;br /&gt;
url     ={http://www.libtiff.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:mapserver,&lt;br /&gt;
title	={{MapServer Website}},&lt;br /&gt;
url	={http://mapserver.gis.umn.edu/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:mapservermailinglist,&lt;br /&gt;
title	={{MapServer-Users Mailinglistenarchiv}},&lt;br /&gt;
url	={http://mapserver.gis.umn.edu/cgi-bin/wilma/mapserver-users}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:ogc,&lt;br /&gt;
title	={{OpenGIS Consortium}},&lt;br /&gt;
url	={www.opengeospatial.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:ogcnetwork:impl,&lt;br /&gt;
title	={{Products Implementing OGC Specs or Interfaces}},&lt;br /&gt;
url	={http://www.opengis.org/testing/product/index.php?conf=1}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:oraclespatial,&lt;br /&gt;
title	={{Oracle Spatial}},&lt;br /&gt;
url	={http://otn.oracle.com/products/spatial/content.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:php,&lt;br /&gt;
title	={{PHP Website}},&lt;br /&gt;
url	={http://www.php.net/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:postgis,&lt;br /&gt;
title	={{PostGIS Website}},&lt;br /&gt;
url	={http://postgis.refractions.net/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:postgresql,&lt;br /&gt;
title	={{PostgreSQL Website}},&lt;br /&gt;
url	={http://www.postgresql.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:xerces,&lt;br /&gt;
title	={{Xerces XML-Parser}},&lt;br /&gt;
url	={http://xml.apache.org/xerces-c/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:owssamples,&lt;br /&gt;
title	={{OWS sample schemas}},&lt;br /&gt;
url	={http://ogc.dmsolutions.ca/wfs-1.0-xsd.zip}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{man:7:regex,&lt;br /&gt;
title	={{POSIX {1003.2} section {2.8}; \texttt{man 7 regex}}},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:ogc100,&lt;br /&gt;
title	={{OpenGIS Web Map Server Interfaces Implementation Specification 1.0.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/00-028.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:ogc110,&lt;br /&gt;
title	={{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:ogc111,&lt;br /&gt;
title	={{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.1}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/01-068r3.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:mapcontext10,&lt;br /&gt;
title	={{OpenGIS Map Context Specification 1.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/03-036r2.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:gml,&lt;br /&gt;
title	={{OpenGIS Geography Markup Language Implementation Specification 2.1.2}},&lt;br /&gt;
url	={http://www.opengis.net/gml/02-069/GML2-12.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:wfs100,&lt;br /&gt;
title	={{OpenGIS Web Feature Service Implementation Specification 1.1.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/02-058.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:sld10,&lt;br /&gt;
title	={{OpenGIS Styled Layer Descriptor Implementation Specification 1.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/02-070.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:shapefile,&lt;br /&gt;
title	={{ESRI Shapefile Technical Description}},&lt;br /&gt;
url	={http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@book{hartwig:2001:postgresql,&lt;br /&gt;
  author =       &amp;quot;Jens Hartwig&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;PostgreSQL - professionell und praxisnah&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;Addison-Wesley&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2001&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;3827318602&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@book{ray:2001:xml,&lt;br /&gt;
  author =       &amp;quot;{Erik T. Ray}&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;Learning {XML}: Creating Self-Describing Data&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;O'Reilly \&amp;amp; {Associates}&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2001&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;0-596-00046-4&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@book{theis:2000:php,&lt;br /&gt;
  author =       &amp;quot;Thomas Theis&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{PHP 4}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;Galileo Press&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2000&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;3-934358-63-2&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
@book{wall:1996:perl5,&lt;br /&gt;
  author =       &amp;quot;{{Wall}, {Christiansen}, {Schwartz}}&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{Programming Perl}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;O'Reilly \&amp;amp; Associates&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;1996&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;1-56592-149-6&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
@book{lutz:1999:python,&lt;br /&gt;
  author =       &amp;quot;{{Mark Lutz}, {David Ascher}}&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{Learning Python}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;O'Reilly \&amp;amp; Associates&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;1999&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;1-56592-464-9&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
@book{diercke:2002,&lt;br /&gt;
  author =       &amp;quot;Carl Diercke (Hrsg.)&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{Diercke Weltatlas (blau)}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;Westermann&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2002&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;3141006008&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
@book{bsi:gshb,&lt;br /&gt;
  author =       &amp;quot;{{Bundesamt f�r Sicherheit in der Informationstechnik}}&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{IT-Grund\-schutz\-hand\-buch}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;BSI&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2003&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
@manual{ rfc2606,&lt;br /&gt;
author	= &amp;quot;{{D. Eastlake 3rd} and {A. Panitz}}&amp;quot;,&lt;br /&gt;
title	= &amp;quot;{Reserved Top Level DNS Names}&amp;quot;,&lt;br /&gt;
note	= &amp;quot;{RFC 2606}&amp;quot;,&lt;br /&gt;
month	= jun,&lt;br /&gt;
year	= 1999,&lt;br /&gt;
url	= {ftp://ftp.isi.edu/in-notes/rfc2606.txt}}&lt;br /&gt;
% status: BEST CURRENT PRACTICE&lt;br /&gt;
% (Format: TXT=8008 bytes)&lt;br /&gt;
% (Also BCP0032)&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33928</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33928"/>
		<updated>2009-01-11T10:47:05Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
Längere URLs sollen als Fußnoten angegeben werden (definition siehe unten).&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   ...&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc110]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc110]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33926</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33926"/>
		<updated>2009-01-11T10:34:17Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* UMN als WMS Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
[[HBUMNMapServer_ger | '''Inhaltsverzeichnis''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
==UMN als WMS Server==&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
    * http://de.wikipedia.org/wiki/Web_Coverage_Service&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
== OWS Clients ==&lt;br /&gt;
=== Desktop GIS ===&lt;br /&gt;
=== WebGIS ===&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33925</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33925"/>
		<updated>2009-01-11T10:33:45Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* UMN als WMS Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
[[HBUMNMapServer_ger | '''Inhaltsverzeichnis''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
==UMN als WMS Server==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ffff&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
    * http://de.wikipedia.org/wiki/Web_Coverage_Service&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
== OWS Clients ==&lt;br /&gt;
=== Desktop GIS ===&lt;br /&gt;
=== WebGIS ===&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33922</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33922"/>
		<updated>2009-01-11T10:30:42Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /*  OGC-Konformität  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | Web Map Service (WMS)]] === &lt;br /&gt;
==== [[HBUMNMapServer_ger_Capter_3#UMN_als_WMS_Server | UMN als WMS Server]] ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== UMN als WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UMN als WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
=== UMN als WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33921</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33921"/>
		<updated>2009-01-11T10:25:32Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* UMN als WMS Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
[[HBUMNMapServer_ger | '''Inhaltsverzeichnis''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
==UMN als WMS Server==&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
    * http://de.wikipedia.org/wiki/Web_Coverage_Service&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
= OWS Clients =&lt;br /&gt;
== Desktop GIS==&lt;br /&gt;
== WebGIS ==&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33920</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33920"/>
		<updated>2009-01-11T10:24:13Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /*  Web Map Service (WMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | Web Map Service (WMS)]] === &lt;br /&gt;
==== [[HBUMNMapServer_ger_Capter_3#UMN_als_WMS_Server | UMN als WMS Server]] ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== UMN als WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UMN als WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== UMN als WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33919</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33919"/>
		<updated>2009-01-11T10:23:39Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Web Map Service (WMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
[[HBUMNMapServer_ger | '''Inhaltsverzeichnis''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=UMN als WMS Server=&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
    * http://de.wikipedia.org/wiki/Web_Coverage_Service&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
= OWS Clients =&lt;br /&gt;
== Desktop GIS==&lt;br /&gt;
== WebGIS ==&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33918</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33918"/>
		<updated>2009-01-11T10:20:37Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | Web Map Service (WMS)]] === &lt;br /&gt;
==== UMN als WMS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== UMN als WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UMN als WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== UMN als WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33916</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33916"/>
		<updated>2009-01-11T10:18:39Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Angabe von Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Literaturverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis | unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   ...&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc100]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc100]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33913</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33913"/>
		<updated>2009-01-11T10:17:10Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Angabe von Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
dieses Konstrukt:&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
sieht dann im Druck so aus:&lt;br /&gt;
Das Open Geospatial Consortium [34], kurz OGC, ist ein&lt;br /&gt;
&lt;br /&gt;
Und wie das Quellenverzeichnis zu handhaben ist, steht [[Vorlage_UMN_MapServer_Handbuch_Kapitel#Literaturverweis unten]]&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
=== Listen===&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
=== Codeblock ===&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   ...&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
=== Bild mit Bildunterschrift ===&lt;br /&gt;
Bilder mit Bildunterschriften&lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|dies ist ein schönes Logo]]&lt;br /&gt;
&lt;br /&gt;
===Tabelle ===&lt;br /&gt;
{|&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Verweis für den Index===&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc100]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc100]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33912</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33912"/>
		<updated>2009-01-11T10:06:47Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* WCS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
[[HBUMNMapServer_ger | '''Inhaltsverzeichnis''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
    * http://de.wikipedia.org/wiki/Web_Coverage_Service&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
= OWS Clients =&lt;br /&gt;
== Desktop GIS==&lt;br /&gt;
== WebGIS ==&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33910</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33910"/>
		<updated>2009-01-11T09:59:02Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* WCS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | Web Map Service (WMS)]] === &lt;br /&gt;
==== UMN als WMS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== UMN als WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UMN als WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== UMN als WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33909</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33909"/>
		<updated>2009-01-11T09:58:43Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* 3.3.5 WFS Client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | Web Map Service (WMS)]] === &lt;br /&gt;
==== UMN als WMS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== UMN als WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== UMN als WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33908</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33908"/>
		<updated>2009-01-11T09:58:23Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* 3.3.1 WFS Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | Web Map Service (WMS)]] === &lt;br /&gt;
==== UMN als WMS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== UMN als WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33907</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33907"/>
		<updated>2009-01-11T09:57:50Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /*  3.3 Web Map Service (WMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | Web Map Service (WMS)]] === &lt;br /&gt;
==== UMN als WMS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33906</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33906"/>
		<updated>2009-01-11T09:57:16Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /*  3.2 OGC - wie macht man das? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | 3.3 Web Map Service (WMS)]] === &lt;br /&gt;
==== UMN als WMS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33905</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33905"/>
		<updated>2009-01-11T09:56:57Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /*  3.1 OGC - warum macht man das? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | 3.2 OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | 3.3 Web Map Service (WMS)]] === &lt;br /&gt;
==== UMN als WMS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33904</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33904"/>
		<updated>2009-01-11T09:55:10Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /*  OGC-Konformität  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | 3.1 OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | 3.2 OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | 3.3 Web Map Service (WMS)]] === &lt;br /&gt;
==== UMN als WMS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Sektion&lt;br /&gt;
* Layer Sektion&lt;br /&gt;
* Request anhand der Demodaten&lt;br /&gt;
** GetFeatureInfo Besonderheiten&lt;br /&gt;
&lt;br /&gt;
==== UMN als WMS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Sektion &lt;br /&gt;
* LAYER Sektion&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Web Map Context ===&lt;br /&gt;
* Das Context-Dokument&lt;br /&gt;
* Den Kontext verwenden &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== WMS TIME ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
* Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* Anwendungsbeispiel&lt;br /&gt;
&lt;br /&gt;
=== Web Feature Service (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
Einführung&lt;br /&gt;
* MAP Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
* --&amp;gt; verschieben nur Verweis in dem Kapitel Projektionen in WFS-Servern&lt;br /&gt;
* Schemas ??? Inhalt&lt;br /&gt;
* Beispiel / Aufrufe &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
Einführung&lt;br /&gt;
* Map Section&lt;br /&gt;
* LAYER Section&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33902</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33902"/>
		<updated>2009-01-11T09:36:48Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
[[HBUMNMapServer_ger | '''Inhaltsverzeichnis''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html &lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
= OWS Clients =&lt;br /&gt;
== Desktop GIS==&lt;br /&gt;
== WebGIS ==&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33901</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33901"/>
		<updated>2009-01-11T09:36:04Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
[[HBUMNMapServer_ger '''Inhaltsverzeichnis''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html &lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
= OWS Clients =&lt;br /&gt;
== Desktop GIS==&lt;br /&gt;
== WebGIS ==&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33889</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33889"/>
		<updated>2009-01-10T19:55:02Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* OGC-Konformität */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~\cite{http:website:ogc}, kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html &lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
= OWS Clients =&lt;br /&gt;
== Desktop GIS==&lt;br /&gt;
== WebGIS ==&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=UMN_MapServer_Handbuch_Literaturverzeichnis&amp;diff=33881</id>
		<title>UMN MapServer Handbuch Literaturverzeichnis</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=UMN_MapServer_Handbuch_Literaturverzeichnis&amp;diff=33881"/>
		<updated>2009-01-10T19:36:45Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Diese Seite beinhaltet das Literaturverzeichnis im Latexformat. &lt;br /&gt;
 Bitte NICHT umformatieren und Einträge nach der Vorlage einfügen.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
% $Id: biblio.bib,v 1.32 2003/09/16 10:59:16 cvsuser Exp $&lt;br /&gt;
&lt;br /&gt;
@misc{faq:dclp,&lt;br /&gt;
title	={{FAQ der Newsgroup de.comp.lang.php}},&lt;br /&gt;
url	={http://www.dclp-faq.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{ftp:intevation:rpm,&lt;br /&gt;
title	={{MapServer 3.6 RPM-Pakete}},&lt;br /&gt;
url	={ftp://ftp.intevation.de/freegis/gnu-linux-i586/updates/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{ftp:gtopo30,&lt;br /&gt;
title	={{GTOPO 30 FTP Download}},&lt;br /&gt;
url	={ftp://edcftp.cr.usgs.edu/pub/data/gtopo30/global/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:homepage:xml,&lt;br /&gt;
title	={{Extensible Markup Language}},&lt;br /&gt;
url	={http://www.w3c.org/XML/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:homepage:mime,&lt;br /&gt;
title	={{Multipurpose Internet Mail Extensions}},&lt;br /&gt;
url	={http://www.mhonarc.org/\~ehood/MIME/MIME.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:arcsde,&lt;br /&gt;
title	={{ESRI Arc/SDE}},&lt;br /&gt;
url	={http://www.esri.com/software/arcinfo/arcsde/index.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:cert,&lt;br /&gt;
title	={{CERT der Universit�t Stuttgart}},&lt;br /&gt;
url	={http://cert.uni-stuttgart.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:cubewerx,&lt;br /&gt;
title	={{CubeWerx}},&lt;br /&gt;
url	={http://www.cubewerx.com/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:derfrosch,&lt;br /&gt;
title	={{Private Website von Thorsten Fischer}},&lt;br /&gt;
url	={http://www.derfrosch.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:dmsolutions,&lt;br /&gt;
title	={{DM Solutions}},&lt;br /&gt;
url	={http://www2.dmsolutions.ca/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:epsg,&lt;br /&gt;
title	={{European Petroleum Survey Group}},&lt;br /&gt;
url	={http://www.epsg.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:fsf,&lt;br /&gt;
title	={{Free Software Foundation}},&lt;br /&gt;
url	={http://www.fsf.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:freegisdata,&lt;br /&gt;
title	={{Freie Geo-Daten beim FreeGIS-Projekt}},&lt;br /&gt;
url	={http://www.freegis.org/geo-data.de.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:greenwood,&lt;br /&gt;
title	={{Greenwood Mapping}},&lt;br /&gt;
url		={http://www.greenwoodmap.com/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:gd,&lt;br /&gt;
title	={{GD Imaging Library}},&lt;br /&gt;
url		={http://www.boutell.com/gd/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:gdal,&lt;br /&gt;
title	={{Geospatial Data Abstraction Library}},&lt;br /&gt;
url		={http://www.remotesensing.org/gdal/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:imagemagick,&lt;br /&gt;
title	={{ImageMagick Grafikwerkzeuge}},&lt;br /&gt;
url		={http://www.imagemagick.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:freetype,&lt;br /&gt;
title	={{Freetype TrueType-Bibliothek}},&lt;br /&gt;
url		={http://www.freetype.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:libcurl,&lt;br /&gt;
title   ={{curl}},&lt;br /&gt;
url     ={http://curl.haxx.se/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:libproj,&lt;br /&gt;
title   ={{Projection library libproj.4}},&lt;br /&gt;
url     ={http://www.remotesensing.org/proj/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:geotiff,&lt;br /&gt;
title   ={{GeoTiff Library}},&lt;br /&gt;
url     ={http://www.remotesensing.org/geotiff/geotiff.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:libwww,&lt;br /&gt;
title   ={{HTTP-Bibliothek libwww}},&lt;br /&gt;
url     ={http://www.w3c.org/Library/Distribution.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:lmicmn,&lt;br /&gt;
title   ={{Land Management Information Center}},&lt;br /&gt;
url     ={http://www.lmic.state.mn.us/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:mapmedia,&lt;br /&gt;
title   ={{MapMedia Website}},&lt;br /&gt;
url     ={http://www.mapmedia.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:ming,&lt;br /&gt;
title   ={{Ming SWF library}},&lt;br /&gt;
url     ={http://www.opaque.net/ming/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:pdflib,&lt;br /&gt;
title   ={{pdflib PDF library}},&lt;br /&gt;
url     ={http://www.pdflib.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:selfhtml,&lt;br /&gt;
title   ={{SelfHTML}},&lt;br /&gt;
url     ={http://selfhtml.teamone.de/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:swig,&lt;br /&gt;
title   ={{Interface-Generator SWIG}},&lt;br /&gt;
url     ={http://www.swig.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:tiff,&lt;br /&gt;
title   ={{libtiff website}},&lt;br /&gt;
url     ={http://www.libtiff.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:mapserver,&lt;br /&gt;
title	={{MapServer Website}},&lt;br /&gt;
url	={http://mapserver.gis.umn.edu/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:mapservermailinglist,&lt;br /&gt;
title	={{MapServer-Users Mailinglistenarchiv}},&lt;br /&gt;
url	={http://mapserver.gis.umn.edu/cgi-bin/wilma/mapserver-users}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:ogc,&lt;br /&gt;
title	={{OpenGIS Consortium}},&lt;br /&gt;
url	={www.opengeospatial.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:ogcnetwork:impl,&lt;br /&gt;
title	={{Products Implementing OGC Specs or Interfaces}},&lt;br /&gt;
url	={http://www.opengis.org/testing/product/index.php?conf=1}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:oraclespatial,&lt;br /&gt;
title	={{Oracle Spatial}},&lt;br /&gt;
url	={http://otn.oracle.com/products/spatial/content.html}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:php,&lt;br /&gt;
title	={{PHP Website}},&lt;br /&gt;
url	={http://www.php.net/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:postgis,&lt;br /&gt;
title	={{PostGIS Website}},&lt;br /&gt;
url	={http://postgis.refractions.net/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:postgresql,&lt;br /&gt;
title	={{PostgreSQL Website}},&lt;br /&gt;
url	={http://www.postgresql.org/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:website:xerces,&lt;br /&gt;
title	={{Xerces XML-Parser}},&lt;br /&gt;
url	={http://xml.apache.org/xerces-c/}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{http:owssamples,&lt;br /&gt;
title	={{OWS sample schemas}},&lt;br /&gt;
url	={http://ogc.dmsolutions.ca/wfs-1.0-xsd.zip}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{man:7:regex,&lt;br /&gt;
title	={{POSIX {1003.2} section {2.8}; \texttt{man 7 regex}}},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:ogc100,&lt;br /&gt;
title	={{OpenGIS Web Map Server Interfaces Implementation Specification 1.0.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/00-028.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:ogc110,&lt;br /&gt;
title	={{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:ogc111,&lt;br /&gt;
title	={{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.1}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/01-068r3.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:mapcontext10,&lt;br /&gt;
title	={{OpenGIS Map Context Specification 1.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/03-036r2.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:gml,&lt;br /&gt;
title	={{OpenGIS Geography Markup Language Implementation Specification 2.1.2}},&lt;br /&gt;
url	={http://www.opengis.net/gml/02-069/GML2-12.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:wfs100,&lt;br /&gt;
title	={{OpenGIS Web Feature Service Implementation Specification 1.1.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/02-058.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:sld10,&lt;br /&gt;
title	={{OpenGIS Styled Layer Descriptor Implementation Specification 1.0}},&lt;br /&gt;
url	={http://www.opengis.org/techno/specs/02-070.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@misc{pdf:spec:shapefile,&lt;br /&gt;
title	={{ESRI Shapefile Technical Description}},&lt;br /&gt;
url	={http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@book{hartwig:2001:postgresql,&lt;br /&gt;
  author =       &amp;quot;Jens Hartwig&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;PostgreSQL - professionell und praxisnah&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;Addison-Wesley&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2001&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;3827318602&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@book{ray:2001:xml,&lt;br /&gt;
  author =       &amp;quot;{Erik T. Ray}&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;Learning {XML}: Creating Self-Describing Data&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;O'Reilly \&amp;amp; {Associates}&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2001&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;0-596-00046-4&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@book{theis:2000:php,&lt;br /&gt;
  author =       &amp;quot;Thomas Theis&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{PHP 4}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;Galileo Press&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2000&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;3-934358-63-2&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
@book{wall:1996:perl5,&lt;br /&gt;
  author =       &amp;quot;{{Wall}, {Christiansen}, {Schwartz}}&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{Programming Perl}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;O'Reilly \&amp;amp; Associates&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;1996&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;1-56592-149-6&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
@book{lutz:1999:python,&lt;br /&gt;
  author =       &amp;quot;{{Mark Lutz}, {David Ascher}}&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{Learning Python}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;O'Reilly \&amp;amp; Associates&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;1999&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;1-56592-464-9&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
@book{diercke:2002,&lt;br /&gt;
  author =       &amp;quot;Carl Diercke (Hrsg.)&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{Diercke Weltatlas (blau)}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;Westermann&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2002&amp;quot;,&lt;br /&gt;
  ISBN =         &amp;quot;3141006008&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
@book{bsi:gshb,&lt;br /&gt;
  author =       &amp;quot;{{Bundesamt f�r Sicherheit in der Informationstechnik}}&amp;quot;,&lt;br /&gt;
  title =        &amp;quot;{IT-Grund\-schutz\-hand\-buch}&amp;quot;,&lt;br /&gt;
  publisher =    &amp;quot;BSI&amp;quot;,&lt;br /&gt;
  year =         &amp;quot;2003&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
@manual{ rfc2606,&lt;br /&gt;
author	= &amp;quot;{{D. Eastlake 3rd} and {A. Panitz}}&amp;quot;,&lt;br /&gt;
title	= &amp;quot;{Reserved Top Level DNS Names}&amp;quot;,&lt;br /&gt;
note	= &amp;quot;{RFC 2606}&amp;quot;,&lt;br /&gt;
month	= jun,&lt;br /&gt;
year	= 1999,&lt;br /&gt;
url	= {ftp://ftp.isi.edu/in-notes/rfc2606.txt}}&lt;br /&gt;
% status: BEST CURRENT PRACTICE&lt;br /&gt;
% (Format: TXT=8008 bytes)&lt;br /&gt;
% (Also BCP0032)&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33880</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33880"/>
		<updated>2009-01-10T19:35:54Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Angabe von Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Angabe von Links ===&lt;br /&gt;
[http://localhost/mediawiki/index.php/Hb hb] - so erscheint der Link nachher im PDF Dokument, im Text erscheint aber nur der gewünschte Name&lt;br /&gt;
&lt;br /&gt;
Das OGC Open Geospatial Consortium (http://ogc.org) ...&lt;br /&gt;
&lt;br /&gt;
Die OSGeo (http://osgeo.org) ist ....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium]~[[http:website:ogc]], kurz OGC, ist ein internationaler&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
; Codeblock&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   ...&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
; Bild mit Bildunterschrift &lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|Bildunterschrift]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Tabelle&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Verweis für das Index&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fußzeile==&lt;br /&gt;
\footnote{dies ist eine fussnote}&lt;br /&gt;
&lt;br /&gt;
== Literaturverweis==&lt;br /&gt;
* Angaben für das Literaturverzeichnis sind auf der Seite [[UMN MapServer Handbuch Literaturverzeichnis]] einzutragen!&lt;br /&gt;
* Anschließend kann der Kürzel im Kapitel wie folgt angegeben werden:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;~[[pdf:spec:ogc100]]&amp;lt;/nowiki&amp;gt; -- Angabe des Kürzels im Literaturverzeichnis&lt;br /&gt;
&lt;br /&gt;
;Beispiel&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
blablabla Standards 1.0.0~[[pdf:spec:ogc100]]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kürzel ist &lt;br /&gt;
 @misc{pdf:spec:ogc110,&lt;br /&gt;
 title	=&amp;lt;nowiki&amp;gt;{{OpenGIS Web Map Server Interfaces Implementation Specification 1.1.0}},&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 url	={http://www.opengis.org/techno/specs/01-047r2.pdf}&lt;br /&gt;
&lt;br /&gt;
Nachher im PDF erscheint dann&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;blablabla Standards 1.0.0 [32]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33863</id>
		<title>Vorlage UMN MapServer Handbuch Kapitel</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Vorlage_UMN_MapServer_Handbuch_Kapitel&amp;diff=33863"/>
		<updated>2009-01-10T18:35:26Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Kapitelname */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Kapitelname=&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
== Unterkapitel==&lt;br /&gt;
Text&lt;br /&gt;
&lt;br /&gt;
=== Unterunterkapitel ===&lt;br /&gt;
noch mehr text&lt;br /&gt;
&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
* liste&lt;br /&gt;
&lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
# Nummerierte Liste &lt;br /&gt;
&lt;br /&gt;
; Codeblock&lt;br /&gt;
Der Code in der Mapdatei sollte eingerückt sein. Reihenfolge der Parameter sollte grob abgesprochen werden.&lt;br /&gt;
 MAP&lt;br /&gt;
  MAXSIZE&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  &lt;br /&gt;
  LAYER&lt;br /&gt;
   STATUS&lt;br /&gt;
   ...&lt;br /&gt;
  END&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
; Bild mit Bildunterschrift &lt;br /&gt;
[[Image:OSGeo.png|thumb|110px|Bildunterschrift]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Tabelle&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
| spalte1&lt;br /&gt;
| SPALTE2&lt;br /&gt;
|-&lt;br /&gt;
| zeile2 spalte 1&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Verweis für das Index&lt;br /&gt;
\index{Index1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33851</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33851"/>
		<updated>2009-01-10T18:00:51Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Wie macht man das? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium], kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 18:00, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html &lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
= OWS Clients =&lt;br /&gt;
== Desktop GIS==&lt;br /&gt;
== WebGIS ==&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33850</id>
		<title>HBUMNMapServer ger Capter 3</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger_Capter_3&amp;diff=33850"/>
		<updated>2009-01-10T17:59:21Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* Web Mapping Server (WMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[User:Astrid Emde]] (SLD, WMC, Filter Encoding, OWS Clients)&amp;lt;br&amp;gt;&lt;br /&gt;
[[User:jtmapmedia | Jörg Thomsen]] (OGC-Konformität, Warum macht man das?, Wie macht man das? )&lt;br /&gt;
&lt;br /&gt;
= OGC-Konformität =&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:52, 10 January 2009 (UTC)&lt;br /&gt;
(1)\index{OGC}&lt;br /&gt;
&lt;br /&gt;
Das [http://www.opengeospatial.org/ Open Geospatial Consortium], kurz OGC, ist ein internationaler Zusammenschluß von '368 Unternehmen, Regierungsorganisationen und Universitäten' (Eigendarstellung auf der Website, die Zahl ändert sich beinahe wöchentlich). Ziel des OGC ist es, gemeinsame Standards (Protokolle, Formate etc.) für Austausch, Verarbeitung und Speicherung von Geodaten zu erarbeiten.&lt;br /&gt;
&lt;br /&gt;
Die Standards, die uns bei der Erstellung von OGC-konformen MapServern im Internet interessieren können, sind vielfältig. Für den MapServer sind die folgenden Standards relevant bzw. implementiert:&lt;br /&gt;
   &lt;br /&gt;
* OGC Web Map Service Specification (WMS), für den Transfer von Rasterkarten und eventuelle Anfragen auf diese Daten,&lt;br /&gt;
* OGC Web Feature Service Specification (WFS), was das gleiche für Vektordaten und eventuelle Anfragen auf diese Daten ist.&lt;br /&gt;
* OGC Web Coverage Service Specification (WCS), regelt den Zugriff auf hochaufgelöste Rasterdaten wie Luft- und Satellitenbilder und deren Bereitstellung.&lt;br /&gt;
* OGC Sensor Observation Service (SOS), der den Austausch von Sensordaten, wie z.B. Wasserpegel oder Temperaturmessungen spezifiziert.&lt;br /&gt;
* Map Context Specification, ermöglicht das Speichern und Laden von WMS-Zuständen wie Zoomstufe, sichtbare Layer usw..&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werfen wir auch noch einen raschen Blick auf&lt;br /&gt;
&lt;br /&gt;
* OGC Filter Encoding (FE), damit können Geodaten, beispielsweise für Klassifizierungen, gefilter werden.&lt;br /&gt;
* OGC Styled Layer Descriptors (SLD), eine Spezifikation, die es ermöglicht die Kartengestaltung eines entfernten WMS zu beeinflussen.&lt;br /&gt;
&lt;br /&gt;
Die Website des OGC ist unter~[[http:website:ogc]] zu erreichen. Zu allen genannten Diensten, und zu vielen weiteren, finden Sie dort auch die Spezifikationen als PDF-Dateien. Sehen Sie sie sich ruhig einmal an. Nachdem Sie die ersten 20 bis 30 Seiten überblättert haben, finden Sie vor dem Anhang die interessanten Informationen auf meist wenigen Seiten zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
=Warum macht man das?=&lt;br /&gt;
--[[User:Jtmapmedia|Jtmapmedia]] 13:56, 10 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
Eine berechtigte Frage ist natürlich, warum man diese Funktionalität überhaupt haben wollen könnte. Die Antworten sind vielfältig. Hier einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
\subsubsection* {'''Kein Zugang zu den Originaldaten'''}&lt;br /&gt;
&lt;br /&gt;
Die wenigsten Besitzer von Geodaten rücken diese umsonst, oder überhaupt heraus. Manche sind allerdings durchaus gewillt, Karten auszuliefern; ihre Originaldaten kommen dabei nicht an die Öffentlichkeit. Durch die Bereitstellung von Karten nach den Kriterien des WMS sind darüberhinaus nicht nur Sie, sondern auch andere in der Lage, Karten aus der 'schwierigen Quelle' zu beziehen. Die Existenz eines Standards kann also schon zur Verbreitung von Kartenmaterial beitragen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Lastenverteilung'''}&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie bei Datenbankanbindungen -- siehe auch Kapitel~\ref{text:database} -- kann beispielweise ein WMS-konformes zur Verteilung von Rechenlast beitragen, indem einzelne Layer der Karte einfach auf verschiedene Rechner verteilt werden.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Herstellerunabhängigkeit'''}&lt;br /&gt;
&lt;br /&gt;
Durch ein standardisiertes Kommunikationsprotokoll sind Sie in der Lage, sich den Hersteller Ihrer Software auszusuchen. Umgekehrt bedeutet das auch, dass Sie nicht auf die Software eines bestimmten Herstellers angewiesen sind, wenn beispielsweise auf einen WMS-konformen Server zugegriffen werden soll. Die Wahl der Software kann also eher an anderen Kriterien (z.B. dem Preis) ausgerichtet werden. Heutzutage gibt es eine große Zahl OGC-konformer Programme, die sich nahezu beliebig miteinander verknüpfen lassen, so kann eine als WMS konfigurierter UMN MapServer seine Karte problemlos an verschiedene Klienten sowohl im Browser (z.N. Mapbender, OpanLayers) als auch auf dem Desktop (z.B. Quantum GIS, gvSIG) ausliefern und einen wichtigen Teil zur Geodateninfrastruktur beitragen.&lt;br /&gt;
&lt;br /&gt;
Auf der Website des OGC finden Sie eine Liste von Herstellern und Produkten~[[http:website:ogcnetwork:impl]] und eine Beschreibung, welche Standards in welcher Version von ihnen unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
\subsection*{'''Existenz von Evaluationskriterien'''}&lt;br /&gt;
&lt;br /&gt;
Häufig steht man vor der Frage, welches Produkt man für einen besonderen Zweck einsetzen soll. Das richtige Vorgehen ist natürlich, sich klarzumachen, welche Eigenschaften und Möglichkeiten die Software bieten soll, und anhand einer daraus hervorgehenden Liste kann man dann verschiedene Produkte evaluieren.&lt;br /&gt;
&lt;br /&gt;
Solch ein Evaluationsvorgang kann zeitlich und finanziell sehr aufwändig sein. Weithin anerkannte Standards helfen dabei, Entscheidungen anhand fertig vorliegender Kriterienkataloge zu treffen.&lt;br /&gt;
&lt;br /&gt;
= Wie macht man das? =&lt;br /&gt;
&lt;br /&gt;
Eine UMN MapServer-Anwendung OGC-konform zu gestalten ist keine Hexerei, Sie benötigen nicht einmal eine Erweiterung und müssen auch nichts neu kompilieren - es sind lediglich einige Erweiterungen im Mapfile notwendig. Bevor wir uns aber wieder dem Mapfile zuwenden, ein paar Sätze das grundsätzliche Verständnis der Funktionsweise von OGC-Diensten fördern.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf eines WMS-Servers erfolgt ganz ähnlich dem Aufruf des UMN MapServers, nämlich über einen URL mit den gewünschten Parametern, Sie werden im Folgenden bemerken, dass auch andere Aufrufe, wie WFS oder WCS, dem gleichen Muster folgen. Die Benennung der Parameter, ihr Verhalten und ihre Wirkung unterscheiden sich jedoch mehr oder weniger stark von dem, was Sie bisher von ihrem MapServer gewohnt sind.&lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich einmal einen Aufruf für eine Karte als Beispiel an. Um die Generierung solcher URLs müssen Sie sich im Detail nicht kümmern; wenn Sie einen Server betreiben, dann sowieso nicht, weil der Aufrufende die URLs kennen muss, und nicht Sie; und wenn Sie MapServer als Client betreiben, dann müssen Sie zwar einige Angaben im Mapfile zwingend machen, aber alle dynamischen Parameter werden von MapServer aufgefüllt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{'''Hinweis'''}&amp;lt;br&amp;gt;&lt;br /&gt;
In der Version 4.x war MapServer sehr tolerant, einige würden sagen nicht voll OGC-konform, weil er nicht alle Aufrufparameter verlangte, die die Spezifikation vorschreibt. Wenn Sie beim Aufruf eines WMS ab UMN Version einen laut Spezifikation erforderlichen Parameter weglassen, wird das nun mit einer Fehlermeldung quittiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun aber ein Beispiel für einen WMS-konformen URL des MapServers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt; Beispielaufruf dem aktuellen OSM/Hamburg-Beispiel anpassen.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? SERVICE=WMS&lt;br /&gt;
     &amp;amp; VERSION=1.1.1&lt;br /&gt;
     &amp;amp; REQUEST=GetMap&lt;br /&gt;
     &amp;amp; FORMAT=image/png&lt;br /&gt;
     &amp;amp; LAYERS=gruenflaechen,fluesse,bebauung&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; STYLES,,,&lt;br /&gt;
  #hier enden die Pflichtparameter, Auftritt zweier optionaler Parameter:&lt;br /&gt;
     &amp;amp; TRANSPARENT=TRUE&lt;br /&gt;
     &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sie werden sich jetzt fragen, wo denn der Hinweis auf das Mapfile geblieben ist, den Sie bisher immer mit angeben mussten. Ein Parameter ''map''  ist in der WMS-Spezifikation allerdings nirgends erwähnt. Wie man sich dieses Parameters entledigen kann, erfahren Sie weiter unten auf Seite~\pageref{text:wms:mapfilename}.&lt;br /&gt;
&lt;br /&gt;
Der erste Parameter ''SERVICE'' gibt an, welche Spezifikation genutzt werden soll. Wir möchten eine Karte im PNG-Format abrufen, die im Browser angezeigt werden soll, also benutzen wir den Web Map Service.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird mit ''VERSION''  angegeben, in welcher WMS-Version man die Kommunikation wünscht. Laut Spezifikation soll dabei im Hintergrund eine Aushandlung der Version stattfinden, falls eine Seite eine angegebene Version nicht kennt; Client und Server handeln sich dann gegenseitig herunter, bis sie auf eine Version treffen, die sie beide verstehen.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''REQUEST''  gibt die Art der Anfrage an. Die in MapServer implementierten Modi sind bereits weiter oben in Abschnitt~2 genannt worden. Beachten Sie, dass die Schreibweise von ''GetMap''  bezüglich der Klein- und Großbuchstaben irrelevant sein sollte. Das gleiche gilt auch für die Namen der Parameter wie ''VERSION'', ''REQUEST''  und so weiter. Die Großschreibung erfolgt hier nur wegen der besseren Lesbarkeit. Es gibt aber auch Dienste, die diese Schreibweise ewarten.&lt;br /&gt;
&lt;br /&gt;
Die Angabe ''FORMAT''  wird als sogenannter ''MIME type''  gemacht, eine standardisierte Notation für die Art von über das Netz geschickten Daten. Bildformat folgen prinzipiell dem Muster ''image/''  plus angehängtem Namen des Bildformats, also zum Beispiel ''image/jpeg''  für JPEG-Bilder. Mehr über MIME-Typen inklusive Links zu den diversen zuständigen RFCs finden Sie auf~[[http:homepage:mime]].&lt;br /&gt;
&lt;br /&gt;
Es folgen die Layer, die angezeigt werden sollen. Anders als beim 'klassischen' MapServer, wo die Layernamen einzeln jeweils mit ''layer'' notiert werden, wird bei WMS-konformen Servern eine Liste der gewünschten Layer benötigt, wobei die einzelnen Layer durch Kommata voneinander getrennt werden. Dabei ist die Reihenfolge wichtig: der zuerst genannte Layer wird als erste Ebene in die Karte gezeichnet, liegt also zuunterst. Die im Mapfile festgelegte Reihenfolge spielt keine Rolle mehr.&lt;br /&gt;
&lt;br /&gt;
Mit ''SRS''  wird das ''spatial reference system''  definiert, also die gewünschte Projektion angegeben. WMS verlangt EPSG-Codes für die Notierung der Projektion, wobei das Schlüsselwort ''EPSG''  und die dazugehörige Zahl durch einen Doppelpunkt voneinander getrennt werden. Mehr zu diesem Thema, das oft zu schwer identifizierbaren Fehlern führt und einige Nerven kosten kann, finden Sie im Anhang &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME:&amp;lt;/span&amp;gt; Verweis auf den noch zu erstellenden Anhang.&lt;br /&gt;
&lt;br /&gt;
''BBOX'': Ähnlich wie die anzuzeigenden Kartenebenen werden auch die gewünschten Extents durch mehrere Werte angefordert, die in einer Liste durch Kommata voneinander getrennt sind. Achten Sie immer darauf, dass die Werte der BBOX mit dem SRS korrespondieren.&lt;br /&gt;
&lt;br /&gt;
''WIDTH''  und ''HEIGHT''  geben die Größe in Pixeln vor, die die fertige Karte haben soll. Beachten Sie, dass diese Werte mit der BBOX korrelieren müssen; eine quadratische BBOX in Verbindung mit ungleicher Höhe und Breite führt zu einer Verzerrung des Kartenbildes.&lt;br /&gt;
&lt;br /&gt;
Der Parameter ''STYLES'' gibt für jeden Layer eine Darstellungsoption an (sofern der Provider des Service dieses mit den sog. ''Named Styles'' vorbereitet hat). Sie müssen keine Styles angeben, der Parameter im GetMap-Aufruf ist jedoch Pflicht.&lt;br /&gt;
&lt;br /&gt;
Mit ''TRANSPARENT'' wird die Hintergrundfarbe der Karte transparent geschaltet. Das will man offensichtlich dann haben, wenn man unter dieser Kartenebene noch andere Layer anzeigen möchte.&lt;br /&gt;
&lt;br /&gt;
Schließlich und endlich wird dem WMS im obigen Beispiel mitgeteilt in welcher Form Fehlermeldungen ausgegeben werden, in unserem Fall soll die Fehlermeldung in resultierende Rasterbild gerendert werden. Wenn Sie eine XML-formatierte Fehlermeldung bevorzugen verwenden Sie ''application/vnd.ogc.se_xml''.&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis dieses Aufrufes ist also eine 500 mal 500 Pixel große, auf EPSG-Code &amp;lt;span style=&amp;quot;background-color:yellow;&amp;quot;&amp;gt;FIXME: &amp;lt;/span&amp;gt;4326&amp;lt;/span&amp;gt; projizierte Karte im PNG-Format mit den angegebenen Extents und transparentem Hintergrund. Der aufrufende URL dieser Karte kann entweder so bei Ihnen im Webbrowser erscheinen, oder aber von MapServer dynamisch für die Anzeige als Rasterlayer generiert worden sein.&lt;br /&gt;
&lt;br /&gt;
Als nächstes schauen wir uns an, wie aus einem bestehenden Mapfile eines gemacht werden kann, das für WMS-konformes Verhalten nach außen sorgt.&lt;br /&gt;
&lt;br /&gt;
=Web Map Service (WMS)=&lt;br /&gt;
&lt;br /&gt;
Von besonderem Interesse ist die ''OpenGIS Web Map Server Interfaces Implementation Specification'' , im folgenden kurz WMS-Standard genannt. Diese Spezifikation liegt inzwischen in der Version 1.1.1~[[pdf:spec:ogc111]] vor. MapServer unterstützt aber auch die zurückliegenden Standards 1.0.0~[[pdf:spec:ogc100]] und 1.1.0~[[pdf:spec:ogc110]].&lt;br /&gt;
&lt;br /&gt;
Sinn der WMS-Spezifikation ist es, ein offenes, definiertes Interface sowohl für Clients als auch für Server zur Verfügung zu stellen, die Karten und Daten über diese Karten miteinander austauschen wollen. Zur Kommunikation zwischen den Servern und Clients wird das HTTP-Protokoll verwendet. Über das Protokoll werden Daten im XML-Format übertragen\footnote{Für Exceptions sind auch andere Formate möglich.}. Parsen und weiterverarbeiten läßt sich XML in fast jeder bekannten Programmiersprache. Auf diese Weise ist man nicht an Webapplikationen gebunden, wenn man ein Programm entwickeln möchte, das mit einem WMS-Mapserver 'redet'. Die dazugehörige DTD\footnote{Die sogenannten ''document type definitions''  dienen der Validierung von Dokumenten. Sie können ein DTD also benutzen, um zu testen, um ein Dokument einem bestimmten Rahmen an Vorgaben genügt.} ist vom OGC zu beziehen und in der Spezifikation beschrieben. Gedruckt lernen Sie mehr über XML durch die Lektüre von~[[ray:2001:xml]], online finden Sie die Spezifikationen unter~[[http:homepage:xml]].&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Hinweis}&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle bei der Verwendung von WMS spielt die Umprojizierung von Daten. Da bei WMS Rasterdaten zum Einsatz kommen\footnote{Die Datenquelle für den Server kann natürlich ein Vektorformat haben. Produziert werden aber ausschließlich Rasterdaten, wie wir es bisher immer beim MapServer gesehen haben.}, und MapServer Rasterdaten ausschließlich unter Zuhilfenahme der Bibliothek GDAL umprojizieren kann, sollten Sie MapServer mit der Unterstützung für GDAL kompiliert haben.&lt;br /&gt;
&lt;br /&gt;
==Servermodi==(2)&lt;br /&gt;
&lt;br /&gt;
Die genannten Spezifikation in ihrer letzten Version verlangt: es ''müssen''  zwei Arten von Anfragen implementiert sein, zwei weitere sind optional und ''können''  implementiert sein. Die beiden folgenden Anfragen (weiterhin auch ''Requests''  genannt) müssen vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= : Diese Anfrage muss ein XML-Dokument zurückliefern, das die Fähigkeiten des Mapservers beschreibt.  &lt;br /&gt;
*=getMap= : Auf diese Anfrage wird eine Karte als Rasterbild zurückgeliefert.  &lt;br /&gt;
&lt;br /&gt;
Entsprechend der Anforderung sind diese beiden Anfragen auch im MapServer implementiert.&lt;br /&gt;
&lt;br /&gt;
Die beiden Fähigkeiten, die implementiert sein ''können'' , sind:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getFeatureInfo= : auf diese Anfrage liefert der Mapserver Informationen über einen bestimmten Punkt in einer Karte zurück. Diese Informationen können entweder in einer reinen Textdarstellung oder in GML (einem XML-Format) zurückgegeben werden.  &lt;br /&gt;
*=describeLayer=  liefert ein XML-Dokument mit detaillierten Informationen über einen Layer zurück. Dieser Modus wäre für einen SLD\footnote{Styled Layer Descriptor}-konformen MapServer interessant, aber dieser Standard hat bisher noch keine Umsetzung im MapServer erfahren.  &lt;br /&gt;
&lt;br /&gt;
Das einzige Feature, das im MapServer zurzeit nicht implementiert ist, ist demnach =describeLayer= . Es gibt noch einige andere Modi; mehr dazu in Abschnitt~7&lt;br /&gt;
&lt;br /&gt;
==WMS-Metadaten im Mapfile==\index{Metadaten}&lt;br /&gt;
&lt;br /&gt;
Zuallererst benötigt ihr Mapfile einen Namen. Im Header muß also der Parameter =NAME=  definiert sein.&lt;br /&gt;
&lt;br /&gt;
Einen 'minimalen' WMS-Server erhalten Sie zum einen durch Metadaten in der =WEB= -Sektion des Mapfiles, zum anderen durch Metadaten in den einzelnen Layern. Einige davon sind zwingend erforderlich, andere optional. Wie die Notation von Metadaten im Mapfile generell erfolgt, haben Sie bereits in Abschnitt~\ref{text:mapfile:web:meta} erfahren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Ein WMS-Server&amp;quot;&lt;br /&gt;
    &amp;quot;wms_onlineresource&amp;quot; \&lt;br /&gt;
       &amp;quot;http://www.example.com/cgi-bin/mapserv?map=mapfile.map&amp;amp;&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31464 EPSG:4326&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für die Karte, dieser muß angegeben werden. Der zweite Parameter gibt an, unter welchem URL der Server aufzurufen ist. &lt;br /&gt;
&lt;br /&gt;
Beachten Sie dabei, das =\&amp;amp;=  anzugeben, bzw. ein Fragezeichen, wenn Sie nach dem eigentlichen CGI-Programm keinen Parameter zu stehen haben.&lt;br /&gt;
&lt;br /&gt;
=wms_srs=  steht für die Projektion, in der die Karten angeboten werden können. Die Spezifikation schreibt vor, dass hier immer mindestens EPSG-Code 4326 angeboten werden muß. Mehrere Projektionen werden einfach durch Leerzeichen voneinander getrennt. Mehr zu EPSG und Projektionen im allgemeinen haben Sie schon in Abschnitt~\ref{text:map:projections} erfahren.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen =wms_srs=  nicht, wenn Sie für die Karte einen Projektionsblock mit EPSG-Angabe definiert haben; die =WEB= -Sektion 'erbt' dann diese Projektion als Vorgabe.&lt;br /&gt;
&lt;br /&gt;
Was machen Sie, wenn Ihre Daten allesamt in einer Projektion vorliegen, für die es keinen EPSG-Code gibt? Dann können Sie einen =PROJECTION= -Block definieren, der Parameter für die Projektionsbibliothek ''proj.4''  enthält (das Beispiel stammt direkt aus der MapServer-Dokumentation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECTION&lt;br /&gt;
  &amp;quot;proj=lcc&amp;quot;&lt;br /&gt;
  &amp;quot;ellps=GRS80&amp;quot;&lt;br /&gt;
  &amp;quot;lat_0=49&amp;quot;&lt;br /&gt;
  &amp;quot;lon_0=-95&amp;quot;&lt;br /&gt;
  &amp;quot;lat_1=49&amp;quot;&lt;br /&gt;
  &amp;quot;lat_2=77&amp;quot;&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn Sie nun EPSG-Codes in =wms_srs=  nach außen anbieten, werden die Daten automatisch umprojiziert.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Notwendige Metadaten in den Layern}&lt;br /&gt;
&lt;br /&gt;
Des weiteren müssen nun in jedem Layer zusätzliche Angaben nach folgendem Muster gemacht werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;einlayer&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot; &amp;quot;Titel fuer den Layer&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;  &amp;quot;EPSG:31494&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daneben muß auch in jedem Layer ein Name gesetzt und eine Projektion definiert sein. Als Standardvorgabe erbt jeder Layer die Projektionen aus der =WEB= -Sektion, sodass sie nicht noch einmal neu notiert werden müssen.&lt;br /&gt;
&lt;br /&gt;
Sie benötigen natürlich immer noch eine Projektionsangabe im Layer in Form eines =PROJECTION= -Blocks, um zu definieren, in welcher Projektion die Datenquelle vorliegt, damit MapServer im Zweifelsfall korrekt projizieren kann. Das gilt natürlich insbesondere dann, wenn Sie mehr als nur eine Projektion anbieten wollen.&lt;br /&gt;
&lt;br /&gt;
MapServer geht im übrigen davon aus, dass sie tatsächlich alle Layer im Mapfile nach außen zur Verfügung stellen wollen. Layer, die sie ''nicht''  nach außen geben wollen, haben also in diesem Mapfile nichts verloren. Es gibt bisher keinen Mechanismus, mit dem man einzelne Layer (oder alle) in einem Mapfile von der Auslieferung per WMS ausschließen kann.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in der Web-Sektion}&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind alle Metadaten beschrieben, die Sie für einen WMS-konformen Server in der =WEB= -Sektion des Mapfiles notieren können. Alle Angaben sind optional, falls nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Eine elaborierte Zusammenfassung dessen, was der Server soll und ist.    &lt;br /&gt;
*=wms_accessconstraints=  Gibt Zugangsbeschränkungen für den MapServer an.    Beachten Sie bitte, dass ein Eintrag hier lediglich eine Absichtserklärung ist. Ein Text wie 'Dieser Server darf nur im Intranet unserer Firma verwendet werden' ist natürlich schön und gut, aber die entsprechenden Zugriffsbeschränkungen sind selbtsverständlich nur durch die entsprechende Konfiguration der Systeme zu erreichen.    &lt;br /&gt;
*=wms_addresstype=  Art der Adresse. Für dieses und die folgenden fünf Felder gilt, dass bei Angabe eines der Felder auch die anderen fünf mit Inhalt gefüllt werden müssen.    &lt;br /&gt;
*=wms_address=  Die Adresse.    &lt;br /&gt;
*=wms_city=  Adressbestandteil: Stadt    &lt;br /&gt;
*=wms_country=  Adressbestandteil: Land    &lt;br /&gt;
*=wms_postcode=  Adressbestandteil: Postleitzahl    &lt;br /&gt;
*=wms_stateorprovince=  Adressbestandteil: Staat oder Provinz    &lt;br /&gt;
*=wms_contactelectronicmailaddress=  Emailadresse einer Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactoraganization=  Organisation der Kontaktperson    &lt;br /&gt;
*=wms_contactperson=  Name der Kontaktperson für diesen Server    &lt;br /&gt;
*=wms_contactposition=  Position der Kontaktperson innerhalb ihrer Organisation    &lt;br /&gt;
*=wms_contactvoicetelephone=  Telefonnummer der Kontaktperson    &lt;br /&gt;
*=wms_fees=  Art und Umfang der Gebühren, die für die Nutzung dieses Servers fällig werden.    Genau wie bei =wms_accessconstraints=  ist dies lediglich eine Absichtserklärung; wenn Sie Gebühren für die Verwendung des Servers erheben möchten, müssen Sie die Zugriffskontrolle durch eine geeignete Systemkonfiguration und ein passendes Geschäftsmodell herbeiführen.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf den Server zutreffen. Dieser Parameter ist mit dem Blick darauf geschaffen worden, dass es eines Tages in einer eigens dafür geschaffenen Datenbank eine Sammlung von Capabilities-Dokumenten geben könnte, die dann die Schlüsselwortlisten durchsuchen kann. Bisher gibt es keine solche Datenbank. Es sind auch keine Standardschlüsselwörter definiert.    &lt;br /&gt;
*=wms_onlineresource=  Der URL, mit dem der Server aufgerufen wird. Beinhaltet beim UMN MapServer meistens:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  http://www.example.com/cgi-bin/mapserv?  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    und gegebenenfalls daran angehängt noch das Mapfile. Wenn ein Mapfile über =map==  angehangen wird, darf nicht das abschließende =\&amp;amp;=  vergessen werden! Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
*=wms_resx=  Horizontale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_resy=  Vertikale Auflösung der Karte in Pixeln.    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann. Dieser Parameter mit mindestens einer Projektion ist zwingend notwendig.    &lt;br /&gt;
*=wms_title=  Titel der Karte. Dieser Parameter ist zwingend notwendig.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Metadaten in den einzelnen Layern}&lt;br /&gt;
&lt;br /&gt;
Im folgenden die Metadaten, die Sie für einen WMS-konformen MapServer in den einzelnen Layern im Mapfile definieren können. Alle Parameter sind optional, sofern nicht anders angegeben.&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
*=wms_abstract=  Elaborierte Zusammenfassung dessen, was dieser Layer soll und ist.    &lt;br /&gt;
*=wms_extent=  Die Bounding Box des Layers.    &lt;br /&gt;
*=wms_keywordlist=  Eine Liste von Schlüsselworten, die auf diesen Server zutreffen.    % &lt;br /&gt;
*=wms_opaque=  FIXME: was ist das?    &lt;br /&gt;
*=wms_srs=  Projektion(en), in der die Karte angeboten werden kann.    &lt;br /&gt;
*=wms_title=  Titel des Layers. Dieser Parameter ist zwingend erforderlich.    &lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile als Parameter}(4)&lt;br /&gt;
&lt;br /&gt;
Der Name des Mapfiles in der URL-Zeile ist nicht Bestandteil eines OGC-konformen Aufrufs des Mapservers. Unter Sicherheitsaspekten kann es darüber hinaus eventuell nicht angebracht sein, dem Client etwas über die Verzeichnisstruktur des Server-Systems zu verraten.&lt;br /&gt;
&lt;br /&gt;
Im Moment gibt es zwei verschiedene Wege, den Ort des Mapfiles vor Außenstehenden zu verbergen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*''Verwenden eines Wrapper-Skripts'' : Anstatt des CGI-Binaries wird ein kleines Skript aufgerufen, das die Umgebungsvariable = MS_MAPFILE = setzt und dann seinerseits das CGI-Programm aufruft. Ganz primitiv könnte ein solches Skript für die Shell =bash=  etwa wie folgt aussehen:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  #!/bin/sh  MS_MAPFILE=/usr/local/there/is/my.map  export MS_MAPFILE  /usr/local/httpd/cgi-bin/mapserv  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Beachten Sie bitte, dass dieses Beispiel nur für Unix-Systeme funktioniert, auf denen die Shell =bash=  installiert ist. Für andere Shells kann die Notation abweichen.    &lt;br /&gt;
*''Webserver-Konfiguration'' : Der Webserver ist unter Umständen in der Lage, für bestimmte aufgerufene URLs spezifische Umgebungsvariablen zu setzen. Im Apache sähe ein Eintrag in der Datei ''httpd.conf''  dann beispielsweise folgendermaßen aus (wegen der Zeilenlänge für das Drucklayout umgebrochen, muß in der Konfigurationsdatei eine Zeile sein):    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  SetEnvIf Request_URI &amp;quot;/cgi-bin/mapserv&amp;quot; \    MS_MAPFILE=/usr/local/there/is/my.map  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Dieser Eintrag funktioniert nur im Apache und kann für andere Webserver vollkommen anders aussehen. Konsultieren Sie Ihre Dokumentation.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getCapabilities}(5)&lt;br /&gt;
&lt;br /&gt;
Nachdem man zufrieden mit seinem Setup ist, möchte man es natürlich ausprobieren. Dazu ruft man als erstes das ''Capabilities'' -Dokument ab:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://server/cgi-bin/mapserv?VERSION=1.1.0&amp;amp;REQUEST=getCapabilities \&lt;br /&gt;
     &amp;amp;map=mapfile.map &lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei müssen Sie bei =getCapabilities=  nicht auf Groß- oder Kleinbuchstaben achten. Ebensowenig bei allen anderen Parametern, die vor einem Gleichheitszeichen stehen.&lt;br /&gt;
&lt;br /&gt;
Der Webserver sollte Ihnen nun eine Datei des Typs =application/vnd.ogc.wms_xml=  zurückliefern. Diese Textdatei können Sie abspeichern und in einem beliebigen Texteditor öffnen. Eventuell ist Ihr Webbrowser auch von sich aus in der Lage, XML-Dateien automatisch in einem ansprechenden Layout darzustellen. &lt;br /&gt;
&lt;br /&gt;
Schauen Sie sich nun den Inhalt der Datei genau an. Wo immer Sie auf Zeilen treffen, die&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: ... --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
beinhalten, gilt es, etwas zu bereinigen. Beispielsweise erfahren Sie aus einer Warnung wie dieser:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;!-- WARNING: Mandatory metadata 'wms_title' was missing&lt;br /&gt;
     in this context --&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
dass Sie einen Meta-Tag für den Titel der entsprechenden Sektion vergessen haben.&lt;br /&gt;
&lt;br /&gt;
Sobald Sie keine Warnungen dieser Art mehr in Ihrem Capabilities-Dokument finden, ist ihr MapServer WMS-konform und voll einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Wenn die Capabilities wie erwartet geliefert werden, ist der nächste logische Schritt natürlich, sich eine Karte von Hand abzuholen. Dafür konstruieren Sie sich in Ihrem Webbrowser einen Aufruf, der etwa so aussieht, wie das Beispiel in Abschnitt~3. Dabei machen Sie sich dann auch gleich mit der Benennung der Parameter vertraut.&lt;br /&gt;
&lt;br /&gt;
Das beste was Ihnen passieren kann, ist natürlich, dass Sie gleich ihre gewünschte Karte bekommen. Dann sind Sie natürlich fertig. Sobald Sie jedoch Ihren ersten Fehler machen, müssen Sie sich mit Fehlermeldungen auseinandersetzen, den so genannten Exceptions.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==\index{Exceptions}\index{WMS!Exceptions}&lt;br /&gt;
&lt;br /&gt;
Exceptions sind Meldungen, die von einem WMS-konformen Mapserver im Fehlerfall ausgegeben werden müssen. Das entspricht in etwa dem Expcetions-Konzept diverser Programmiersprachen wie z.B. Java. Der Sinn ist es, dem aufrufenden Client -- sei es nun eine menschliche Person, sei es eine Software -- anhand des Typs und des Inhalts der Fehlermeldung eine Entscheidung über das weitere Vorgehen treffen zu können. Eine solche Art der Fehlerbehandlung verhindert natürlich unter anderem, dass ein Programm seine Durchführung im Fehlerfall einfach beendet.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie bei einem WMS-konformen Aufruf einen Fehler machen, indem Sie beispielsweise einen Parameternamen wie =REQUEST=  absichtlich falsch schreiben, wird Ihnen MapServer eine Datei in einem XML-Format zurückliefern:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_xml=  Ein WMS-konformer Mapserver muß mindestens diese Art der Vermittlung von Exceptions beherrschen. Solch eine Datei kann beispielsweise folgenden Inhalt haben:  &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  &amp;lt;?xml version='1.0' encoding=&amp;quot;ISO-8859-1&amp;quot; standalone=&amp;quot;no&amp;quot; ?&amp;gt;  &amp;lt;!DOCTYPE ServiceExceptionReport SYSTEM   &amp;quot;http://www.digitalearth.gov/wmt/xml/exception_1_1_0.dtd&amp;quot;&amp;gt;    &amp;lt;ServiceExceptionReport version=&amp;quot;1.1.0&amp;quot;&amp;gt;      &amp;lt;ServiceException&amp;gt;        msWMSDispatch(): WMS server error. Incomplete WMS        request: REQUEST parameter missing      &amp;lt;/ServiceException&amp;gt;    &amp;lt;/ServiceExceptionReport&amp;gt;  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
\begin{figure}&lt;br /&gt;
\begin{center}&lt;br /&gt;
\mmfig{0.6}{wms-exception-inimage}{Exception vom Typ application/vnd.ogc.se_inimage.}&lt;br /&gt;
\end{center}&lt;br /&gt;
\end{figure}&lt;br /&gt;
&lt;br /&gt;
Des weiteren kann ein Mapserver Exceptions in den folgenden MIME-Typen zur Verfügung stellen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=application/vnd.ogc.se_inimage=  Die Exception wird als Text in das auszuliefernde Bild eingefügt.  &lt;br /&gt;
*=application/vnd.ogc.se_blank=  Die Spezifikation geht von der Idee, dass ein leeres Bild etwas ist, dass man grundsätzlich nicht haben möchte, und somit nie bekommt. Daher kann ein 'leeres' Bild als Fehlermeldung angesehen werden. Als 'leeres' Bild ist ein Bild definiert, das ganz mit der Hintergrundfarbe der Karte ausgefüllt ist.  &lt;br /&gt;
&lt;br /&gt;
Im URL des Aufrufs wird die gewünschte Art der Exception mit dem Parameter =EXCEPTIONS=  notiert. Wollen Sie Exceptions also im Bild notiert haben, schreiben Sie in Ihrem URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
... &amp;amp; EXCEPTIONS=application/vnd.ogc.se_inimage &amp;amp; ...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass nur die XML-Variante implementiert sein muß. Wenn Sie von einem Server Exceptions im Bild verlangen, er aber nur XML kann, dann wird er XML liefern.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie außerdem, dass das Handling von Exceptions insbesondere bei Kaskaden von WMS-konformen Servern eine Rolle spielt. So kann es Ihnen passieren, dass Sie sich einen Layer von einem Server holen, der sich wiederum sein Bild von anderen entfernten Quellen heranholt, und von dort im Fehlerfall eine Exception in das Bild eingetragen bekommt. Dadurch haben Sie die Fehlermeldung dann natürlich auch im Bild zu stehen.&lt;br /&gt;
&lt;br /&gt;
===Hinweis===&lt;br /&gt;
&lt;br /&gt;
Viele Kartenanbieter tendieren dazu, ihre fertigen Karten mit Schriftzügen, Logos, Nordpfeilen, Wasserzeichen und so weiter auszustatten. Denken Sie immer daran, dass der Kunde, der Ihren Service wiederum als Datenquelle benutzt, eventuell auf die Idee kommt, die von Ihnen bezogene Karte umzuprojizieren! Das kann dann zu interessanten Effekten führen, wenn dann Dritte den Schriftzug mit der URL Ihrer Firmenwebsite quer über die ganze Karte gekrakelt bekommen. Entwickeln Sie im Vorhinein zusammen mit den Benutzern des Service ein Konzept, dass solche häßlichen Effekte verhindert.&lt;br /&gt;
&lt;br /&gt;
==getFeatureInfo==&lt;br /&gt;
&lt;br /&gt;
Sich Karten einfach nur anzusehen, ist selbstverständlich nur die Hälfte des Reizes eines WMS-konformen Servers. Man möchte selbstverständlich auch Queries auf die Daten durchführen können. Zu diesem Zweck gibt es den =REQUEST=  mit dem Namen =getFeatureInfo= .&lt;br /&gt;
&lt;br /&gt;
Zuerst einmal gilt es, Queries überhaupt erst einmal zuzulassen. Wie schon bei den 'klassischen' Queries (siehe Abschnitt~\ref{text:mapfile:queries}) kann man in MapServer eine Query nur auf einem Layer durchführen, der ein =TEMPLATE=  definiert.&lt;br /&gt;
&lt;br /&gt;
Wenn man das tut, und sich die ''capabilities''  anschaut, wird man für den Layer auf ein Attribut der folgenden Art treffen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;Layer queryable=&amp;quot;1&amp;quot; opaque=&amp;quot;0&amp;quot; cascaded=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert =1=  für =queryable=  zeigt im Gegensatz zum Wert =0=  an, dass Queries auf diesen Layer zulässig sind.&lt;br /&gt;
&lt;br /&gt;
Um einen Aufruf vom Typ =getFeatureInfo=  zu verstehen, betrachten wir einmal einen vollständigen URL für diesen Vorgang:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
     ? map=/usr/local/mapserv/mapfile.map&lt;br /&gt;
     &amp;amp; VERSION=1.1.0&lt;br /&gt;
     &amp;amp; REQUEST=getFeatureInfo&lt;br /&gt;
     &amp;amp; QUERY_LAYERS=gruenflaechen&lt;br /&gt;
     &amp;amp; SRS=EPSG:4326&lt;br /&gt;
     &amp;amp; BBOX=5.0,45.0,15.0,55.0&lt;br /&gt;
     &amp;amp; WIDTH=500&lt;br /&gt;
     &amp;amp; HEIGHT=500&lt;br /&gt;
     &amp;amp; X=250&lt;br /&gt;
     &amp;amp; Y=250&lt;br /&gt;
     &amp;amp; INFO_TYPE=text/plain&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Bestandteile sind dem Leser bereits bekannt: Version des Standards, Angabe der Projektion durch =SRS= . Dazu kommt, wenig überraschend, die Angabe des =REQUEST= .&lt;br /&gt;
&lt;br /&gt;
Da jetzt keine Darstellung mehr erfolgen sollen, werden keine =LAYERS=  mehr angegeben, sondern =QUERY_LAYERS= \footnote{Diese Unterscheidung ist offensichtlich eigentlich unnötig, da man die Funktion der Layerangabe ja eigentlich serverseitig aus dem =REQUEST=  schließen könnte.}. Um Ergebnisse zu liefern, muß jeder Layer in der Liste =QUERY_LAYERS=  das Attribut =queryable=  auf =1=  gesetzt haben -- siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zwingend sind darüberhinaus die Angabe der Extents des Bildes, das man befragen möchte (angegeben mit =BBOX= ), Breite und Höhe des Bildes sowie die X- und die Y-Koordinate des Punktes im Bild, der sich der Aufmerksamkeit des Users erfreut, beispielsweise durch einen Mausklick. Beachten Sie, dass es sich dabei um Bildkoordinaten handelt, es handelt sich also um Pixelwerte. Der Koordinatenursprung eines Bildes ist links oben.&lt;br /&gt;
&lt;br /&gt;
Am interessantesten ist natürlich der =INFO_TYPE= , der angibt, auf welche Weise die Queryergebnisse formatiert sein sollen. MapServer unterstützt die folgenden Formate:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=text/plain= , das Standardformat, falls Sie nichts anderes angegeben haben;  &lt;br /&gt;
*=text/html= , was ein wenig Vorbereitung erfordert, im wesentlichen aber wie Queries auf einem 'normalen' MapServer-CGI behandelt wird; und  &lt;br /&gt;
*=application/vnd.ogc.gml= , GML, eine XML-Repräsentation für Geodaten.  &lt;br /&gt;
&lt;br /&gt;
Betrachten wir die Formate im Detail:&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/plain}&lt;br /&gt;
&lt;br /&gt;
Dieser Ausgabetyp für getFeatureInfo ist die Voreinstellung für MapServer, falls Sie keinen anderen Ausgabentyp spezifizieren.&lt;br /&gt;
&lt;br /&gt;
Für ein Mapfile mit den Voreinstellungen des Itasca-Demos und einem fiktiven Anklickpunkt mit den Koordinaten 200/200 sieht die Ausgabe folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
GetFeatureInfo results:&lt;br /&gt;
&lt;br /&gt;
Layer 'countyboundary'&lt;br /&gt;
  Feature 26: &lt;br /&gt;
    AREA = '7577272785.15393'&lt;br /&gt;
    PERIMETER = '436617.07762'&lt;br /&gt;
    CTY_NAME = 'Itasca'&lt;br /&gt;
    COUN = '31'&lt;br /&gt;
    CTY_ABBR = 'ITAS'&lt;br /&gt;
    ISLAND = 'N'&lt;br /&gt;
    CTY_FIPS = '61'&lt;br /&gt;
    RECNO = '27'&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird der Name des Layers ausgegeben, die Nummer des Layers innerhalb des Shapefiles, und dann alle Attribute aus der =.dbf= -Datei der Datei. Wenn es mehrere Suchergebnisse gegeben hat, werden diese der Reihe nach dargestellt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{text/html}&lt;br /&gt;
&lt;br /&gt;
Mit diesem Ergebnistyp greift MapServer auf die HTML-Templates zurück, die Sie für Queries bereits in Kapitel~\ref{text:mapfile} kennengelernt haben. Das bedeutet, dass Sie ein HTML-Layout ganz nach Ihrem Geschmack gestalten können, und MapServer die entsprechenden Tags in eckigen Klammer wie gewohnt ersetzt.&lt;br /&gt;
&lt;br /&gt;
Dieser ''MIME type''  bietet jedoch noch die Möglichkeit für zusätzliche Tricksereien. Der Standard schreibt nämlich keinen ''MIME type''  zwingend vor, und ebensowenig gibt es ein vorgeschriebenes Verhalten für den Fall, dass ein bestimmter Typ nicht unterstützt wird. Das führt dazu, dass MapServer es sich vorbehält, beliebige Arten von Daten zurückzuliefern.&lt;br /&gt;
&lt;br /&gt;
Sie können ein =TEMPLATE=  definieren, das nicht gezwungenermaßen eine HTML-Seite sein muß. Reiner ASCII-Text wäre ebenso möglich, oder alle anderen Formate, in denen Sie MapServer-Tags ersetzen können.&lt;br /&gt;
&lt;br /&gt;
Sobald das Template beliebigen Formats von MapServer bearbeitet worden ist, kann das Resultat zurückgeliefert werden. Wenn man jetzt reinen ASCII-Text hat, würde MapServer ihn jedoch als =text/html=  ausliefern, und das ist eigentlich nicht das, was man möchte. Der Client (also z.B. Webbrowser) interpretiert die Daten natürlich nur korrekt, wenn man ihm den korrekten MIME type liefert. Daher kann man im Mapfile für die zurückgegebenen Daten einen eigenen Metadatum den geeigneten Typ setzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
    ...&lt;br /&gt;
	&amp;quot;wms_feature_info_mime_type&amp;quot; &amp;quot;text/plain&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also noch einmal zusammenfassend: der Benutzer kann zwar von außen den =INFO_TYPE=  auf =text/html=  setzen; MapServer kann jedoch mit Daten beliebigen Typs antworten.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{application/vnd.ogc.gml}&lt;br /&gt;
&lt;br /&gt;
Damit ein Layer in diesem Format Anfragen beantworten kann, muß außerdem der Parameter =DUMP=  in diesem Layer gesetzt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
 ...&lt;br /&gt;
 DUMP TRUE&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls es keine Suchresultate gegeben hat, wird zwar eine Datei im korrekten Format zurückgegeben, die allerdings nur die korrekten Header enthält und ansonsten leer ist.&lt;br /&gt;
&lt;br /&gt;
Für Suchergebnisse werden in diesem Format immer die Koordinaten des Features gleich mitgeliefert. Antworten können also bei großen Features nicht nur auf sich warten lassen, da MapServer für das Erzeugen großer Dokumente natürlich eine Weile braucht, sondern auch weil der Transfer über das Netz natürlich ein bißchen dauert.&lt;br /&gt;
&lt;br /&gt;
Die Anfrage auf den Flughafen-Layer der Itasca-Demodaten beispielsweise liefert in den voreingestellten Extents und dem fiktiven Klick auf die Koordinate 224/75 das folgende Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;msGMLOutput &lt;br /&gt;
 xmlns:gml=&amp;quot;http://www.opengis.net/gml&amp;quot;&lt;br /&gt;
 xmlns:xlink=&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&lt;br /&gt;
 xmlns:xsi=&amp;quot;http://www.w3.org/2000/10/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;countyboundary_layer&amp;gt;&lt;br /&gt;
  &amp;lt;countyboundary_feature&amp;gt;&lt;br /&gt;
    &amp;lt;AREA&amp;gt;7577272785.15393&amp;lt;/AREA&amp;gt;&lt;br /&gt;
    &amp;lt;PERIMETER&amp;gt;436617.07762&amp;lt;/PERIMETER&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_NAME&amp;gt;Itasca&amp;lt;/CTY_NAME&amp;gt;&lt;br /&gt;
    &amp;lt;COUN&amp;gt;31&amp;lt;/COUN&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_ABBR&amp;gt;ITAS&amp;lt;/CTY_ABBR&amp;gt;&lt;br /&gt;
    &amp;lt;ISLAND&amp;gt;N&amp;lt;/ISLAND&amp;gt;&lt;br /&gt;
    &amp;lt;CTY_FIPS&amp;gt;61&amp;lt;/CTY_FIPS&amp;gt;&lt;br /&gt;
    &amp;lt;RECNO&amp;gt;27&amp;lt;/RECNO&amp;gt;&lt;br /&gt;
    &amp;lt;gml:boundedBy&amp;gt;&lt;br /&gt;
      &amp;lt;gml:Box srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
          393234.393701,5207990.085063&lt;br /&gt;
          495769.579719,5305374.105135&lt;br /&gt;
        &amp;lt;/gml:coordinates&amp;gt;&lt;br /&gt;
      &amp;lt;/gml:Box&amp;gt;&lt;br /&gt;
    &amp;lt;/gml:boundedBy&amp;gt;&lt;br /&gt;
    &amp;lt;gml:Polygon srsName=&amp;quot;EPSG:26915&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;gml:outerBoundaryIs&amp;gt;&lt;br /&gt;
        &amp;lt;gml:LinearRing&amp;gt;&lt;br /&gt;
          &amp;lt;gml:coordinates&amp;gt;&lt;br /&gt;
            393865.671855,5300138.258409&lt;br /&gt;
            393869.171975,5300138.258374 &lt;br /&gt;
            394516.694141,5300137.439369 &lt;br /&gt;
            395522.728579,5300136.241770 &lt;br /&gt;
            [...]&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und so weiter, mit allen Punkten des Features.&lt;br /&gt;
&lt;br /&gt;
==WMS Clients==\index{OGC!Client}(6)&lt;br /&gt;
&lt;br /&gt;
WMS-konforme Mapserver lassen sich kaskadieren, indem einzelne Layer einfach als fertige Bilder von anderen WMS-konformen Mapservern bezogen werden. Durch die standardisierte Schnittstelle ist dafür kein UMN MapServer nötig. Sie können einzelne Layer beispielsweise auch von einem ESRI ArcIMS beziehen, wenn Sie möchten.&lt;br /&gt;
&lt;br /&gt;
Neben der schönen Möglichkeit, die Standorte und somit Pflege einzelner Teile der Kartenerzeugung voneinander trennen zu können, indem man beispielsweise die Bodenproben von einem Amt und die hydrogeologischen Karten von einem anderen Amt miteinander über eine genormte Schnittstelle verbindet, ist ein weiteres offensichtliches Einsatzfeld natürlich die Lastenverteilung. Datenbestände, die erst umprojiziert werden müssen, können auf leistungsfähigere Server ausgelagert werden, während einfache Operationen wie beispielsweise die simple Darstellung von Rasterbildern von schwächeren Geräten übernommen werden kann\footnote{Beachten Sie dabei immer, dass zur Erzeugung des fertigen Bildes ''immer''  auf den langsamsten Layer gewartet werden muß, da ja das Bild ansonsten nicht komplett ist.}.&lt;br /&gt;
&lt;br /&gt;
Im folgenden soll betrachtet werden, wie Sie einen Layer in einem Mapfile erstellen, damit er dynamisch Daten von einem WMS-konformen Server bezieht. Nach außen hin verhält sich dieser Layer dann wie jeder andere Rasterlayer auch.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Installation und Konfiguration}&lt;br /&gt;
&lt;br /&gt;
Wie weiter hinten im Kapitel 'Installation' ab Seite~\pageref{text:installation} beschrieben, ist die Fähigkeit, als WMS-Client zu fungieren, nicht als Voreinstellung bei der Kompilierung gegeben, sondern muß explizit angefordert werden. Wie das genau gemacht wird, und welche Voraussetzungen gegeben sein müssen, ist in Abschnitt~\ref{text:installation:compile:wmsclient} erklärt.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{getMap}&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt ist, sicherzustellen, dass der anzusprechende Server funktioniert und die gewünschten Daten ausliefert. Dafür holt man sich das Capabilites-Dokument dieses Servers. Wie das zu tun ist, ist auf Seite~\pageref{text:wms:getcapabilities} beschrieben.&lt;br /&gt;
&lt;br /&gt;
Nun weiß man alles über die Fähigkeiten des Servers (welche Projektionen angeboten werden, wie seine Layer heißen und so weiter) und kann sich darum kümmern, eine erste Karte zu holen, um zu sehen, ob die Darstellung dem entspricht, was man erwartet. Dazu richtet man mit seinem Webbrowser eine  =getMap= -Anfrage an den Server.&lt;br /&gt;
&lt;br /&gt;
Wie so eine Anfrage aufgebaut sein muß, wurde bereits in Abschnitt~3 gezeigt. Ersetzen Sie allerdings alle Werte für die Parameter durch diejenigen, die Sie im abgerufenen Capabilities-Dokument gefunden haben, also durch korrekte Projektionen, Layernamen, Extents und so weiter. Sobald dieser Aufruf eine Karte in Ihrem Browser zaubert, wissen Sie, dass Sie gültige Werte besitzen und sie korrekt notiert haben, sodass Sie diese Angaben jetzt in einen Layer in Ihr Mapfile einbauen können.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Das Mapfile}&lt;br /&gt;
&lt;br /&gt;
Zunächst benötigen Sie einen =PROJECTION= -Block für Ihre Karte. Sie können auf diesen Block verzichten, wenn alle Layer in der gleichen Projektion vorliegen und auch die von Ihnen angesprochenen WMS-Server nur diese eine Projektion unterstützen.&lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass Sie in der =WEB= -Sektion Ihres Mapfiles einen =IMAGEPATH= -Parameter benötigen, da die Bilder von entfernten Servern als temporäre Dateien gespeichert werden müssen. Diese temporären Dateien werden übrigens nach Verwendung gleich wieder gelöscht, sodass Sie sie kaum bemerken werden.&lt;br /&gt;
&lt;br /&gt;
Für WMS-konforme Anfragen an andere Server sind lediglich die Layerdefinitionen anzupassen. Dabei kommt ein =CONNECTIONTYPE=  mit dem Namen =WMS=  zum Einsatz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
  NAME &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
  TYPE RASTER&lt;br /&gt;
  STATUS ON&lt;br /&gt;
  CONNECTIONTYPE WMS&lt;br /&gt;
  CONNECTION &amp;quot;http://www.example.com/cgi-bin/mapserv?&amp;quot;&lt;br /&gt;
  METADATA&lt;br /&gt;
    &amp;quot;wms_title&amp;quot;          &amp;quot;Gewaesser&amp;quot;&lt;br /&gt;
    &amp;quot;wms_server_version&amp;quot; &amp;quot;1.1.0&amp;quot;&lt;br /&gt;
    &amp;quot;wms_srs&amp;quot;            &amp;quot;EPSG:4326 EPSG:31464&amp;quot;&lt;br /&gt;
    &amp;quot;wms_name&amp;quot;           &amp;quot;seen,kanaele,fluesse,baeche&amp;quot;&lt;br /&gt;
    &amp;quot;wms_format&amp;quot;         &amp;quot;image/png&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
  PROJECTION&lt;br /&gt;
    &amp;quot;init=epsg:31464&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie sehen, ist der URL selber sehr kurz gehalten. Er entspricht der ''onlineresource''  aus dem Capabilities-Dokument eines WMS-konformen Servers.&lt;br /&gt;
&lt;br /&gt;
Alle weiteren Details zur Verbindung mit dem entfernten Server werden in Form von Metadaten gemacht. Wer bisher MapServer 3.6 eingesetzt hat, wird das noch anders kennen: in jener Version wurde noch der gesamte Verbindungsstring (bis auf die dynamischen Elemente) in der =CONNECTION=  notiert.&lt;br /&gt;
&lt;br /&gt;
Der =wms_title=  ist der Titel für diesen Layer, der mit der Anfrage allerdings nichts zu schaffen hat.&lt;br /&gt;
&lt;br /&gt;
Die Version der Anfrage wird mit =wms_server_version=  notiert. Mit =wms_srs=  geben Sie wieder Projektionen an, allerdings diejenigen, die von der Gegenstelle unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=wms_name=  benennt den oder die Layer, aus denen die bezogene Karte zusammengesetzt werden soll. Mehrere Layer werden durch Kommata voneinander abgetrennt. Beachten Sie, dass bei WMS die Reihenfolge der Ebenen von Belang ist: in unserem Beispiel werden zuerst der Layer =seen=  gezeichnet, darauf dann =kanaele=  und so weiter.&lt;br /&gt;
&lt;br /&gt;
Das gewünschte Bildformat wird schließlich mit =wms_format=  spezifiziert. Es gibt auch den Parameter =wms_formatlist= , der mehrere durch Kommata getrennte Angaben zuläßt.&lt;br /&gt;
&lt;br /&gt;
''Wichtiger Hinweis'' : An keiner einzigen Stelle lädt sich MapServer die Capabilities des entfernten Servers herunter, um sich mit ihnen auseinanderzusetzen. Sie müssen also selber darauf achten, dass die von Ihnen gemachten Angaben stimmig sind.&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie einen Layer haben, der sich Daten von einem WMS-konformen Server holt, drängt sich natürlich die Frage auf, wie MapServer im Fall von Exceptions reagiert. Eindeutige Antwort: das kommt drauf an.&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es offensichtlich, mit Exceptions, die direkt im Bild eingefügt sind, umzugehen, also mit denen, die vom Typ =application/vnd.ogc.se_inimage=  sind. Diese werden einfach Bestandteil der fertigen Karte, die Sie im Webbrowser sehen. Im Fehlerfall bemerkt sehr schnell, was Sache ist.&lt;br /&gt;
&lt;br /&gt;
Das gleiche gilt offensichtlich bei =application/vnd.ogc.se_blank= .&lt;br /&gt;
&lt;br /&gt;
Liefert die Gegenstelle ein textbasiertes Format, also zum Beispiel GML zurück, dann gibt es ein Problem, da MapServer davon ausgeht, dass er Rasterdaten als Input erhält; demnach versucht er, das GML-Dokument als Text zu rendern, was natürlich schief geht und somit eine Fehlermeldung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Dieses Problem läßt sich bisher leider auch noch nicht umgehen. Das mindeste, was man also tun kann, ist für eine funktionierende Kommunikation mit dem Betreiber des Quellservers zu sorgen, damit dieser nicht einfach unangekündigt Layernamen ändert, die Ihnen Ihre Applikation wegbrechen lassen.&lt;br /&gt;
&lt;br /&gt;
==Hinweise==(7)&lt;br /&gt;
&lt;br /&gt;
FIXME: das auch noch bei WFS erwähnen&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mit der Administration sowohl des Mapservers, der als Client fungiert, als auch der Serverseite betraut sind, sollten Sie auf alle Fälle darauf achten, keine zirkulären Bezüge zu erzeugen, bei denen Server A einen Layer von Server B bezieht und dieser dann wieder Server A aufruft. Bei komplexen Installationen ist das durchaus eine Fehlerquelle, das Verhalten in diesem Fall ist undefiniert.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer wichtiger Faktor beim Einsatz von WMS-konformer Funktionalität ist die unschöne Tatsache, dass MapServer das Sammeln der Daten für einzelne Layer linear abarbeitet, und nicht mit einem einzelnen Thread oder Prozess pro Layer arbeitet. Das bedeutet, dass MapServer genau ''gar nichts''  tut, während er auf einen Layer aus dem Netzwerk wartet, um dann zum nächsten Layer überzugehen\ldots der dann vielleicht wieder ein solcher Layer ist, oder eine Datenbankquelle. Es wird also unnötig Rechenzeit vergeudet. Dieses Problem läßt sich im Moment auch leider nicht umgehen.&lt;br /&gt;
&lt;br /&gt;
\subsubsection*{Weitere Modi für WMS}&lt;br /&gt;
&lt;br /&gt;
Wer den Standard aufmerksam liest, wird noch vier weitere Operationsmodi finden, die in den einführenden Zeilen zu diesem Abschnitt nicht genannt worden sind. Sie umfassen:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=describeLayer=   &lt;br /&gt;
*=getLegendGraphic=   &lt;br /&gt;
*=getStyles=   &lt;br /&gt;
*=putStyles=   &lt;br /&gt;
&lt;br /&gt;
Diese Modi sind nur für Mapserver von Relevanz, die den OGC-Standard SLD unterstützen. Mit diesen ''styled layer descriptor''  ist es möglich, von außen Einfluß auf die ansonsten fixe Kartengestaltung eines Mapservers zu nehmen. Da dieser Standard serverseitig von MapServer bisher nicht unterstützt wird\footnote{Und clientseitig nur sehr sporadisch; konsultieren Sie hierzu bitte die Online-Dokumentation.}, findet hier keine detaillierte Beschreibung statt. Sie können sich aber selbstverständlich den Standard~[[pdf:spec:sld10]] lesen.&lt;br /&gt;
&lt;br /&gt;
=Web Feature Server (WFS)=(8)&lt;br /&gt;
&lt;br /&gt;
Die entsprechende Spezifikation des OGC~[[pdf:spec:wfs100]] sieht WFS im Kontext zu WMS. Nach der Formulierung in der Einführung des Dokuments ist WFS der 'nächste logische Schritt' nach WMS. Wo WMS die Möglichkeit bietet, Capabilities abzufragen Karten anzuzeigen und schließlich Anfragen bezüglich der Datengrundlage der Karten zu machen, stellt WFS ein Interface zur Verfügung, dass es dem Benutzer ermöglicht, Einfluß auf die Datengrundlage zu nehmen, indem Features in der Karte geändert und gelöscht, bzw. neue Features hinzugefügt werden können.&lt;br /&gt;
&lt;br /&gt;
Das hört sich alles ziemlich gut an -- und doch muß der begeisterte Leser hier enttäuscht werden. MapServer ist bisher ausschließlich darauf ausgelegt, Daten aus Quellen wie der Festplatte oder einer Datenbank zu lesen und Karten zu produzieren. Von einer Unterstützung für Datenänderungen ist man im Moment noch sehr weit entfernt -- falls sie überhaupt kommen wird\footnote{Es besteht natürlich die Möglichkeit, dass Sie beispielsweise mit MapScript entsprechende Fähigkeiten in einer eigenen Applikation programmieren. Stellen Sie sich auf einigen Aufwand ein.}.&lt;br /&gt;
&lt;br /&gt;
Was wir mit MapServer kriegen, ist allerdings zumindest die Möglichkeit, Vektorlayer über den Transportmechanismus von WFS als Server auszuliefern bzw. als Client zu beziehen. Das funktioniert nur mit Vektordaten, da sich Rasterdaten offensichtlich nicht in das XML-Format mit dem Namen GML verpacken lassen. Diese ''Geography Markup Language''  ist selbstverständlich ebenfalls in einer eigenen Implementation Specification definiert~[[pdf:spec:gml]].&lt;br /&gt;
&lt;br /&gt;
Von den in der Spezifikation definierten Anfragetypen sind im MapServer die folgenden implementiert:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=getCapabilities= , um ein Capabilities-Dokument abrufen zu können, wie man es bereits von WMS kennt.  &lt;br /&gt;
*=describeFeature=  liefert eine Beschreibung eines Features zurück.  &lt;br /&gt;
*=getFeature=  holt eine GML-Repräsentation eines Features.  &lt;br /&gt;
&lt;br /&gt;
==WFS Server==&lt;br /&gt;
&lt;br /&gt;
Wie schon beim WMS-konformen Server, wird WFS in MapServer dadurch aktiviert, dass die notwendigen =METADATA= -Tags in das Mapfile eingefügt werden. Zuerst einmal müssen aber die folgenden Vorkehrungen getroffen werden:&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*Zuerst muß MapServer natürlich mit WFS-Unterstützung kompiliert worden sein. Detaillierte Vorgaben dafür finden Sie in Anhang~\ref{anhang:compile}.  &lt;br /&gt;
*Das Mapfile muß einen =NAME=  haben, ebenso wie jeder einzelne Layer. Wie schon bei WMS geht MapServer bei WFS davon aus, dass jeder Layer, der sich im Mapfile befindet, auch über WFS zur Verfügung gestellt werden soll.  &lt;br /&gt;
&lt;br /&gt;
MapServer kann ausschließlich Vektorlayer in seinen WFS-Capabilites erscheinen lassen, also Shapefiles, PostGIS-Layer und so weiter; der Typ des Layers muß also =POINT= , =LINE=  oder =POLYGON=  sein.&lt;br /&gt;
&lt;br /&gt;
Desweiteren muß die Eigenschaft =DUMP=  im Layer auf =TRUE=  gesetzt sein. Dies zeigt MapServer an, dass er GML-Repräsentationen für diesen Layer erzeugen darf. Das entspricht der Vorgabe, =getFeatureInfo=  mit einem WMS-konformen Server nutzen zu können.&lt;br /&gt;
&lt;br /&gt;
In der =WEB= -Sektion des Mapfiles müssen dann die folgenden Angaben gemacht werden.&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
*=wfs_onlineresource=  Die Basisadresse des Servers. Hat denselben Aufbau wie der gleichnamige Parameter für WMS.    Allerdings muß man einem WFS-konformen MapServer noch mitteilen, wie er WFS- von WMS- Anfragen zu unterscheiden hat. Das geschieht durch =SERVICE= , also etwa derart:    &amp;lt;br&amp;gt;&amp;lt;code&amp;gt;  WEB    ..    METADATA    ...      &amp;quot;wfs_onlineresource&amp;quot; \  	  &amp;quot;http://www.example.com/cgi-bin/mapserv?SERVICE=WFS&amp;amp;map=...&amp;quot;    END  END  &amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    Diese Angabe ist auch dann nötig, wenn der MapServer nicht darauf eingerichtet oder konfiguriert ist, als WMS-Server zu fungieren.    &lt;br /&gt;
*=wfs_title=  Titel für die Karte; siehe WMS-Konformität. Zwingend notwendig.  &lt;br /&gt;
*=wfs_abstract=  Eine elaborierte Zusammenfassung über Sinn und Zweck dieses Servers. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_keywordlist=  Eine Liste mit Schlüsselworten, die einen Bezug zu diesem WFS-Server haben. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_accessconstraints=  Beschränkungen, die den Zugriff auf diesen Server betreffen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_fees=  Gebühren, die beim Zugriff auf diesen Server anfallen. Siehe WMS-Konformität.  &lt;br /&gt;
*=wfs_encoding=  Die Kodierung für die XML-Dateien, die durch den WFS-Server ausgeliefert werden. Voreingestellt ist hier ISO-8859-1.  &lt;br /&gt;
*=ows_schema_location=  Der Ort, an dem die OWS-Schemas zur Validierung der generierten XML-Dateien liegen. Siehe weiter unten auf Seite~\pageref{text:wfs:schemas}.  &lt;br /&gt;
*=wfs_geometry_element_name=  Weiter unten gibt es ein Beispiel zu sehen, wie eine Datei aussehen kann, die von einem WFS-konformen MapServer ausgeliefert wird. Das Element, dass die Liste der Koordinaten eines Features umfaßt, hat dabei keinen fixen Namen. Sie können mit diesem Parameter hier einen Namen festlegen; Voreinstellung in MapServer ist =MS_GEOMETRY= .  &lt;br /&gt;
*=wfs_srs=  Die Projektion, die für alle Layer in der Karte gelten soll. Wird als EPSG-Code angegeben und genauso wie bei WMS-konformen Servern notiert. Beachten Sie bitte die Anmerkungen zu Projektionen in WFS-konformen Servern im nächsten Abschnitt.  &lt;br /&gt;
&lt;br /&gt;
Beachten Sie, dass diese Parameter im Gegensatz zu den WMS-Parametern alle den Präfix =wfs_=  tragen. Einzige Ausnahme ist =ows_schema_location= .&lt;br /&gt;
&lt;br /&gt;
==Projektionen in WFS-Servern==&lt;br /&gt;
&lt;br /&gt;
Die WFS-Spezifikation macht zu Projektionen andere Vorgaben als idie für WMS. So können einzelne Layer nicht in mehr als einer Projektion ausgeliefert werden. Es gibt auch keine Projektionsangabe, die man ein einziges Mal für alle Layer machen kann\footnote{Man kann aber, wie Sie weiter oben sehen konnten, MapServer so konfigurieren, dass er einen SRS-Eintrag in der WEB-Sektion bekommt und diesen dann auf alle Layer überträgt.}. Es ist aber sehr wohl möglich, für jeden Layer eine unterschiedliche Projektion anzubieten. Außerdem nennt der Standard keine Default-Projektion; anders als bei WMS, wo mindestens =EPSG:4326=  angeboten werden muß.&lt;br /&gt;
&lt;br /&gt;
MapServer entscheidet in zwei Schritten, welche Projektion für einen Layer nach außen mitgeteilt wird. Wenn es eine 'übergeordnete' Projektion gibt (also einen Projektionsblock mit EPSG-Code für die ganze Karte, bzw. ein =wfs_srs=  in der WEB-Sektion), so findet diese Projektion auf alle Layer Anwendung, selbst dann, wenn die Layer selber noch einmal über =wfs_srs=  eine Projektion definieren.&lt;br /&gt;
&lt;br /&gt;
Gibt es keine solche 'Überprojektion', muß jeder Layer einen eigenen Wert setzen.&lt;br /&gt;
&lt;br /&gt;
==Schemas==(9)&lt;br /&gt;
&lt;br /&gt;
Schemas\footnote{In diesem Fall nicht Schemata, da es sich um einen feststehenden englischen Begriff handelt.} sind ein Mechanismus, XML-Dateien zu validieren, also zu prüfen, ob sie einem bestimmten Aufbau genügen. Sie können ein Paket standardkonformer Schemas von~[[http:owssamples]] herunterladen.&lt;br /&gt;
&lt;br /&gt;
Das Archiv entpacken Sie an einen Ort, der für den WebServer erreichbar ist. Danach können Sie, wie oben gesehen, mit einem entsprechenden Metadatum den Pfad zu den Schemas angeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
WEB&lt;br /&gt;
  ...&lt;br /&gt;
  METADATA&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;quot;ows_schema_location&amp;quot; &amp;quot;/pfad/zu/den/schemas&amp;quot;&lt;br /&gt;
  END&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Geben Sie keinen Pfad an, wird =..=  als Ort für die Schemas angenommen. Der Gedanke hinter dieser Entscheidung war, dass man damit im Wurzelverzeichnis des Webservers landet, wenn man sein MapServer-Binary im Verzeichnis =cgi-bin/=  hat\footnote{Eine sehr Apache-zentrierte Denkweise.}.&lt;br /&gt;
&lt;br /&gt;
Der Präfix =ows_=  zeigt übrigens an, dass hier auf mehr als nur WFS-Schemas verwiesen wird; vielmehr handelt es sich um einen Verweis auf Schemas, die sich auf ''OGC Web Services''  beziehen.&lt;br /&gt;
&lt;br /&gt;
==Aufruf \&amp;amp; Capabilities==&lt;br /&gt;
&lt;br /&gt;
Sobald man die ganze vorbereitende Arbeit hinter sich gebracht hat, kann man prüfen, ob alles korrekt eingerichtet worden ist. Dazu richtet man, wie schon beim WMS-konformen Server, eine Anfrage vom Typ =getCapabilities=  an den Server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
http://www.example.com/cgi-bin/mapserv&lt;br /&gt;
  ? SERVICE=WFS&lt;br /&gt;
  &amp;amp; REQUEST=getCapabilities&lt;br /&gt;
  &amp;amp; map=...&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgehensweise entspricht jetzt haargenau dem, was Sie auch mit einem WMS-Server tun würden: Sie durchsuchen das Capabilites-Dokument nach Warnungen und Fehlern, und wenn sich alles so verhält, wie es geplant war, dann haben Sie einen einsatzfähigen, WFS-konformen Server.&lt;br /&gt;
&lt;br /&gt;
==WFS Client==&lt;br /&gt;
&lt;br /&gt;
Was man mit WMS machen kann, will man selbstverständlich auch mit WFS machen: Einbinden von WFS-Layern als eigene Kartenebenen. Die Vorgehensweise ist dabei stark an eben das Einfügen von WMS-Layern angelehnt.&lt;br /&gt;
&lt;br /&gt;
FIXME: blah&lt;br /&gt;
&lt;br /&gt;
Die Voraussetzungen für die Kompilierung eines WFS-konformen Client sind etwas umfänglicher als für den entsprechenden Server. Sieh auch Abschnitt [FIXME] im Anhang.&lt;br /&gt;
&lt;br /&gt;
Ein WFS-Client-Layer ist sieht anders aus als ein 'normaler' Layer, hat aber Ähnlichkeit mit einem WMS-konformen Layer. Hier ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
LAYER&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FIXME: vervollständigen!1!&lt;br /&gt;
&lt;br /&gt;
=Map Context=&lt;br /&gt;
&lt;br /&gt;
Diese Spezifikation ist eine Ergänzung zur WMS-Spezifikation. Sie beschreibt einen Mechanismus, mit dem Informationen über eine Menge von WMS-produzierten Layern auf eine portable Weise zwischen Systemen ausgetauscht bzw. in einem definierten Format gespeichert und abgerufen werden können.&lt;br /&gt;
&lt;br /&gt;
Das Dokument, das diesen Standard definiert ist in der Version 1.0 von der OGC-Website herunterladbar~[[pdf:spec:mapcontext10]].&lt;br /&gt;
&lt;br /&gt;
MapServer kann Kontextdokumente in den Versionen 0.1.2, 0.1.4, 0.1.7 und 1.0 lesen, und in den Versionen 0.1.4, 0.1.7 und 1.0 exportieren.&lt;br /&gt;
&lt;br /&gt;
Kontextdokumente lassen sich im MapServer darüberhinaus nur in MapScript verwenden, und selbst dort nur in der PHP-Fassung. Alles andere wird (noch?) nicht unterstützt. Darüberhinaus geht Map Context davon aus, dass die WMS-Spezifikation 1.1.1 beachtet wird.&lt;br /&gt;
&lt;br /&gt;
Notwendige Bibliotheken für die Map Context-Funktionalität sind die Projektionsbibliothek proj.4, GDAL/OGR im Zusammenspiel mit Xerces sowie PHP MapScript. Genaue Installationsanleitungen für diese Komponenten finden Sie im Anhang ab Seite~\pageref{text:installation}.&lt;br /&gt;
&lt;br /&gt;
==Das Context-Dokument==&lt;br /&gt;
&lt;br /&gt;
Der Inhalt eines Context-Dokuments (oder schlicht: eines Contexts) besteht im wesentlichen aus Angaben über die Quelle(n) der einzelnen Layer, die verwendeten Bounding Boxes, Projektionen und eventuell diverse Metadaten.&lt;br /&gt;
&lt;br /&gt;
Wie bei praktisch allem, was mit dem OGC in Zusammenhang steht, ist der Context ein XML-Dokument. Beachten Sie, dass in einem Context-Dokument tatsächlich nur WMS-Layer gespeichert werden können.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
==Den Kontext verwenden==&lt;br /&gt;
&lt;br /&gt;
Dieser Abschnitt sollte sinnvoller eigentlich im Kapitel über PHP MapScript erscheinen; der Konsistenz halber ist er hierher gewandert. Denn wie bereits erwähnt, kann Map Context bisher nur im Zusammenspiel mit PHP-MapScript benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Mapfile nach den obigen Vorgaben erstellt haben, können Sie testen, ob Sie alles richtig gemacht haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  dl (&amp;quot;php_mapscript40.so&amp;quot;);&lt;br /&gt;
  &amp;lt;math&amp;gt;map = ms_newMapObj (&amp;quot;mapfile.map&amp;quot;);&lt;br /&gt;
  &amp;lt;/math&amp;gt;map -&amp;gt; saveMapContext (&amp;quot;mapfile_context.xml&amp;quot;);&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach geht es nach dem bewährten Muster daran, in der fertigen XML-Datei nach Warnhinweisen zu suchen, die zeigen, dass Dinge fehlen oder Fehler vorliegen. Wenn das nicht mehr passiert, kann Ihr Mapfile als Quelle für einen Map Context dienen.&lt;br /&gt;
&lt;br /&gt;
FIXME: fertig!1!&lt;br /&gt;
&lt;br /&gt;
= Styled Layer Descriptor (SLD)=&lt;br /&gt;
* http://www.mapserver.org/ogc/sld.html &lt;br /&gt;
&lt;br /&gt;
=Filter Encoding =&lt;br /&gt;
[[User:Astrid Emde]]&lt;br /&gt;
    * http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
= WCS =&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wcs_format.html &lt;br /&gt;
&lt;br /&gt;
= WMS Time=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/wms_time.html &lt;br /&gt;
&lt;br /&gt;
= SOS=&lt;br /&gt;
&lt;br /&gt;
    * Informationen siehe http://www.mapserver.org/ogc/sos_server.html &lt;br /&gt;
&lt;br /&gt;
= OWS Clients =&lt;br /&gt;
== Desktop GIS==&lt;br /&gt;
== WebGIS ==&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33849</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33849"/>
		<updated>2009-01-10T17:58:54Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* 3.3 Web Map Service (WMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* [[Vorlage UMN MapServer Handbuch Kapitel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
 ([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | 3.1 OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | 3.2 OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Web_Map_Service_.28WMS.29 | 3.3 Web Map Service (WMS)]] === &lt;br /&gt;
3.3.1 UMN als WMS Server &amp;lt;br&amp;gt;&lt;br /&gt;
* Web Sektion &amp;lt;br&amp;gt;&lt;br /&gt;
* Layer Sektion  &amp;lt;br&amp;gt;&lt;br /&gt;
* GetFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.3.2 UMN als WMS Client &amp;lt;br&amp;gt;&lt;br /&gt;
* Web Sektion &amp;lt;br&amp;gt;&lt;br /&gt;
* Layer Sektion  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.3.3 Verwandte des WMS &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.1 Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.2 Map Context &amp;lt;br&amp;gt;&lt;br /&gt;
* Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
* Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.3 WMS TIME &amp;lt;br&amp;gt;&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Service (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33846</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33846"/>
		<updated>2009-01-10T17:57:26Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /* 3.3 Web Map Service (WMS)  Jörg Thomsen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* es wird noch jemand gesucht, der sich mit Wiki2LaTeX und dem Export auseinandersetzt &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
 ([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | 3.1 OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | 3.2 OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Map Service (WMS)=== &lt;br /&gt;
3.3.1 UMN als WMS Server &amp;lt;br&amp;gt;&lt;br /&gt;
* Web Sektion &amp;lt;br&amp;gt;&lt;br /&gt;
* Layer Sektion  &amp;lt;br&amp;gt;&lt;br /&gt;
* GetFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.3.2 UMN als WMS Client &amp;lt;br&amp;gt;&lt;br /&gt;
* Web Sektion &amp;lt;br&amp;gt;&lt;br /&gt;
* Layer Sektion  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.3.3 Verwandte des WMS &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.1 Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.2 Map Context &amp;lt;br&amp;gt;&lt;br /&gt;
* Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
* Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.3 WMS TIME &amp;lt;br&amp;gt;&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Service (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33845</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33845"/>
		<updated>2009-01-10T17:57:06Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /*  OGC-Konformität   Jörg Thomsen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* es wird noch jemand gesucht, der sich mit Wiki2LaTeX und dem Export auseinandersetzt &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] ==&lt;br /&gt;
 ([[User:jtmapmedia | Jörg Thomsen]] bis einschl. 3.3.2 UMN als WMS Client)&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | 3.1 OGC - warum macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | 3.2 OGC - wie macht man das?]] ===&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Map Service (WMS) [[User:jtmapmedia | Jörg Thomsen]]=== &lt;br /&gt;
3.3.1 UMN als WMS Server &amp;lt;br&amp;gt;&lt;br /&gt;
* Web Sektion &amp;lt;br&amp;gt;&lt;br /&gt;
* Layer Sektion  &amp;lt;br&amp;gt;&lt;br /&gt;
* GetFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.3.2 UMN als WMS Client &amp;lt;br&amp;gt;&lt;br /&gt;
* Web Sektion &amp;lt;br&amp;gt;&lt;br /&gt;
* Layer Sektion  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.3.3 Verwandte des WMS &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.1 Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.2 Map Context &amp;lt;br&amp;gt;&lt;br /&gt;
* Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
* Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.3 WMS TIME &amp;lt;br&amp;gt;&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Service (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33844</id>
		<title>HBUMNMapServer ger</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=HBUMNMapServer_ger&amp;diff=33844"/>
		<updated>2009-01-10T17:55:34Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Jtmapmedia: /*  OGC-Konformität  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Links =&lt;br /&gt;
* die Kategorie zum Handbuch [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch]&lt;br /&gt;
* [[UMNHB_ger_Lizenzen | Klärung der Lizenzfrage]]&lt;br /&gt;
* [[ Komitee_f%C3%BCr_Bildung_und_Dokumentationserstellung | Komitee für Bildung und Dokumentationserstellung ]]&lt;br /&gt;
&lt;br /&gt;
= Hinweise zur Bearbeitung der Handbuchseiten=&lt;br /&gt;
Aus den Wiki-Seiten der [http://wiki.osgeo.org/wiki/Category:UMN_MapServer_Handbuch Kategorie UMN MapServer Handbuch] soll ein Handbuch in Papierform erstellt werden.&lt;br /&gt;
&lt;br /&gt;
* Der Export aus dem Wiki soll über Wiki2LaTeX (http://www.mediawiki.org/wiki/Extension:Wiki2LaTeX) erfolgen.&lt;br /&gt;
* Der Export/Speicherort der Bilder muss noch geklärt werden&lt;br /&gt;
* es wird noch jemand gesucht, der sich mit Wiki2LaTeX und dem Export auseinandersetzt &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorgaben Wiki Seiten==&lt;br /&gt;
Damit dieses recht problemlos erfolgen kann muss bei der Bearbeitung der Seiten folgendes beachtet werden:&lt;br /&gt;
* Kapitel&lt;br /&gt;
** Überschriften&lt;br /&gt;
* Bilder:&lt;br /&gt;
* Links&lt;br /&gt;
* Codeblöcke&lt;br /&gt;
* Listen&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis des 'neuen' Handbuchs =&lt;br /&gt;
&lt;br /&gt;
- Änderungen bitte unter das jeweilige Thema fett schreiben '''und auch in den verlinkten Seiten nachführen'''&amp;lt;br&amp;gt;&lt;br /&gt;
- Zuständigkeiten / Autoren im besten Fall mit angeben &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_1 | Einführung]]==&lt;br /&gt;
1.1 Aufbau dieses Buches&amp;lt;br&amp;gt;&lt;br /&gt;
1.2 Was ist ein Mapserver?&amp;lt;br&amp;gt;&lt;br /&gt;
* Mit Architektur Webmapping-Amwendung und Positionierung des UMN &amp;lt;br&amp;gt;&lt;br /&gt;
1.2.1 Vorteile des UMN MapServer&amp;lt;br&amp;gt;&lt;br /&gt;
1.3 Die verschiedenen Funktionsweisen&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.2 MapServer OGC-konform&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.3 MapScript&amp;lt;br&amp;gt;&lt;br /&gt;
1.3.4 ChangeLog&amp;lt;br&amp;gt;&lt;br /&gt;
1.4 Migration&amp;lt;br&amp;gt;&lt;br /&gt;
1.5 Danksagung&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[HBUMNMapServer_ger_Capter_2 | MapFile]]==&lt;br /&gt;
2.1 Bedeutung des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.1 MapServer als CGI&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.2 Die Modi&amp;lt;br&amp;gt;&lt;br /&gt;
2.1.3 Die weiteren Parameter&amp;lt;br&amp;gt;&lt;br /&gt;
2.2 Grundlegender Aufbau des Mapﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.3 Der Header&amp;lt;br&amp;gt;&lt;br /&gt;
2.4 Die Web-Sektion [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5 Layer [[USER:Simon Appelt]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.1 Gruppierungen von Layern&amp;lt;br&amp;gt;&lt;br /&gt;
2.5.2 Weitere Layer-Optionen&amp;lt;br&amp;gt;&lt;br /&gt;
'''2.5.3 Diagramme (Kai Behncke? / Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
2.6 Classes&amp;lt;br&amp;gt;&lt;br /&gt;
2.6.1 Gruppierungen von Classes '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
   mit vielen Bsp. für Expressions!!!&amp;lt;br&amp;gt;&lt;br /&gt;
2.7 Styles&amp;lt;br&amp;gt;&lt;br /&gt;
2.8 Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.1 Bildkataloge&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.2 Rasterdaten klassiﬁzieren&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.3 Umprojizieren von Rasterdaten&amp;lt;br&amp;gt;&lt;br /&gt;
2.8.4 Rasterdaten mit GDAL&amp;lt;br&amp;gt;&lt;br /&gt;
2.9 Vektordaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.9.1 Indizes für Shapeﬁles&amp;lt;br&amp;gt;&lt;br /&gt;
2.9.2 Graticule-Layer '''wird zu GRID -NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
2.10 Projektionen&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.1 Notation&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.2 Orthographische Projektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.10.3 Projektionen im realen Einsatz&amp;lt;br&amp;gt;&lt;br /&gt;
2.11 Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12 Annotationen &amp;lt;br&amp;gt;&lt;br /&gt;
2.12.1 Die Label-Sektion&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.2 Bitmap-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.3 TrueType-Schriften&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.4 Beschriftungen ohne Annotationslayer&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.5 Der Label-Cache&amp;lt;br&amp;gt;&lt;br /&gt;
2.12.6 Hinweise&amp;lt;br&amp;gt;&lt;br /&gt;
2.13 Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.1 TrueType-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.2 Pixmap-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.3 Overlay-Symbole &amp;lt;br&amp;gt;&lt;br /&gt;
2.13.4 Beispiele&amp;lt;br&amp;gt;&lt;br /&gt;
2.14 Maßstäbe &amp;lt;br&amp;gt;&lt;br /&gt;
2.15 Legenden [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
2.15.1 Die klassische MapServer-Legende &amp;lt;br&amp;gt;&lt;br /&gt;
2.15.2 HTML-Legenden &amp;lt;br&amp;gt;&lt;br /&gt;
'''2.15.3 GetLegendGraphics Request''' ( evtl. auch bei WMS 3.2)&amp;lt;br&amp;gt;&lt;br /&gt;
2.16 Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.1 Die verschiedenen Arten von Templates &amp;lt;br&amp;gt;&lt;br /&gt;
2.16.2 Aufbau &amp;lt;br&amp;gt;&lt;br /&gt;
2.17 Metadaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.18 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.1 Notation &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.2 Query maps &amp;lt;br&amp;gt;&lt;br /&gt;
2.18.3 Weitere Arten von Queries &amp;lt;br&amp;gt;&lt;br /&gt;
2.19 PostgreSQL und PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
2.20 OGR &amp;lt;br&amp;gt;&lt;br /&gt;
2.21 Speziﬁkation von Ausgabeformaten &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.1 Rasterbilder &amp;lt;br&amp;gt;&lt;br /&gt;
2.21.2 Vektorformate &amp;lt;br&amp;gt;&lt;br /&gt;
2.22 Features &amp;lt;br&amp;gt;&lt;br /&gt;
2.22.1 Fix positionierte Elemente .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
2.23.1 Parameter einschränken .&amp;lt;br&amp;gt;&lt;br /&gt;
2.23.2 Variablensubstitution &amp;lt;br&amp;gt;&lt;br /&gt;
2.24 Logs (Lars?)&amp;lt;br&amp;gt;&lt;br /&gt;
2.25 Includes &amp;lt;br&amp;gt;&lt;br /&gt;
2.26 Joins '''-NEU-'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_3 | OGC-Konformität ]] [[User:jtmapmedia | Jörg Thomsen]]==&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Warum_macht_man_das.3F | 3.1 OGC - warum macht man das?]] [[User:jtmapmedia | Jörg Thomsen]] ===&lt;br /&gt;
&lt;br /&gt;
=== [[HBUMNMapServer_ger_Capter_3#Wie_macht_man_das.3F | 3.2 OGC - wie macht man das?]] [[User:jtmapmedia | Jörg Thomsen]] ===&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Map Service (WMS) [[User:jtmapmedia | Jörg Thomsen]]=== &lt;br /&gt;
3.3.1 UMN als WMS Server &amp;lt;br&amp;gt;&lt;br /&gt;
* Web Sektion &amp;lt;br&amp;gt;&lt;br /&gt;
* Layer Sektion  &amp;lt;br&amp;gt;&lt;br /&gt;
* GetFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.3.2 UMN als WMS Client &amp;lt;br&amp;gt;&lt;br /&gt;
* Web Sektion &amp;lt;br&amp;gt;&lt;br /&gt;
* Layer Sektion  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.3.3 Verwandte des WMS &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.1 Styled Layer Descriptor (SLD) [[USER:Astrid Emde]]&amp;lt;br&amp;gt;&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.2 Map Context &amp;lt;br&amp;gt;&lt;br /&gt;
* Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
* Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3.3 WMS TIME &amp;lt;br&amp;gt;&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Service (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Alte Gliederung des Kapitels:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.1 OGC - warum macht man das? &amp;lt;br&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
===3.2 Web Mappping Server (WMS) ===&lt;br /&gt;
3.2.1 Servermodi .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.2 Der aufrufende URL &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.3 WMS-Metadaten im Mapﬁle .&amp;lt;br&amp;gt;&lt;br /&gt;
3.2.4 Exceptions &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.5 getFeatureInfo &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3.2.6 WMS Clients&lt;br /&gt;
3.2.7 Exceptions&amp;lt;br&amp;gt;&lt;br /&gt;
'''3.2.8 Styled Layer Descriptor (SLD)''' &amp;lt;br&amp;gt;&lt;br /&gt;
3.2.9 Hinweise &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SLD [[USER:Astrid Emde]]===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sld.html&lt;br /&gt;
&lt;br /&gt;
=== 3.3 Web Feature Server (WFS) ===&lt;br /&gt;
==== 3.3.1 WFS Server ====&lt;br /&gt;
3.3.2 Projektionen in WFS-Servern &amp;lt;br&amp;gt;&lt;br /&gt;
3.3.3 Schemas&amp;lt;br&amp;gt;&lt;br /&gt;
3.3.4 Aufruf &amp;amp; Capabilities &amp;lt;br&amp;gt;&lt;br /&gt;
==== 3.3.5 WFS Client ====&lt;br /&gt;
&lt;br /&gt;
=== 3.4 Map Context ===&lt;br /&gt;
3.4.1 Das Context-Dokument &amp;lt;br&amp;gt;&lt;br /&gt;
3.4.2 Den Kontext verwenden &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filter Encoding [[USER:Astrid Emde]]===&lt;br /&gt;
* http://www.mapserver.org/ogc/filter_encoding.html&lt;br /&gt;
&lt;br /&gt;
=== WCS ===&lt;br /&gt;
* Informationen siehe  http://www.mapserver.org/ogc/wcs_server.html&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wcs_format.html&lt;br /&gt;
&lt;br /&gt;
=== WMS Time ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/wms_time.html&lt;br /&gt;
&lt;br /&gt;
=== SOS ===&lt;br /&gt;
* Informationen siehe http://www.mapserver.org/ogc/sos_server.html&lt;br /&gt;
&lt;br /&gt;
=== OWS Clients [[USER:Astrid Emde]]===&lt;br /&gt;
==== Desktop GIS ====&lt;br /&gt;
==== WebGIS ====&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_4 | Datenbankanbindungen]] (Kai Behncke, Florian Thürkow)==&lt;br /&gt;
4.1 PostgreSQL und PostGIS .&amp;lt;br&amp;gt;&lt;br /&gt;
4.1.1 Shapeﬁles in PostGIS laden &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.2 Notation in Layern &amp;lt;br&amp;gt;&lt;br /&gt;
4.1.3 PostGIS außerhalb des MapServers &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.3 PgRouting (Kai Behncke, Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''4.1.4 Ein paar Worte zu MySQL, Oracle (Spatial) etc.''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_5 | Demos]] ==&lt;br /&gt;
''kann entfallen''&amp;lt;br&amp;gt;&lt;br /&gt;
5.1 Itasca &amp;lt;br&amp;gt;&lt;br /&gt;
5.2 GMap &amp;lt;br&amp;gt;&lt;br /&gt;
5.3 Wesermarsch&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_6 | MapScript]]==&lt;br /&gt;
6.1 PHP MapScript '''(Nicol Hermann)''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.1 Laden des Moduls &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.2 Setzen von Objekt-Eigenschaften .&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.3 Formulareingaben in PHP verarbeiten&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.4 Die mapObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.5 Fehlerbehandlung &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.6 Die layerObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.7 Die classObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.7.1 Dynamische Klassifizierungen ''' &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.8 Die imageObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.9 Die labelObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.10 Die webObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.11 Die referenceMapObj-Klasse&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.12 Die colorObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.13 Die pointObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.14 Die lineObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.15 Die projectionObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.16 Die shapeﬁleObj-Klasse &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.16.1 Dynamisches Erzeugen eines Shape-Files''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17 Die SymbolObj-Klasse''' &amp;lt;br&amp;gt;&lt;br /&gt;
''' 6.1.17.1 Dynamisches Erzeugung von Symbol-Objekten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18 Die ShapeObj Klasse ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.1 Feature-Anlage (Punkt-, Linien, Polygon-Objekte) '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.18.2 Geometrie-Verarbeibung mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
6.1.19 Struktur von PHP MapScript-Seiten &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.20 Speichern von Map-Objekten in PHP-Sessions &amp;lt;br&amp;gt;&lt;br /&gt;
6.1.21 Speicherverwaltung mit MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22 OGC Konformität mit PHP MapScript '''&amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.1 PHP Mapscript als WxS-Server''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.2 Erzeugen und Laden von SLD-Dokumenten''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.22.3 Erzeugen und Laden von WMS Map Context Dokumenten ''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.1.23 Nutzung von PHP Mapscript ohne MapFile'''&amp;lt;br&amp;gt;&lt;br /&gt;
6.2 Weitere Sprachen &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.1 Perl &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.2 Java &amp;lt;br&amp;gt;&lt;br /&gt;
6.2.3 Python &amp;lt;br&amp;gt;&lt;br /&gt;
'''6.2.3 Mapserver goes Web 2.0 - AJAX mit msCross (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== [[HBUMNMapServer_ger_Capter_7 | Zusätzliche Werkzeuge]]==&lt;br /&gt;
7.1 Werkzeuge der Bibliothek Shapelib &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.1 shpdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.2 shpcreate, shpadd, dbfcreate und dbfadd &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.3 dbfdump &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.4 shpinfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.1.5 dbﬁnfo &amp;lt;br&amp;gt;&lt;br /&gt;
7.2 Werkzeuge des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.1 shp2img&amp;lt;br&amp;gt;&lt;br /&gt;
7.2.2 shptree &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.3 shptreevis &amp;lt;br&amp;gt;&lt;br /&gt;
7.2.4 msencrypt &amp;lt;br&amp;gt;&lt;br /&gt;
7.3 Werkzeuge der GDAL/'''OGR'''-Bibliothek &amp;lt;br&amp;gt;&lt;br /&gt;
7.3.1 gdaltindex &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.2 gdalinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.3 ogrinfo''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''7.3.4 FWTools''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===7.4 Erzeugung von MapFiles [[USER:Astrid Emde]]===&lt;br /&gt;
====7.4.1 QGIS ====&lt;br /&gt;
====7.4.1 gvSIG ==== &lt;br /&gt;
====7.4.2 MapStorer ====&lt;br /&gt;
====7.4.3 AVEIN! / AMEIN! ====&lt;br /&gt;
====7.4.4 MapEdit ====&lt;br /&gt;
&lt;br /&gt;
== II Anhang ==&lt;br /&gt;
===A [[HBUMNMapServer_ger_Capter_Referenz | Referenz]] ===&lt;br /&gt;
A.1 Limits &amp;lt;br&amp;gt;&lt;br /&gt;
A.2 Organisation der Daten &amp;lt;br&amp;gt;&lt;br /&gt;
A.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
A.3.1 3.6 nach 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
A.3.2 3.5 nach 3.6&amp;lt;br&amp;gt;&lt;br /&gt;
A.4 PHP MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.1 Konstanten &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.2 Allgemeine Funktionen &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.3 mapObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.4 layerObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.5 classObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.6 styleObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.7 imageObj&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.8 labelObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.9 labelCacheObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.10 webObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.11 referenceMapObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.12 colorObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.13 pointObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.14 lineObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.15 rectObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.16 shapeObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.17 projectionObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.18 shapeﬁleObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.19 resultCacheMemberObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.20 scalebarObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.21 legendObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.22 outputformatObj .&amp;lt;br&amp;gt;&lt;br /&gt;
A.4.23 gridObj &amp;lt;br&amp;gt;&lt;br /&gt;
A.4.24 errorObj &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.25 symbolObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.26 querymapObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.27 owsrequestObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''A.4.28 imageObj''' &amp;lt;br&amp;gt;&lt;br /&gt;
A.5 CGI-Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
A.5.1 Normale Parameter .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.2 CGI-Modus .&amp;lt;br&amp;gt;&lt;br /&gt;
A.5.3 Parameter für Java-Applets &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== B [[HBUMNMapServer_ger_Capter_Bezug | Bezug und Installation]] ==&lt;br /&gt;
*Florian Thürkow, Kai Behncke ''' (Nur als Kapitel im Anhang?, finde ich zu wenig, nh)&lt;br /&gt;
B.1 Bezug &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.1 Vorkompiliert &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.2 Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.3 Änderungen &amp;lt;br&amp;gt;&lt;br /&gt;
B.1.4 CVS . &amp;lt;br&amp;gt;&lt;br /&gt;
B.2 Installation von Binaries &amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1 Binaries für Windows&amp;lt;br&amp;gt;&lt;br /&gt;
B.2.1.1 MS4W&lt;br /&gt;
B.2.1.2 OSGEO4W&lt;br /&gt;
B.2.2 Binaries für Linux&amp;lt;br&amp;gt;&lt;br /&gt;
* FGS Installer&lt;br /&gt;
* RPMs / DEBs&lt;br /&gt;
B.4 Kompilieren der Quelltexte &amp;lt;br&amp;gt;&lt;br /&gt;
'''mit Zusatzinformationen für besondere *Unixe'''&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.2 Proj.4-Unterstüzung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.3 EPPL7-Unterstützung &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.4 Funktionalit¨ at als WMS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.5 Funktionalit¨ at als WMS-Client &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.6 Funktionalit¨ at als WFS-Server &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.7 Funktionalit¨ at als WFS-Client&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.8 Unterstützung für PostGIS &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.9 GDAL und OGR &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.10 Unterstützung für PDF-Output&amp;lt;br&amp;gt;&lt;br /&gt;
B.4.11 Unterstützung für Shockwave Flash &amp;lt;br&amp;gt;&lt;br /&gt;
B.4.12 Kompilieren des MapServers&amp;lt;br&amp;gt;&lt;br /&gt;
B.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.1 Binaries . . &amp;lt;br&amp;gt;&lt;br /&gt;
B.5.2 Aus den Quellen &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==C [[HBUMNMapServer_ger_Capter_Migration | Migration]] 239==&lt;br /&gt;
C.1 Von Version 3.6 nach Version 4.0&amp;lt;br&amp;gt;&lt;br /&gt;
'''raus, Migration 4.x nach 5.x'''&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.1 Geänderte und neue Parameter &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.2 MapServer kompilieren &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.3 Queries &amp;lt;br&amp;gt;&lt;br /&gt;
C.1.4 Diverse Probleme&amp;lt;br&amp;gt;&lt;br /&gt;
C.1.5 MapScript &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== D [[HBUMNMapServer_ger_Capter_Sicherheit | Sicherheit]]==&lt;br /&gt;
D.1 Komprommittierung des MapServer-Rechners &amp;lt;br&amp;gt;&lt;br /&gt;
D.2 Zugänglichkeit der Originaldaten &amp;lt;br&amp;gt;&lt;br /&gt;
D.3 Verschleiern des Mapﬁlenamens &amp;lt;br&amp;gt;&lt;br /&gt;
D.4 MapScript-Anwendungen&amp;lt;br&amp;gt;&lt;br /&gt;
D.5 Die Clientseite: Active Scripting &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==E [[HBUMNMapServer_ger_Capter_Performance | Tips zur Performance]] ==&lt;br /&gt;
E.1 Vermeiden Sie unnötige Funktionalität&amp;lt;br&amp;gt;&lt;br /&gt;
E.2 Nutzen Sie MINSCALE und MAXSCALE &amp;lt;br&amp;gt;&lt;br /&gt;
'''Kann raus - MINSCALEDENOM und MAXSCALEDENOM''' &amp;lt;br&amp;gt;&lt;br /&gt;
E.3 Legen Sie Indizes an &amp;lt;br&amp;gt;&lt;br /&gt;
E.4 Kacheln Sie Ihre Daten &amp;lt;br&amp;gt;&lt;br /&gt;
E.5 Kompression muß verstanden werden &amp;lt;br&amp;gt;&lt;br /&gt;
E.6 Datenbankabfragen .&amp;lt;br&amp;gt;&lt;br /&gt;
E.7 Hardware &amp;lt;br&amp;gt;&lt;br /&gt;
E.8 Schließlich: Zeigen Sie nie alles auf einmal&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Projektionen ==&lt;br /&gt;
=== die EPSG ===&lt;br /&gt;
&lt;br /&gt;
== F [[HBUMNMapServer_ger_Capter_Formate | Unterstützte Formate]]==&lt;br /&gt;
F.1 Lesbare Formate&amp;lt;br&amp;gt;&lt;br /&gt;
F.1.1 GD &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.2 Räumliche Datenbanken &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.3 Rasterformate mit GDAL &amp;lt;br&amp;gt;&lt;br /&gt;
F.1.4 Vektorformate mit OGR &amp;lt;br&amp;gt;&lt;br /&gt;
'''F.1.5 ArcSDE (Florian Thuerkow)''' &amp;lt;br&amp;gt;&lt;br /&gt;
F.2 Schreibbare Formate &amp;lt;br&amp;gt;&lt;br /&gt;
F.3 Nicht unterstützte Formate&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==G [[HBUMNMapServer_ger_Capter_Internet | MapServer im Internet]] ==&lt;br /&gt;
G.1 Website &amp;lt;br&amp;gt;&lt;br /&gt;
G.2 Mailinglisten &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.1 Archiv &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.2 Wiki &amp;lt;br&amp;gt;&lt;br /&gt;
G.2.3 Forum &amp;lt;br&amp;gt;&lt;br /&gt;
G.3 Beispielseiten &amp;lt;br&amp;gt;&lt;br /&gt;
G.3.1 Capabilities XML &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==H [[HBUMNMapServer_ger_Capter_Lizenz | Lizenz der Software]] ==&lt;br /&gt;
H.1 Die Lizenz aus der Datei README &amp;lt;br&amp;gt;&lt;br /&gt;
H.2 Erläuterungen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Inhaltsverzeichnis aus der internationalen Diskussion =&lt;br /&gt;
&lt;br /&gt;
Kurzes Update zum internationalen User Manual (09.04.2008). Jeff McKenna hat gestern ein PDF mit dem ersten Entwurf des Buches veröffentlicht. Der Entwurf umfasst 134 Seiten und ist unter der Adresse: &lt;br /&gt;
http://download.osgeo.org/mapserver/docs/mapserver-users-manual.pdf (1MB)&lt;br /&gt;
einsehbar.&lt;br /&gt;
&lt;br /&gt;
Some comments:&lt;br /&gt;
&lt;br /&gt;
- has gaping holes &amp;lt;br&amp;gt;&lt;br /&gt;
- plan is to use SteveL's demo as part of the missing 'application' section &amp;lt;br&amp;gt;&lt;br /&gt;
- most if not all examples in this doc were manually executed, and in many cases i've updated the associated existing website docs accordingly &amp;lt;br&amp;gt;&lt;br /&gt;
- many more existing website docs will be ported into the Appendix &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
-------&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier die Zusammenfassung zum Thread 'Feedback required: plans for Downloadable Users Manual' auf der mapserver-dev Liste. &lt;br /&gt;
Der Original-Thread findet sich unter:&lt;br /&gt;
http://www.nabble.com/Feedback-required:-plans-for-Downloadable-Users-Manual-td16260533.html&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Vorgeschlagen wurde zunächst folgende Struktur: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table of Contents &amp;lt;br&amp;gt;&lt;br /&gt;
-----------------&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Introduction &amp;lt;br&amp;gt;&lt;br /&gt;
Getting Started &amp;lt;br&amp;gt;&lt;br /&gt;
- Installing &amp;lt;br&amp;gt;&lt;br /&gt;
- Architecture of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
Preparing Data &amp;lt;br&amp;gt;&lt;br /&gt;
- The .Map File &amp;lt;br&amp;gt;&lt;br /&gt;
- Supported Formats &amp;lt;br&amp;gt;&lt;br /&gt;
- Tips and Tricks &amp;lt;br&amp;gt;&lt;br /&gt;
- Factors Affecting Performance &amp;lt;br&amp;gt;&lt;br /&gt;
Building a MapServer Application &amp;lt;br&amp;gt;&lt;br /&gt;
- Flavors &amp;lt;br&amp;gt;&lt;br /&gt;
- Example Code &amp;lt;br&amp;gt;&lt;br /&gt;
Community &amp;lt;br&amp;gt;&lt;br /&gt;
- History of MapServer &amp;lt;br&amp;gt;&lt;br /&gt;
- Project Steering Committee &amp;lt;br&amp;gt;&lt;br /&gt;
- Contributing &amp;lt;br&amp;gt;&lt;br /&gt;
- Getting Help &amp;lt;br&amp;gt;&lt;br /&gt;
- Conferences/Workshops&lt;br /&gt;
Glossary &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als inhaltliche Ergänzungen wurden dann noch folgende Punkte vorgeschlagen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
- client software (ka-map!, OpenLayers, GeoMoose, PMapper, etc.) &amp;lt;br&amp;gt;&lt;br /&gt;
- map file management software (MapStorer, any others)&amp;lt;br&amp;gt;&lt;br /&gt;
- including copies of all HOWTOs and references in the appendices? &amp;lt;br&amp;gt;&lt;br /&gt;
- configuration of an application and data.&amp;lt;br&amp;gt;&lt;br /&gt;
- include a complete production sample mapfile like Bob Basques Googlish mapfile &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:UMN MapServer Handbuch]]&lt;/div&gt;</summary>
		<author><name>Wiki-Jtmapmedia</name></author>
	</entry>
</feed>