Beispielkarten mit Reliefs aus SRTM-Daten

Bearbeiten

Vorüberlegungen

Bearbeiten

Bevor es ans Werk geht, sollte man sich für die Karte genau die Projektion und den Begrenzungsrahmen überlegen. Nichts ist deprimierender, als nach der ganzen Bastelei festzustellen, dass man den Kartenausschnitt zu klein gewählt hat und man mit dem Relief nochmal von vorn beginnen kann.

Den wohlüberlegten Kartenausschnitt sollte man noch etwa um 10% vergrößern. Aus zwei Gründen: 1) falls einem später einfällt die Karte doch etwas größer zu machen, hat man so noch etwas Rand übrig und 2) die Schummerung ist an den Rändern wegen fehlender Daten (für die Berechnung des Lichteinfalls) unbrauchbar - vor allem mit der Aufpump-Technik (dazu später mehr).

Die Grenzen von SRTM-Höhendaten

Bearbeiten

Bei der Verwendung von Geodaten muß man sich zunächst immer fragen: wie genau sind die Daten, welche Auflösung haben sie und welche Karten kann ich daraus in welchem Maßstab herstellen.

Die horizontale Auflösung der SRTM3-Daten ist 3 Bogensekunden (90 m). Dh für zum Beispiel diese Los Angeles-Karte mit einer Kantenlänge von ca 1,5° erhält man ein Relief mit einer Auflösung von 1800x1800 Pixeln - das ist also noch OK. Viel kleiner sollte das darzustellende Gebiet jedoch nicht sein.

Die vertikale Genauigkeit beträgt etwa 10 m - dies ist unter anderem auch von Bewaldung oder Häusern abhängig, die die Radarmessung verfälschen. Für Überflutungsmodelle bei denen es um ein paar Dezimetern geht, ist SRTM also eher ungeeignet.

Die passenden Werkzeuge (Must have)

Bearbeiten

Folgende freie Software-Tools sind für die Verarbeitung von SRTM-Höhendaten nützlich:

  • GDAL (Download) - eine Programmbibliothek mit der man unter anderem verschiedenste Rasterdatenformate ineinander umwandeln und in alternative Projektionen überführen kann. Vor dem Aufruf der einzelnen Tools unter Windows SDKShell.bat ausführen, damit alles gefunden wird.
  • GMT (Download) - eine Sammlung von Kartenkonstruktionsprogrammen.
  • GIMP (Download) - zur Bildbearbeitung, oder (mE besser, aber leider nicht Freeware :)) Adobe Photoshop
  • Ghostscript ([1]) für die Umwandlung von Postscript in PNG (ps2raster.exe)

SRTM-Daten downloaden und zusammensetzen

Bearbeiten

Die Ausgangsdaten kann man von dieser Seite downloaden: http://dds.cr.usgs.gov/srtm/version2_1/

Das dort erhältiche Dateiformat ist HGT. Dieses exotische Dateiformat wird leider von kaum einer GIS-, Karten- oder Bildverarbeitungssoftware direkt verstanden. Daher muss man es zunächst in ein verwendbares Format umwandeln.

Aufbereitete SRTM-Daten im GeoTIFF-Format sind hier erhältlich: http://www.landcover.org/data/srtm/

Folgende Datensätze stehen dabei zur Auswahl:

  • SRTM1 - besitzt eine Auflösung von 1 Gradsekunden bzw. 30 m - nur für US-Gebiete vorhanden
  • SRTM3 - besitzt eine Auflösung von 3 Gradsekunden bzw. 90 m und beinhaltet nur Landhöhen zwischen 60°N und 60°S
  • SRTM30 - besitzt eine gröbere Auflösung von 30 Gradsekunden bzw. 0,9 km

Je nach Maßstab der anzufertigenden Karte gilt es also zwischen SRTM3 und SRTM30 zu wählen.

Ein kombinierter Datensatz mit Höhen und Meerestiefen für die gesamte Erde ist der ETOPO1-Datensatz mit einer etwas geringeren Auflösung von 1 Bogenminute: http://www.ngdc.noaa.gov/mgg/global/global.html

Weiterverarbeitung mit GDAL

Bearbeiten

Der einfachste und flexibelste Weg, solche GIS-spezifischen Rasterdatenformate ineinander zu überführen ist mit den GDAL-Befehlen gdal_translate und gdalwarp.

Mit gdalwarp lassen sich mehrere Einzeldateien sehr einfach zu einem Mosaik zusammenfassen. Mit gdal_translate kann die HGT-Datei dann in eine für GMT verständliche GRD-Datei umgewandelt werden

gdalwarp -srcnodata "-32768" -dstnodata "-32768" *.hgt mosaik.hgt
gdal_translate -of GMT  mosaik.hgt mosaik.grd

Achtung: nach dieser Prozedur haben alle Pixel mit NULL-Werten den Wert -32768.

Weiterverarbeitung mit GMT

Bearbeiten

Für die Weiterverarbeitung in GMT bietet sich der GMT-Befehl xyz2grd an, der aus der HGT-Datei eine GRD-Datei macht.

xyz2grd N47E009.hgt -R9/10/47/48 -I3c -N-32768 -ZTLhw -GN47E009.grd

Da die SRTM3-Daten in Kacheln von jeweils einer Bogenminute (bzw 1201x1201 Pixeln) aufgeteilt sind muss man idR mehrere Dateien downloaden, umwandeln und schließlich zu einem Mosaik zusammensetzen. Das Zusammensetzen geht zB mit dem GMT-Befehl grdpaste.

grdpaste N48E009.grd N49E009.grd -GN48_49E009.grd
grdpaste N48E010.grd N49E010.grd -GN48_49E010.grd
grdpaste N48E011.grd N49E011.grd -GN48_49E011.grd
grdpaste N48_49E009.grd N48_49E010.grd -GN48_49E009_010.grd
grdpaste N48_49E009_010.grd N48_49E011.grd -GN48_49E009_011.grd

  Tutorial: Eine für GMT verwendbare GRD-Datei aus mehreren GeoTIFF-Dateien erzeugen.

1. SRTM-Daten im GeoTIFF-Format downloaden:

ftp://ftp.glcf.umd.edu/glcf/SRTM/Degree_Tiles/n004/SRTM_ff03_n004w074/SRTM_ff03_n004w074.tif.gz
ftp://ftp.glcf.umd.edu/glcf/SRTM/Degree_Tiles/n004/SRTM_ff03_n004w075/SRTM_ff03_n004w075.tif.gz
ftp://ftp.glcf.umd.edu/glcf/SRTM/Degree_Tiles/n005/SRTM_ff03_n005w074/SRTM_ff03_n005w074.tif.gz
ftp://ftp.glcf.umd.edu/glcf/SRTM/Degree_Tiles/n005/SRTM_ff03_n005w075/SRTM_ff03_n005w075.tif.gz
Hinweis: das Kürzel "ff03" steht für "filled finished" - das sind SRTM-Daten, bei denen Fehlstellen bereits repariert sind. Bitte auf den Namenbestandteil ff03 achten, im übergeordeneten Ordner sind auch Verzeichnisse mit f03, dort sind die Fehlstellen nicht korrigiert, sondern nur auf null gestzt.

2. Die 4 einzelnen Kacheln zu einer Datei zusammenfügen (mit GDAL):

>gdalwarp *.tif riobogota.tif
Achtung: In dem Verzeichnis, in dem dieser Befehl ausgeführt wird, dürfen sich außer den gewünschten Kacheln keine weiteren TIF-Dateien befinden, sonst werden diese ebenfalls in das Mosaik mit eingebunden - wodurch das Ergebnis idR unbrauchbar wird. D.h. wenn man diesen Befehl wiederholen möchte, muss vorher die Datei "riobogota.tif" gelöscht werden.

3. Die GeoTIFF-Datei in ein für GMT lesbares Format umwandeln:

>gdal_translate -of GMT riobogota.tif riobogota.grd

Schummerung mit Bildbearbeitungsprogrammen erzeugen

Bearbeiten
 
Reliefdarstellung

Vorarbeit: ein Graustufenbild erzeugen

Bearbeiten

Eine Relief-Darstellung oder Schummerung lässt sich aus Höhendaten mit diversen Tools oder GIS-Softwarepakten erstellen. Auch GMT bietet hierfür Funktionen - dies ist auf der allgemeinen GMT-Hilfeseite beschrieben.

Einen etwas flexiblerer Weg mit umfangreichen Manipulationsmöglichkeiten bieten dagegen Bildbearbeitungsprogramme wie Adobe Photoshop oder GIMP. Dort gibt es spezielle Funktionen bzw Filter, die solche Reliefs aus Schattenwurf-Berechnungen erstellen können. Der Nachteil dieser Methode ist, dass wenn man an dem Relief "per Hand" arbeitet, das jeweilige Resultat nicht 100% reproduzierbar ist; was besonders bei Kartenserien problematisch sein kann, wo alle Karten gleich aussehen sollen.

Ausgangspunkt für die Anfertigung eines Reliefs mit Photoshop oder GIMP ist ein Graustufenbild mit hoch=hell und tief=dunkel. Solch ein Graustufenbild lässt sich relativ einfach mit GMT und dem Befehl grdimage herstellen. Man benötigt dazu die aus dem vorigen Kapitel erwähnte GRD-Datei und eine Farbpalettendatei, in der die Höhenagaben mit Farbwerte verknüpft werden.

Die maximale Höhe für den Farbwert Weiß (255 255 255), sollte dem jeweiligen Gelände angepasst sein. Die Minimum- und Maximum-Werte einer beliebigen Höhendatei kann man mit dem GDAL-Befehl gdalinfo ermitteln (siehe folgendes Tutorial).

Falls die Karte nur sehr flache Gebiete (etwa <200 Meter) beinhaltet, sollte man den Höchstwert trotzdem etwas höher ansetzen (etwa bei 1000-2000 Meter). Sonst sehen hinterher im Relief die kleinsten Hügel wie der Mount Everest aus.

 
Graustufenbild

  Tutorial: Ein Graustufenbild mit GMT erzeugen

1. Die Maximalhöhe innerhalb des SRTM-Datensatzen bestimmen

>gdalinfo -mm riobogota.tif

Ergibt eine Ausgabe ähnlich der folgenden:

Driver: GTiff/GeoTIFF
Files: riobogota.tif
Size is 2401, 2401
...
Band 1 Block=2401x1 Type=Int16, ColorInterp=Gray
    Computed Min/Max=119.000,4152.000

Die maximale Höhe in dieser Datei beträgt also 4152 m.

2. Mit dieser Information kann man nun eine Farbpalettendatei für GMT erstellen, die wie im folgenden Bsp von -50 bis 4500 m reicht.

# File scaleGray.cpt
  -50 0 0 0    4500 255 255 255

B 0 0 0
F 255 255 255
N 255 0 0

3. Mittels GMT (grdimage) und der Farbpalette (scaleGray.cpt) eine Postscript-Datei erzeugen und diese danach in ein PNG umwandeln

>grdimage riobogota.grd -CscaleGray.cpt  -R-74.9/-73.0/4.0/5.80 -JQ5/0/16c -E400 > gray.ps
>ps2raster gray.ps -A -P -Tg -E400
  • -R-74.9/-73.0/4.0/5.80 beschreibt den Kartenausschnitt (in Dezimalgrad)
  • -JQ5/0/16c wählt eine einfache Plattkarten-Projektion
  • -E400 die Auflösung der zu erstellenden Grafikdatei


Adobe Photoshop

Bearbeiten
  1. Das Graustufenbild des letzten Artikels in Photoshop zu öffnen
  2. Alles Selektieren (Ctrl+A und Ctrl+C)
  3. Das "Layers"-Fenster öffnen (F7) und dort den "Channels"-Tabreiter wählen
  4. Einen neuen Alpha-Kanal erstellen, indem man in der "Channels"-Sicht die Schaltfläche "Create new channel" anklickt
  5. Das Bild aus der Zwischenablage auf diesen neuen Alpha-Kanal kopieren
  6. Zurück zum "Layers"-Tabreiter wechseln und dort einen neuen weißen Layer erstellen, auf dem das Relief gezeichnet werden soll
  7. Den Filter "Render>Lighting Effects.." wählen
    1. Im Dialog des Filters den Lichteinfall durch Positionieren der Lampe auf Nord-West setzen
    2. Light-Type = Directional
    3. Texture-Channel = Alpha 1
    4. Die restlichen Schieberegler nach Try&Error einstellen
    5. OK klicken und das Relief wird auf den zuvor gewählten weißen Layer gezeichnet

..das ganze nochmal mit Bildchen hier nachzulesen

  Tutorial: Filter "Lighting Effects"

Folgende Einstellungen im "Lighting Effects"-Filter wurden für das Beispiel-Relief getroffen:

Intensity=14, Gloss=0, Material=0, Exposure=0, Ambience=7, Height=70%

In GIMP gibt es den Relief-Filter, der auf Basis eines Graustufenbildes ein Relief erzeugt. Hier hat man zwar nicht ganz so viel Finetuning-Möglichkeiten wie in Photoshop - für gute Schattierungen reicht es aber auch allemal.

  Tutorial: Filter "Relief" in GIMP

Folgende Einstellungen im Relief-Filter sind für die Erstellung eines Reliefs geeignet:

Azimut=135, Höhe=50, Tiefe=10

Im engl. GIMP unter Filters - Distorts - Emboss zu finden.

Spezielle Tipps

Bearbeiten

Einfärbung

Bearbeiten

Durch eine leichte Einfärbung mit Brauntönen sieht das Relief nach der Einbindung in einer Karte oftmals etwas besser und wärmer aus. Hingegen wirken Schwarzweiß-Reliefs meist etwas kühl.

Anpassung mehrerer Reliefs einer Kartenserie

Bearbeiten

Die Erstellung von Reliefs über Bildbearbeitungsprogramme hat den Nachteil, dass sobald man per Hand die Bilder nachbearbeitet (Kontrast, Helligkeit anpasst etc), jedes Relief ein Einzelstück ist - also nicht zu 100% reproduzierbar. Für Kartenserien, wo jede Karte etwa gleich aussehen soll, ist das ein Problem. Um mehrere Reliefs aneinander anzugleichen, kann man zB für einen kleinen, selektierten Ausschnitt einer möglichst ebenen Fläche den durchschnittlichen Helligkeitswert bestimmen. Dh, an einer Stelle ohne Berge ein Rechteck selektieren und dann im Histogramm den Durchschnittswert anschauen. Als anzustrebenden Wert nehme ich meist 240, den ich bei jedem Relief versuche einzuhalten - so werden die Karten durch die Reliefüberlagerung nicht zu sehr abgedunkelt, es bleibt aber noch etwas "Platz nach oben" um auch die beleuchteten Stellen aufzuhellen.

Optimale Dateigröße wählen

Bearbeiten

Die Größe des Graustufenbildes, auf dessen Basis man das Relief erzeugt, sollte in etwa mit der angestrebten Größe der Zielkarte übereinstimmen (evtl nur ein wenig größer). Wählt man eine zu große Auflösung, so sind die Strukturen nachher im Relief zu detailliert um in der Karte wahrgenomen zu werden.

Dateiformate JPG vs. PNG

Bearbeiten

Für das Ausgangs-Graustufenbild sollte man PNG statt JPEG verwenden. Da es bei der Schattierung eines JPEG's oft zu unschönen Terrassen-Effekten kommt. Der Grund dafür sind die kaum sichtbaren JPEG-Artefakte, die aber bei Anwendung eines Relief-Filters deutlich als rechteckige Terrassen hervorstechen.

Korrektur von Fehlpixeln

Bearbeiten

  Info: Auf der Seite http://www.glcf.umd.edu/data/srtm/ gibt es vorverarbeitete SRTM-Dateien, bei denen die Löcher bereits repariert sind. Diese Dateien stehen ebenfalls unter einer freien Lizenz und können für Wikipedia verwendet werden.

Zum Download per FTP:

  1. In dieses FTP-Verzeichnis gehen: ftp://ftp.glcf.umd.edu/glcf/SRTM/Degree_Tiles
  2. Das Verzeichnis entsprechend des Breitengrades wählen - zB /n047
  3. Das Verzeichnis für den gewünschten Längengrad wählen - zB /SRTM_ff03_n047e012
    ..hier gibt es mehrere Varianten zur Auswahl. Das Kürzel ff03 steht für "filled finished" - dies sind die reparierten SRTM-Daten.
  4. Die *.tif.gz Datei downloaden und die darin enthaltene GeoTIFF-Datei mit GDAL oder anderen Tools weiterverarbeiten (siehe Weiterverarbeitung mit GDAL)
 
Mit Median-Filter
 
Mit GRASS und r.fillnulls-Befehl

Ein Problem, dass vlt jeder kennt, der schonmal SRTM-Daten angeschaut hat: die Höhendaten haben vor allem in Gebirgsregionen viele Löcher (bzw Null-Werte in den Daten), die es vor der Weiterverarbeitung zu reparieren gilt. Es gibt zwar bei cgiar.org bereits reparierte SRTM-Daten, leider dürfen diese aber nicht für kommerzielle Zwecke frei verwendet werden und kommen daher für Wikipedia eigentlich nicht in Frage.

Folgend sind zwei Wege beschrieben, die ich zum Reparieren verwende:

Median-Filter und Bildbearbeitungssoftware

Bearbeiten

Dazu erstelle ich zunächst ein Graustufenbild (PNG) mittels GMT und dem grdimage-Befehl (siehe auch Hilfe:GMT), wobei ich Null-Werte als Rot zeichnen lasse.

CPT-Datei für grdimage:

 -50 0 0 0         4000 255 255 255

B 0 0 0
F 255 255 255
N 255 0 0

GMT-Befehle zum Erstellen eines Graustufen-PNG

grdimage bayern.grd -Cmono.cpt  -R8.6/14.2/47.0/50.9 -JQ10/52/16c -E500 > gray.ps
ps2raster gray.ps -A -P -Tg -E600

Dann öffne ich das Bild mit einer Bildbearbeitungssoftware (Photoshop oder GIMP, geht beides). Dort schneide ich die roten Pixel aus und versuche durch mehrmalige Anwendung des Median-Filters die Löcher Schritt für Schritt zu schließen. Danach lege ich das Originalbild wieder über das mit dem Median-Filter bearbeitete Bild, so dass nur die Flächen eingeblendet werden, wo früher Löcher waren. Das funktioniert für kleine und mittelgroße Löcher recht gut - allerdings nicht für große Löcher, da dann bei zu häufiger Anwendung des Filters das Bild zu sehr verschwimmt.

r.fillnulls-Befehl in GRASS

Bearbeiten

Ein wesentlich perfekteres Resultat erhält man durch spezielle Raster-Interpolationsmethoden eines GIS, wie zum Beispiel der r.fillnulls-Befehl in GRASS (im Menü Raster>Interpolate surfaces>Fill NULL cells). Dabei füllen anhand von Nachbarpixel berechnete Splines die Löcher mit Schätzwerten. Auf die Weise können auch noch relativ große Null-Flächen mit plausiblen Werten ergänzt werden. Leider dauert so eine Verarbeitung einer SRTM-Datei von 1200x1200 Pixeln ungefähr 20 Minuten, weshalb ich das auch nur für einzelne Datensätze mache, bei denen ich mit der Median-Methode nicht mehr weiter komme.

Weblinks