Göttingen/Luftbilder

From OpenStreetMap Wiki
Jump to navigation Jump to search

Aufbereiten der Luftbilder

Die Luftbilder liegen im Gauss-Krüger-3 als ECW Datei vor und sollen später als Mercator (EPSG:3857) Tiles zur Verfügung stehen.

Vorbereitung

  • evtl.
export LD_LIBRARY_PATH=/usr/local/lib
  • ECW Support für gdal einrichten und testen
gdalinfo --formats | grep ECW
muss dies liefern:
ECW (rw): ERDAS Compressed Wavelets (SDK 3.x)
JP2ECW (rw+v): ERDAS JPEG2000 (SDK 3.x)
  • Korrekturdatei BETA2007 herunterladen und überprüfen
wget http://crs.bkg.bund.de/crseu/crs/descrtrans/BeTA/BETA2007.gsb
zum überprüfen ob das richtig klapp kann man sich dieses vorgangs bemühen
cs2cs -f %.9f +init=epsg:4326 +to +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +nadgrids=BETA2007.gsb <(echo 7.2087145 50.7963612)
cs2cs -f %.9f +init=epsg:4326 +to +proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +nadgrids=falscherPfadBETA2007.gsb <(echo 7.2087145 50.7963612)
wenn bei beiden Befehlen das gleiche raus kommt, wird die Korrekturdatei nicht gefunden. Das erste sollte eigentlich die Datei benutzen und ein anderes Ergebnis liefern als der zweite Befehl, der die Datei gar nicht finden kann.

Umprojizieren

Um die Datei von Gauss-Krüger-3 im ECW Format nach Mercator im IMG Format zu wandeln wird gdalwarp folgendermaßen verwendet:

gdalwarp -s_srs '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +nadgrids=BETA2007.gsb' -t_srs '+init=epsg:3857 +wktext' -r cubic -multi -of HFA gk3.ecw merc.img

Der Parameter -r cubic bewirkt ein bessere Bilddarstellung als der Default Wert, theoretisch wäre auch -r lanczos möglich, das ist aber erheblich langsamer und liefert zumindest in unserem Fall kein sichtbar besseres Bild. Der Parameter -s_srs Muss je nach Ausgangsdatei angepasst werden und gilt nicht für automatisch für alle Bilder, vor allem nicht wenn diese in einer anderen Projektion vorliegen.

Es lässt sich dann überprüfen ob die Befehle

gdalinfo gk3.ecw
gdalinfo merc.img

Den annähernd gleichen Eintrag bei Center in geographischen Koordinaten haben (Lat/Lon).

Tiles produzieren

gdal2tiles.py -s EPSG:3857 -p mercator -z 8-18 -w none -n -r lanczos merc.img tiles/
gdal2tiles.py -s EPSG:3857 -p mercator -z 19-20 -w none -n -r cubic merc.img tiles/

Achtung! gdal2tiles erzeugt Tiles nach dem TMS (OGC) Schema für Josm, Potlach etc. werden die Tiles aber im Format von Google benötigt! Siehe hierzu auch die Info bei MapTiler

Das folgende Skript nimmt die im TMS (OGC) Format erzeugten Tiles wandelt die Y Werte so um, dass sie mit dem Google Schema übereinstimmen und fügt ein Wasserzeichen auf jeder Kachel hinzu. Es werden neue Dateien angelegt, der TMS bleibt vollständig erhalten.

#!/bin/bash

#Copyright Text, der auf die einzelnen Kacheln kommt
text="OSM 2010 - © AEROWEST"

#Pfad in den die fertigen Tiles geschrieben werden
p="/srv/www/htdocs/Aerowest/goettingen/mercator/tiles"

#Pfad mit den Quell TMS Tiles von gdal2tiles.py
pp="/srv/osm/Aerowest/tiles/"


convert -size 256x256 xc:grey30  -pointsize 15 -gravity center \
          -draw "fill grey90  text 0,0  '$text'" \
          stamp_fgnd.png
convert -size 256x256 xc:black  -pointsize 15 -gravity center \
         -draw "fill white  text  1,1  '$text'  \
         text  0,0  '$text'  \
         fill black  text -1,-1 '$text'" \
         +matte stamp_mask.png
composite -compose CopyOpacity  stamp_mask.png  stamp_fgnd.png  stamp.png

mogrify -trim +repage stamp.png


find  $pp -name "*.png" | 
   sed -e "s;${pp};;" | while read l ;

do 
  echo .......................
  

  z=`echo $l | cut -d "/" -f1`
  x=`echo $l | cut -d "/" -f2`
  y=`echo $l | cut -d "/" -f3`

  #calc google Y from tms Y
  y_tms=$(basename $y .png)
  y_g=$(echo "(2 ^ ${z} - 1) - ${y_tms}"|bc)

  echo $l
  echo $p $z $x $y $y_g

  mkdir -p "$p/$z/$x"
  #
  #convert -pointsize 12 -fill white -draw "text 0, 10 '$text'"  $pp/$l $p/$z/$x/$y
  composite -gravity south -geometry +0+10 stamp.png   $pp/$l $p/$z/$x/$y_g.png

done