GDAL Tools (Rastermanipulationen)

Tips und Tricks mit GDAL-Tools

Rasterbild ausschneiden

gdal_translate -of GTiff -a_srs EPSG:21781
-projwin 694400 246700 698700 243500
alte_datei.tif neue_ausgeschnittene_datei.tif

Intergraph CIT-Files nach Geotif konvertieren

gdal_translate -of GTiff -a_srs EPSG:21781 -a_nodata 0
-co 'TFW=YES -co 'COMPRESS=PACKBITS' -co 'NBITS=1' a01.cit a01.tif

Packbits-Komprimierung empfiehlt sich für Raster mit grossen homogenen Flächen. Es lässt sich auch sehr schnell dekomprimieren und ist eine verlustfreie Komprimierung. -a_nodata 0 setzt den Wert 0 auf nodata (transparent). -co 'NBITS=1' zeigt, dass es sich um 1-bit Daten (0 oder 1) handelt.

Projektion und Metadaten zuweisen

gdal_translate -of GTIFF -mo "Datenstand=2008"
-mo "Hersteller=Osterwalder u. Lehmann/Flotron"
-mo "Layername=Orthofoto 2008-05-03" -co "TILED=YES"
-a_srs 'EPSG:21781' ortho.tif orthofoto_2008_1.tif

Mit dem -mo Flag kann man beliebige selbst definierte Schlüssel-Wertpaare definieren, mit -co kann man format-spezifische Optionen setzen. Siehe auch Format-Liste von GDAL und insbesondere die TIFF-Optionen.

Offset (Translation) einem GeoTiff-Rasterbild zuweisen

Nachdem ein Orthofoto von LV95 nach LV03 umprojiziert wurde, war es immer noch einen Meter in Ost-West und 25cm in Nord-Süd gegenüber den AV-Daten in LV03 verschoben. Der Shift war systematisch über das ganze Bild. Nachdem der Fehler bei der Umprojizierung mit gdal_warp nicht gefunden wurde (der gleiche Fehler trat übrigens bei einer Umprojizierung mit dem Swisstopo Reframe FME-Plugin auf), wurde nach einer Lösung für einen globale Translation des GeoTiffs gesucht. Nachdem die Metadaten im GeoTiff-File im File-Header stehen, und nicht in einem separaten text-basierten .tfw oder .wld-File, wurde nach einem Tool gesucht die Tif-Metadaten zu bearbeiten ohne das File umrechnen zu müssen. Mit gdal_edit.py (enthalten in den Python samples von gdal 1.9) wurden wir fündig. Hier das Kommando um die Eckkoordinaten im GeoTiff-File zu überschreiben:

gdal_edit.py -a_ullr 688999 252000.25 702999 241000.25 orthofoto_2010.tif

Dabei werden die Koordinaten der linken oberen Ecke und der rechten unteren Ecke überschrieben. Dabei muss natürlich die Translation (der Offset/der Shift) mit einberechnet werden. Das Werkzeug "gdal_edit.py" kann übrigens im Gdal-Source unter swig/python/samples gefunden werden.

Resampling

gdalwarp -co 'TILED=YES' -of GTiff -s_srs EPSG:21781 -t_srs EPSG:21781
-r lanczos -tr 2 2 orthofoto_2008.tif orthofoto_2008_2m_tiled.tif

Mit -tr 2 2 wird die geometrische Auflösung auf 2 map units (in der Regel m) gesetzt. Mit "-dstnodata '0,0,0'" könnte man schwarze Pixel (RGB) auf nodata setzen. Diese werden in manchen Programmen als transparent dargestellt. Es stehen die folgenden Resampling-Methoden zur Verfügung:

  • near: nearest neighbour resampling (default, fastest algorithm, worst interpolation quality).
  • bilinear: bilinear resampling (gut für "aufblasen" feinere Auflösung als Ursprung).
  • cubic: cubic resampling. (gut für Reduktion)
  • cubicspline: cubic spline resampling.
  • lanczos: Lanczos windowed sinc resampling (langsam, gut Qualität)

Rasterkacheln zusammenfassen mit gdal_merge

gdal_merge.py -o orthofoto_2008_0_3m_tiled.tif -co 'TILED=YES' -n 0
-of GTIFF Orthophoto_2008/3x/*.tif

Bei zu erwarteten Dateigrössen der Ausgabedatei von >4GB muss die Option "-co 'BIGTIFF=YES'" verwendet werden. Wenn man invertierte Rasterdateien (bei 1bit-Dateien) erhält kann man die Optionen "-n 0" und "-init 255" kombinieren.

Pyramiden (Overviews) berechnen für schnellen Dateizugriff

gdaladdo -r cubic orthofoto.tiff 2 4 8 16 32 64 128 256 512 1024

Bei TIFF-Dateien können die Pyramiden in der TIFF-Datei intern abgelegt werden, bei allen anderen Dateien werden externe overview-Dateien angelegt (meist Endung .aux). Es stehen verschiedene resampling-Algorithmen zur Verfügung. Für Luftbilder empfiehlt sich derzeit "average" für Strichgrafiken mit hohen Kontrasten empfiehlt sich "gauss". Siehe auch gdaladdo Dokumentation. Die Levels sind Teiler. Wenn das Bild eine Kantenlänge von 56000 x 40000 Pixel hat, dann bedeutet der level 32, dass ein Overview mit 1750 x 1250 entsteht. Man sollte die level nur so tief hinunterbrechen dass Kantenlängen von ca. 1000 x 1000 entstehen.

Pyramiden für Luftbilder mit JPEG-Komprimierung

gdaladdo -r cubic --config COMPRESS_OVERVIEW JPEG --config BIGTIFF_OVERVIEW YES --config JPEG_QUALITY 85
--config PHOTOMETRIC_OVERVIEW YCBCR --config INTERLEAVE_OVERVIEW PIXEL orthofoto_jpeg_2006.tif 2 4 8 16 32

In diesem Fall werden Pyramiden gerechnet mit JPEG-Komprimierung und den entsprechenden Parametern.

JPEG-Komprimierung (z.B. für Luftbilder oder Schattierungen)

gdal_translate -of GTIFF -co COMPRESS=JPEG -co JPEG_QUALITY=85 -co PHOTOMETRIC=YCBCR
-co TILED=YES -mo 'Hersteller=Swisstopo' -mo 'Layername=Orthofoto 2006'
-a_srs EPSG:21781 -mo Datenstand=2006 orthofoto.tif orthofoto_2006.tif

Mit 'Compress=JPEG' wird die Komprimierungsart angegeben. Mit 'JPEG_QUALITY=85' wird die Stärke der JPEG-Komprimierung angegeben zwischen 0 (ganz schlecht, sehr stark komprimiert) und 100 (ganz gut, kaum komprimiert). In jedem Fall ist JPEG eine verlustbehaftete Komprimierung. Man kann auch bei gdaladdo die Komprimierung mit JPEG innerhalb der Pyramiden erzwingen.

PDF-Dateien mit Ghostscript rasterisieren

gs -sDEVICE=tiffgray -dBATCH -dNOPAUSE -dFirstPage=1 -dLastPage=1 -r600
-sOutputFile=temp_sued.tif Uster_1961_Sued.pdf

r definiert die Auflösung, -sDEVICE erlaubt eine Reihe von Zielformaten und Farbtiefen/Komprimierungen.

ASCIIGRID mit Geländemodelldaten in 16bit TIFF-File konvertieren

gdal_translate -of GTIFF -ot Float32 -co COMPRESS=DEFLATE -mo "Hersteller=Swisstopo" -mo "Layername=DTM AV 2002" dtm_av.txt dtm_av.tif

Danach können mit gdaldaddo Pyramiden berechnet werden.

Artikelaktionen
Sitemap AGB Impressum