DE:Installation und Verwendung von MapServer für Aerowest Luftbilder

From OpenStreetMap Wiki
Jump to navigation Jump to search

Einleitung

Dies Anleitung beschreibt die lokale Einrichtung eines WMS-Dienstes für die Luftbilder von Aerowest und dessen Verwendung mit JOSM unter Windows und Debian (und Derivate, wie z.B. Ubuntu).

Um die Anleitung möglichst einfach zu halten, beschreibt diese nur die nötigen Schritte und geht nicht auf Anforderungen ein, die an einen öffentlich verfügbaren WMS-Dienst (das Veröffentlichen der Aerowest-Bilder ist vermutlich ohne explizite Erlaubnis sowieso verboten) zu stellen sind, wie etwa Performance und Sicherheit.

Behandelt also u.a. nicht die Erstellung von Auflösungspyramiden, Umwandlung in GeoTiffs und Tiling.
Es erfolgt keine Vorverarbeitung der Bilder um später Rechenzeit zu sparen, die Umprojektion und das Zusammenfügen der Bilder übernimmt hier direkt MapServer.
Dies spart Speicherplatz, erfordert dafür aber mehr Rechenzeit zum Ausliefern der Bilder.

Debian und Derivate, openSUSE

Verwendet wird MapServer, Apache und GDAL.


  1. Georeferenzierte Luftbilder von Aerowest herunterladen.
    Diese werden als ZIP-Dateien angeboten, in diesen ZIP-Dateien befinden sich jeweils eine JPEG- und die dazugehörige JGW-Datei.
    In der JGW-Datei befinden sich die passenden Georeferenzinformationen zu diesem JPEG-Bild.
    Beim Herunterladen der Bilder, wird im ECW-Viewer unten rechts der EPSG-Wert (dieser liegt im Bereich von 31466-31469) angezeigt.
    Dieser Wert wird nachfolgend für das Mapfile des MapServers benötigt.

    Wird ein Maßstab von 1:500 gewählt, sind auch Details erkennbar.
    Kommt es nicht so sehr auf Details an, reicht auch ein Maßstab von 1:1000 aus.

  2. MapServer, GDAL und Apache installieren:
    Debian/Ubuntu: apt-get install mapserver-bin cgi-mapserver gdal-bin apache2
    openSUSE: zypper in mapserver gdal proj

  3. Optional ein Verzeichnis für die MapServer-Dateien anlegen, in diesem Verzeichnis können die Konfiguration und die Bilder abgelegt werden.
    In dieser Anleitung wird das Verzeichniss "/mapserver" verwendet.

  4. Die heruntergeladenen ZIP-Dateien werden z.B. in das (evtl. anzulegende Verzeichnis) "/mapserver/data" (nachfolgend Datenverzeichnis genannt) entpackt, in diesem Verzeichnis befinden sich also die jpg- und jgw-Dateien.

  5. Einen Shapefile-Index erstellen, hierzu in das Datenverzeichnis wechseln
    cd /mapserver/data
    und dort folgenden Befehl ausführen:
    gdaltindex -write_absolute_path bilder.shp *.jpg

    Sollten nachträglich weitere Bilder hinzugefügt werden, so muss dieser Index mit dem selben Befehl neu erstellt werden.

  6. Ein Mapfile anlegen (siehe unten), als Dateiname wird hier "/mapserver/osm.map" gewählt.
    Der EPSG-Wert (hier ist bisher der Platzhalter 3146x eingetragen) aus 1.) muss in Zeile 8 eingetragen werden.
    Wichtig sind die BeTA2007-Daten, das sind Korrekturdaten, welche eine genaue Projektion der Bilder gewährleisten sollen.
    Diese Datei wird hier unter "/mapserver/BETA2007.gsb" abgelegt und kann z.B. von hier heruntergeladen werden:
    http://crs.bkg.bund.de/crseu/crs/descrtrans/BeTA/BETA2007.gsb

  7. Bei JOSM folgende Einstellungen vornehmen:
    "Merkator" unter "Bearbeiten -> Einstellungen -> Karten-Einstellungen -> Projektionsmethode" einstellen.
    Zum Kartenerstellen sollte die Merkator-Projektion verwendet werden, da hier Winkel nicht verzerrt dargestellt werden.

    Bildebene hinzufügen
    Unter "Bearbeiten -> Einstellungen -> WMS/TMS" einen neuen Bilddienst hinzufügen.
    Als "Service-URL" wird eingetragen:
    http://127.0.0.1/cgi-bin/mapserv?map=/mapserver/osm.map&

    Nach einem Linksklick auf "Ebenen abfragen" wird die im Mapfile angegebene Ebenen "Luftbilder meiner Musterstadt" angezeigt, diese ist auszuwählen, woraufhin die "Bilddienst-URL" angezeigt wird, jetzt noch mit "OK" bestätigen. Siehe rechtes Bildschirmfoto.

  8. Optional können jederzeit (z.B. nach Punkt 5) für die JPEG-Bilder jeweils Auflösungspyramiden (ovr-Dateien) erzeugt werden:
    for i in *.jpg; do
    if ! [ -e "$i.ovr" ]; then
    gdaladdo --config GDAL_CACHEMAX 200 --config COMPRESS_OVERVIEW JPEG --config PHOTOMETRIC_OVERVIEW YCBCR --config INTERLEAVE_OVERVIEW PIXEL --config JPEG_QUALITY_OVERVIEW 80 -ro "$i" 2 4 6 8 16 32 64 128 256
    else echo "$i.ovr existiert schon"
    fi
    done

    Dies hat den Vorteil, dass MapServer die kleineren Zoomstufen deutlich schneller berechnen kann.
    Nachteilig hingegen ist der erhöhte Speicherplatzbedarf (ca. 50% zusätzlich).
    Sollten nachträglich weitere Bilder hinzugefügt werden, so muss dieser Befehl nochmals ausgeführt werden, damit die fehlenden ovr-Dateien hinzugefügt werden. Schon vorhandene ovr-Dateien werden hierbei nicht verändert oder neu erstellt.
    Siehe auch hier.



Windows

Als Ergänzung zur obenstehenden Anleitung, sollen hier die Windows spezifischen Schritte aufgeführt werden. Ansonsten sollte die obenstehende Anleitung ausgeführt werden. So durchgeführt unter Windows XP mit ms4w_3.0.3.zip.

Hier gibt es außerdem ein Flash-Tutorial für Windows XP, welches die einzelnen Schritte nochmals zeigt:
http://osmtools.de/tutorials/wms/wms.htm

  • Zu 2. (MS4W installieren)
  • Zu 3. (mapserver-Verzeichnis)
    • Als Verzeichnis z.B. F:\mapserver verwenden (ggf. anpassen)
  • Zu 4. (Datenverzeichnis)
    • Als Datenverzeichnis z.B. F:\mapserver\data verwenden (ggf. anpassen)
  • Zu 5. (gdaltindex ausführen)
    • Eine Kommandozeile öffnen und /ms4w/setenv.bat ausführen, um in dieser Session die PATH-Variable um einige MS4W Ordner zu erweitern. Natürlich kann man den PATH auch dauerhaft verändern. Einfach /ms4w/tools/gdal-ogr/gdaltindex.exe direkt auszuführen reicht nicht, da z.B auch /ms4w/Apache/cgi-bin/gdal18.dll benötigt wird.
    • Dann wie beschrieben in den richtigen Ordner wechseln und den Befehl ausführen.
    • Alternativ im gleichen Ordner eine Textdatei erstellen und in z.B. run_gdaltindex.bat umbenennen und mit folgendem Code füllen:
      @call "F:\ms4w\setenv.bat"
      gdaltindex -write_absolute_path bilder.shp *.jpg
      pause
    • Dabei in der Datei den Laufwerksbuchstaben "F" ggf. gegen das Laufwerk austauschen, auf dem MS4W liegt.
  • Zu 6. (Mapfile anlegen)
    • Im Mapfile (Zeile 15) muss bei "mapserv" ein ".exe" angehängt werden, dabei nicht vergessen, den Pfad zum mapserver-Verzeichnis anzupassen:
      http://127.0.0.1/cgi-bin/mapserv.exe?map=F:/mapserver/osm.map&
    • Im Mapfile überall, wo der Unix-Pfad /mapserver/ steht, dies durch den Windows-Pfad (siehe Punkt 3) ersetzen, statt "\" dabei aber "/" verwenden (Zeilen 9, 15, 32). Beispiel:
      "nadgrids=F:/mapserver/BETA2007.gsb"
  • Zu 7. (Service URL)
    • Unter Windows muss die Service-URL ebenfalls das ".exe" enthalten, der mapserver-Pfad muss auch angepasst sein:
      http://127.0.0.1/cgi-bin/mapserv.exe?map=F:/mapserver/osm.map&

Mapfile

MAP
   NAME    "AerowestOSM"
   STATUS    ON
   UNITS    METERS
PROJECTION # passenden EPSG-Wert eintragen, also das "x" ersetzen # Der Wert ist für den genwünschten Bereich ganz unten auf der Aerowestseite zu finden. "init=epsg:3146x" "nadgrids=/mapserver/BETA2007.gsb" END
WEB METADATA "wms_title" "Aerowest Luftbilder für OSM" "wms_onlineresource" "http://127.0.0.1/cgi-bin/mapserv?map=/mapserver/osm.map&" "wms_srs" "EPSG:4326" "ows_enable_request" "*" END END
LAYER STATUS ON NAME "Luftbilder_Musterstadt"
METADATA "wms_title" "Luftbilder meiner Musterstadt" "wms_srs" "EPSG:4326" END
TILEITEM "location" # Speicherort der JPEG-Bilder, JGW-Dateien und der Index-Dateien TILEINDEX "/mapserver/data/bilder.shp" TYPE RASTER END END