Höhenrelief von realem Terrain

Ich stand kürzlich vor dem Problem, eine sogenannte Heightmap (Höhenfeld) eines realen Terrains von 2x1km zu erstellen. Zuerst fragte ich mich, ob ich nicht irgendwie das Relief aus Google Earth extrahieren könnte, fand dazu aber kaum etwas im Netz. Erst als ich das Dateiformat .tga gestoßen bin, konnte ich die Suche eingrenzen.

SRTM und MicroDEM

Ich fand entsprechende Tutorials zum Exportieren der Höhendaten der Shuttle Radar Topography Mission, deren Daten man als geotiff Datei von folgender Webseite laden kann. Mit der Software MicroDEM kann man diese dann Anzeigen und in verschiedenen Varianten darstellen lassen:

microdem.jpg
Geotiff Relief geöffnet in der Standardansicht von MicroDEM

Stellt man die Höhendaten via Rechtsklick ⇒ Display Parameters ⇒ Elevation als Graustufen dar, erhält man die für eine .tga Datei gewünschte Darstellung.

microdem_2.jpg
Darstellung als Graustufenbild in MicroDEM.

Jedoch haben diese Karten lediglich eine Auflösung von 90m pro Pixel. Recht ungenau für einen Ausschnitt von 2000x1000m.

Digitaler Atlas

Auf der Suche nach einem detailiert Relief, erinnerte ich mich an den Digitalen Atlas des Land Steiermark. Unter „KartenCenter :: Alle Karten“ kann man „Höhen- & Reliefkaren der Steiermark laden, welche unter anderem Laserscans aus der Luft enthalten. Diese Scans können durch geschicktes Filtern die Vegetation als auch Gebäude ausblenden.

Digitaler Atlas Steiermark
Relief des Grazer Schlossberges, ohne Vegetation und Gebäude
Digitaler Atlas Steiermark 2.JPG
Grazer Schlossberg mit Vegetation und Gebäude

Diese Scans sind zwar in beeindruckender Qualität, jedoch ist es mir nicht möglich aus den Reliefdarstellungen ein Höhenprofil zu extrahieren. Deshalb kam ich wieder auf meine ursprüngliche Idee, die Daten aus Google Earth zu extrahieren, zurück.

Google Earth – manuelle Extraktion

Google Earth simuliert einem das Höhenprofil, in, für meine Zwecke ausreichender Genauigkeit und zeigt einem auch 3D Renderings von Gebäuden. Jedoch bietet es keine offensichtliche Möglichkeit diese Informationen irgendwie zu extrahieren.

Nach etwas herumprobieren mit der Funktion „Polygon hinzufügen“, kam ich auf eine recht umständliche, jedoch zuverlässig funktionierende Möglichkeit, ein Höhenprofil eines Terrains als .tga zu extrahieren. Da ich jedoch stark bezweifle, dass sich bisher irgend jemand die Mühe gemacht hat, ein Höhenprofil auf diese Art und Weise zu extrahieren, dachte ich, dass es klug wäre diese Möglichkeit zu dokumentieren.

Übersicht

Die Methode basiert auf folgender Idee: Man kann ein in Google Earth gezeichnetes Polygon frei nach Wahl einfärben und in beliebiger Seehöhe platzieren. Diese Polygone schneiden sich dann mit der 3D Umgebung und geben entweder die Farbe des Polygons oder das Satellitenbild der Oberfläche preis. Zusätzlich lässt sich so ein Polygon einfach duplizieren (durch Kopieren und Einfügen) als auch als .kmz Datei am Computer sichern.

polygon0
Das Erste und somit „niedriegste“ Polygon soll gerade noch, an den am tiefsten gelegenen Stellen, im Terrainausschnitt zu sehen sein.

Hat man erst ein mal ein Set aus mehreren Flächen, mit jeweils einem Höhenunterschied von z.B.: 5 Metern, erstellt, kann man diese einzeln von oben betrachtet mittels Screenshot als Bild aufzeichnen.

Die Screenshots kann man dann in einem Bildbearbeitungsprogramm als Ebenen einfügen und alle Bildteile, welche nicht das Polygon darstellen, weiß einfärben. Hat man den verschieden hoch platzieren Polygonen noch keine Farbe (Graustufe) gegeben, färbt man sie zuvor nun so ein, dass das Oberste am hellsten und das Unterste am dunkelsten ist. Anschließend blendet man alle Ebenen mittels „nur Abdunkeln“ zu einem Höhenprofil.

Schritt 1 – Polygone anlegen

Das Erste Polygon legt man durch Einzeichnen der Eckpunkte (diese können später noch durch Klicken und ziehen verschoben werden) an und legt es auf die Seehöhe, bei der gerade noch etwas vom Polygon sichtbar ist.

 

polygon.JPG
Ein weiters Beispielpolygon in Graz auf einer Seehöhe von 360m, mit einer Größe von 4,7×2,7 km

Es lassen sich nun mehrere Polygone, mit den selben Eckpunkten, durch kopieren des Ersten erstellen. Die duplizierten Flächen werden einfach umbenannt und die Seehöhe um die Ausgewählte Schrittweite, von in diesem Test 5m, angepasst.

polygon3.JPG
Anlegen von mehreren Lagen um alle Höhenbereiche abzudeken.

In meinem Beispiel des Grazer Schlossbergs und dessen Umgebung, müssen, bei einer vertikalen Schrittweite von 5m, 31 Polygone angelegt werden, um eine Höhendifferenz von 150m, zwischen tiefsten und höchsten Punkt, darstellen zu können.

Schritt 2 – Blickwinkel einstellen und Screenshots anfertigen

Um einen parallaxen Fehler zu vermeiden und die Genauigkeit der Screenshots zu erhöhen, ist es vorteilhaft wenn man das Sichtfeld der Kamera in Google Earth von 60° auf 10° reduziert. Wie das funktioniert kann hier nachgelesen werden.

Danach wird die Kameraposition festgelegt und diese Ansicht durch den Befehl „Zu meiner Startpostion machen“ gespeichert. Sollte die Kameraposition aus Versehen verschoben werden, kann so immer wieder in die gewünschte Ansicht zurückgekehrt werden. Die Screenshots werden mit der Seehöhe im Namen gespeichert.

Schritt 3 – Umfärben der Flächen

In Gimp werden nun via Datei ⇒ Als Ebenen öffnen, alle Bilder als Ebenen eingefügt. Die oberste Ebenen sollte der höchste Terrainschnitt sein (ganz oder fast ganz weißes Bild). Danach schneidet man das Bild auf die Größe des Polygons zu und verwendet das Werkzeug „Nach Farbe auswählen“ um alles was zur Fläche des Polygons gehört auszwählen.

Die Fläche wird dann mit dem „Füllen“ Werkzeug und der Option „Ganze Auswahl füllen“, in einem Grauton eingefärbt. Ähnlich wie bei den Höhenschichten geht man auch hier so vor, dass man die RGB Werte stets um eine konstante Schrittweite, z.B. 5 pro Ebene, verkleinert.

Bevor man mit dem Einfärben der nächsten Ebene fortsetzt, invertiert man noch die Auswahl und setzt alle Bereiche, welche nicht vom Polygon bedeckt waren, auf weiß.

gimp.JPG
Eine einzelne Ebene in Gimp. Alle Flächen des ursprünglich weißen Polygons wurde mit einem, für die Seehöhe passenden, Grauwert eingefärbt. Die übrigen Flächen wurde auf weiß geändert.

Schritt 4 – Zusammenblenden der Ebenen

Werden nun alle Ebenen außer der untersten auf den Blend-Modus „Nur Abdunkeln“ gesetzt ergibt sich folgendes Höhenprofil.

profile0.JPG
Durch „Nur Abdunkeln“ der höher gelegenen Ebenen gegenüber dem Weißen Hintergrund wird das Höhenprofil wird sichtbar.

Mit „Sichtbare Ebenen vereinen“ werden nun alle Ebenen auf eine Einzige reduziert und der Kontrast des Bildes angepasst.

Dies ist deshalb notwendig, weil die Helligkeit jeder Ebene, jeweils nur um die RGB Schrittweite von fünf (~2%) verändert wurde. Wird bei einer Helligkeit von 100% begonnen, ist das letzte Bild einer Serie von 31 Bildern auf einer Helligkeit von 40%.

profile1.JPG
Mittels Farben ⇒ Werte, wird der Schwarzpunkt auf 40% geschoben und das Histogramm des Bildes somit auf den vollen 8-Bit Dynamikbereich gestreckt.

Ergebnis und Fazit

Zwar war es nicht ganz clever von, die Gebäude bei der Konvertierung dieses weitläufigen Raumes zu inkludieren, die entwickelte Methode jedoch funktioniert und liefert ein gutes Ergebnis. Je nach Bildausschnitt und Anzahl der Ebenen lässt sich das Höhenprofil eventuell noch etwas verbessern.

profile2.JPGDas erstellte Höhenfeld des Grazer Stadtzentrums.

Ohne 3D Gebäude ist der Detailgrad zwar wesentlich geringer, jedoch stören dann Gebäude und Vegetation nicht mehr beim Erfassen des darunterliegenden Terrains.

resolution.jpg
Ohne 3D Gebäude und mit eingeschalteter Schattensimulation, werden die Polygone der Topografischen Grunddaten sichtbar und eine Messung derer Kantenlänge ergab eine Auflösung von 50m am Grazer Schlossberg

Bestimmt ließen sich einige dieser Schritte mit diversen Scripts automatisieren, aber an diesem Punkt steige ich mal aus und hoffe, dass diese Anleitung für jemanden nützlich ist.

 

Ein Gedanke zu “Höhenrelief von realem Terrain

  1. Avatar von Werner König Werner König

    Für ein 3D-Rendering habe ich nach einem günstigen Modell der makanten Buttes aus dem Monument Valley gesucht – vergeblich. Dabei bin ich auf diese Anleitung gestoßen und habe mit ihrer Hilfe ein erstes brauchbares, wenn auch noch grobes Modell erstellen können. Ich habe dafür 25 Screenshots in Höhenschritten von anfangs 10 m, später im steileren Bereich sogar von 20 m erstellt und auch auf die Änderung des Blickwinkels verzichtet. Das Ergebnis lässt sich durchaus sehen! Vielen Dank für diese Anleitung, sie war sehr nützlich.
    Eine Anmerkung noch: Es ist gar nicht nötig, mehr als ein Polygon zu erstellen, es genügt, nach jedem Screenshot über die Eigenschaften im Polygonmenue die Höhe jeweils um einen Schritt anzuheben.

    Gefällt 1 Person

Hinterlasse einen Kommentar