Beispielkarten mit Reliefs aus SRTM-Daten
BearbeitenVorüberlegungen
BearbeitenBevor 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
BearbeitenBei 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)
BearbeitenFolgende 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
BearbeitenDie 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
BearbeitenDer 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
BearbeitenFü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
Schummerung mit Bildbearbeitungsprogrammen erzeugen
BearbeitenVorarbeit: ein Graustufenbild erzeugen
BearbeitenEine 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.
Adobe Photoshop
Bearbeiten- Das Graustufenbild des letzten Artikels in Photoshop zu öffnen
- Alles Selektieren (Ctrl+A und Ctrl+C)
- Das "Layers"-Fenster öffnen (F7) und dort den "Channels"-Tabreiter wählen
- Einen neuen Alpha-Kanal erstellen, indem man in der "Channels"-Sicht die Schaltfläche "Create new channel" anklickt
- Das Bild aus der Zwischenablage auf diesen neuen Alpha-Kanal kopieren
- Zurück zum "Layers"-Tabreiter wechseln und dort einen neuen weißen Layer erstellen, auf dem das Relief gezeichnet werden soll
- Den Filter "Render>Lighting Effects.." wählen
- Im Dialog des Filters den Lichteinfall durch Positionieren der Lampe auf Nord-West setzen
- Light-Type = Directional
- Texture-Channel = Alpha 1
- Die restlichen Schieberegler nach Try&Error einstellen
- OK klicken und das Relief wird auf den zuvor gewählten weißen Layer gezeichnet
..das ganze nochmal mit Bildchen hier nachzulesen
GIMP
BearbeitenIn 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.
Spezielle Tipps
BearbeitenEinfärbung
BearbeitenDurch 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
BearbeitenDie 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
BearbeitenDie 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
BearbeitenFü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
BearbeitenEin 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
BearbeitenDazu 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
BearbeitenEin 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