Lesen und Schreiben von XML-Mapfiles mit Java

Seit Version 6.0 unterstützt der UMN MapServer neben den klassischen Mapfiles zusätzlich XML-Mapfiles. Durch das vorhandene XML-Schema können diese einfach validiert werden. Des Weiteren soll hierdurch die Erstellung von Drittsoftware (z. B. Mapfile-Editoren) erleichtert werden.

Für das einfache Lesen und Schreiben von XML-Mapfiles habe ich das Projekt Java Mapfile auf GitHub erstellt. Die Funktionsweise wird auf der Projektseite dokumentiert.

Im Folgenden noch ein Beispiel für eine XML-Mapfile und den korrespondierenden CGI-Wrapper.

Beispiel für XML-Mapfile

Hinweis: Die Reihenfolge der Elemente wird beim Export über Java Mapfile alphabetisch angeordnet.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Map xmlns="http://www.mapserver.org/mapserver" name="OGC:WMS" version="7.0.0">
    <extent>4264375.0 5216375.0 4670625.0 5622625.0</extent>
    <Layer name="gemeinden" type="POLYGON" status="ON">
        <Class name="Polygon">
            <color red="232" green="232" blue="232"/>
            <outlineColor red="32" green="32" blue="32"/>
        </Class>
        <data>/home/wei/linux-geodatenserver-beispiele/vektordaten/verwaltungsgrenzen/gmd_ex.shp</data>
        <Metadata>
            <item name="wms_title">Gemeinden</item>
            <item name="wms_abstract">Gemeinden in Bayern</item>
        </Metadata>
        <projection>init=epsg:31468</projection>
    </Layer>
    <OutputFormat name="png">
        <driver>AGG/PNG</driver>
        <extension>png</extension>
        <imageMode>RGB</imageMode>
        <mimeType>image/png</mimeType>
    </OutputFormat>
    <projection>init=epsg:31468</projection>
    <Web>
        <Metadata>
            <item name="wms_title">Java XML-Mapfile Demoserver</item>
            <item name="wms_onlineresource">http://geoserv.weichand.de/cgi-bin/test-xmlmapfile.cgi</item>
            <item name="wms_enable_request">*</item>
            <item name="wms_srs">EPSG:31468 EPSG:31467 EPSG:4326 EPSG:4258 EPSG:25832 EPSG:25833</item>
            <item name="wms_encoding">UTF-8</item>
        </Metadata>
    </Web>
</Map>

Beispiel für CGI-Wrapper

Bei jedem Aufruf wird die XML-Mapfile über XSLT in eine klassische Mapfile übersetzt. Daher muss neben der Umgebungsvariable MS_MAPFILE noch zusätzlich die Umgebungsvariable MS_XMLMAPFILE_XSLT gesetzt werden.

#!/bin/sh
MAPSERV="/usr/lib/cgi-bin/mapserv"
MS_XMLMAPFILE_XSLT="/path/to/mapfile.xsl" MS_MAPFILE="/path/to/javamapfile.xml" exec ${MAPSERV}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *