Super-Overlays mit gdal2tiles erstellen

Mano Marks, Google Geo APIs-Team
September 2009

Ziel

In dieser Anleitung werden die Grundlagen der Erstellung von Super-Overlays erläutert. Dabei handelt es sich um eine Reihe von Boden-Overlays, die regionsbasierte NetworkLinks mit den Open-Source-Dienstprogrammen der Geospatial Data Abstraktionsbibliothek verwenden.

Einführung

Geobrowser wie Google Earth und Google Maps liefern Satellitenbilder und Kartenkacheln. Manchmal möchten Sie aber auch Ihre eigenen verwenden. Es gibt viele verschiedene Bild- oder Rasterdaten für unterschiedliche Zwecke.

  • Eigene Satelliten- oder Luftbilder in einem Geobrowser platzieren
  • Platzieren früherer Karten auf vorhandenen Bildern, z. B. der Rumsey Maps-Ebene in Google Earth
  • GIS-Daten in Rasterform importieren
  • LIDAR- oder Infrarotbilder im Geobrowser platzieren

Eines der Probleme bei hochauflösenden Rasterdaten besteht jedoch darin, dass viel Arbeitsspeicher zum Anzeigen erforderlich ist. Und wenn Sie sie über das Internet übertragen, gibt es auch Bedenken hinsichtlich der Bandbreite. Um dieses Problem zu beheben, müssen Sie Kacheln erstellen.

Beim Tiling wird Ihre Bilddatei in viele verschiedene Bilder aufgeteilt, die geladen werden, sobald sie sichtbar sind. Sie erstellen ein Bild mit niedriger Auflösung für die Anzeige, während der Nutzer herauszoomt. Im selben Bereich erstellen Sie vier Bilder mit höherer Auflösung, die sich genauer ansehen können. Für jeden Bereich, der von einem Bild überlagert wird, erstellen Sie vier Bilder mit höherer Auflösung, um beispielsweise die Zoomstufe zu vergrößern. Dies wird als Quadtree-Methode bezeichnet und bezeichnet die Kachelbilder für Google Earth und Google Maps. Dieser Vorgang wird im KML-Entwicklerhandbuch unter Regionen genauer erläutert.

Es ist auch möglich, dies manuell mit einer Grafikbearbeitungsanwendung wie Adobe PhotoShop oder GIMP zu tun. Das kann jedoch komplex, mühsam und fehleranfällig sein. Außerdem gibt es eine Reihe guter Anwendungen, die in erster Linie für Windows zur Verfügung stehen, darunter SuperOverlay, Arc2Earth und MapCruncher sowie CrunchUp2KML.

Wenn Sie den Prozess automatisieren oder Ihrer Anwendung eine Funktion hinzufügen möchten, bietet Ihnen GDAL zahlreiche Tools zum Arbeiten mit Raster- und Vektordaten. In diesem Artikel werden die Befehlszeilenoptionen beschrieben. Die Bibliotheken können jedoch auch problemlos in Ihre eigenen Anwendungen eingebunden werden. In dieser Anleitung verwenden Sie die Dienstprogramme gdalinfo, gdal_translate, gdalwarp und gdal2tiles. Die ultimative Ausgabe ist ein Super-Overlay.

Befehlszeilenschritte

Die Verwendung von GDAL über die Befehlszeile umfasst sechs Schritte.

  1. GDAL herunterladen und installieren
  2. Bild herunterladen
  3. Verwenden Sie gdalinfo, um Informationen zum Bild zu ermitteln.
  4. Mit gdal_translate ein Georeferenz für das Bild erstellen
  5. Mit gdalwarp die Projektion des Bildes ändern
  6. Mit gdal2tiles können Sie das Bild in Kacheln aufteilen und den zugehörigen KML-Code erstellen.

Schritt 1: GDAL herunterladen und installieren

Laden Sie zuerst die GDAL wie hier beschrieben herunter und installieren Sie sie.

Schritt 2: Bild herunterladen

Sie können ein beliebiges Bild verwenden. Es gibt verschiedene Quellen für geografische Daten im Web. Sie können sie verwenden, aber Sie sollten die Grenzen des Bilds kennen: den Breiten- und Längengrad der einzelnen Ecken des Bildes. In dieser Anleitung wird ein NASA Blue Marble-Image verwendet, das über die NASA-Website heruntergeladen werden kann. Diese Fotos wurden 2004 aufgenommen und präsentieren ein wunderschönes Bild der Erde aus dem Weltraum. Wählen Sie rechts unten in der Navigationsleiste eine der Dateien aus.

Wenn Sie ein eigenes Bild verwenden und wissen, dass es bereits geocodiert ist, können Sie mit Schritt 5 fortfahren. Fahren Sie andernfalls mit Schritt 3 fort.

Schritt 3: Informationen zum Bild abrufen

Nachdem Sie die GDAL-Bibliotheken installiert und das Image ausgewählt haben, benötigen Sie einige Informationen über das Image, damit Sie es georeferenzieren können. Insbesondere benötigen Sie die Pixel- und Linienpositionen jeder Ecke des Bildes. Stellen Sie sich das Bild als Tabelle mit Spalten und Zeilen vor, dann sind die Pixel die Spalten und die Zeilen Zeilen.

GDAL bietet das praktische Dienstprogramm gdalinfo zum Erfassen dieser Informationen. Geben Sie in der Befehlszeile einfach gdalinfo filename ein und ersetzen Sie filename durch den Pfad zur Datei. Die Ausgabe sollte in etwa so aussehen:

Driver: JPEG/JPEG JFIF
Files: world_200401.jpg
Size is 21600, 10800
Coordinate System is `'
Image Structure Metadata:
  SOURCE_COLOR_SPACE=YCbCr
  INTERLEAVE=PIXEL
  COMPRESSION=JPEG
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,10800.0)
Upper Right (21600.0,    0.0)
Lower Right (21600.0,10800.0)
Center      (10800.0, 5400.0)
Band 1 Block=21600x1 Type=Byte, ColorInterp=Red
  Image Structure Metadata:
    COMPRESSION=JPEG
Band 2 Block=21600x1 Type=Byte, ColorInterp=Green
  Image Structure Metadata:
    COMPRESSION=JPEG
Band 3 Block=21600x1 Type=Byte, ColorInterp=Blue
  Image Structure Metadata:
    COMPRESSION=JPEG

Die wichtigsten Informationen für diese Anleitung sind die Zeilen oben links, links unten, rechts oben und rechts unten. Sie enthalten die Pixel- und Zeilenwerte jeder Ecke. Der obere linke Bereich liegt in diesem Fall bei 0,0 und der untere rechte Wert bei 21600,10800.

Schritt 4: Bild georeferenzieren

In diesem Fall werden mit Georeferenzen Metadaten erstellt, die die geografische Position der einzelnen Ecken des Bildes beschreiben. Mithilfe der in Schritt 3 und gdal_translate gewonnenen Informationen können Sie der Datei Georeferenzinformationen zuweisen. Dadurch wird eine VRT-Datei aus dem world_200401.jpg-Bild bluemarble1.vrt erstellt. VRT-Dateien sind XML-Dateien, die Informationen zu einer bestimmten Transformation enthalten. In diesem Fall ist es der gdal_translate-Schritt. Im nächsten Schritt kannst du damit deinen letzten Kachelsatz erstellen. Mit gdal_translate können Sie verschiedene Ausgabetypen erstellen, einschließlich wichtiger Bilddateiformate. Mithilfe von VRT-Ausgaben können Sie Ausgabedateien bis zum letzten Schritt verzögern. So können Sie die Effizienz erhöhen und die Wartezeit für die einzelnen Schritte verringern, wenn Sie die Befehlszeile verwenden. Führen Sie dazu diesen Befehl aus:

gdal_translate -of VRT -a_srs EPSG:4326 -gcp 0 0 -180 90 -gcp 21600 0 180 90 -gcp 21600 10800 180 -90 world_200401.jpg bluemarble1.vrt

Diese Zeile enthält viele Informationen, die hier aufgeschlüsselt sind:

  • -of ist das Ausgabeformat, in diesem Fall VRT.
  • -a_srs weist der Datei ein räumliches Referenzsystem zu. Damit weiß jede Anwendung, welches Koordinatensystem verwendet wird. In diesem Fall verwendet es EPSG:4326, das mit WGS84, dem Koordinatensystem von Google Earth, identisch ist.
  • -gcp (Bodenkontrollpunkt) weist den Positionen in der Datei Koordinaten zu. In diesem Fall benötigen Sie nur drei Punkte, da das Bild ein Rechteck ist und der vierte Punkt leicht zu erkennen ist. Legen Sie für -gcp die GCP fest, indem Sie das Pixel, dann die Zeilennummer sowie die Längen- und Breitengrade festlegen. Diese sind durch ein Leerzeichen getrennt.
  • Die letzten beiden Parameter sind die Ursprungsdatei und die Zieldatei.

Schritt 5: Bild verzerren

Das Originalbild wurde nicht für einen runden Globus erstellt, sondern wirkt flach. Für GIS ist es projiziert. Das bedeutet, dass es sich um eine zweidimensionale Darstellung eines dreidimensionalen Objekts handelt. Für die Projektion muss das Bild verzerrt dargestellt werden, damit es so aussieht, als würde man ein flaches Bild der Erde sehen.

Damit es richtig aussieht, müssen Sie das Bild verzerren, damit es auf den Globus passt. Glücklicherweise bietet GDAL auch dafür ein hervorragendes Tool. Geben Sie einfach gdalwarp -of VRT -t_srs EPSG:4326 bluemarble1.vrt bluemarble2.vrt ein. Dadurch wird eine neue Datei namens "bluemarble2.vrt" erstellt, die Metadaten zum Verzerrungsverfahren enthält.

Schritt 6: Ansichten erstellen

Du hast es fast geschafft, aber dieser Teil wird am längsten dauern. Geben Sie gdal2tiles.py -p geodetic -k bluemarble2.vrt ein, um die Kacheln zu erstellen. Mit -k wird eine KML-Ausgabe erzwungen. Dadurch wird eine Verzeichnisstruktur mit einem Super-Overlay erstellt. Da jede dieser Bilddateien separat erstellt werden muss, dauert ihre Ausführung etwas. Bei großen Bildern kannst du jetzt losgehen, eine Tasse Kaffee trinken, ein Nickerchen machen und eine leichte Mahlzeit zu sich nehmen. Wenn Sie fertig sind, öffnen Sie doc.kml und beobachten Sie die Ergebnisse.

Fazit

In dieser Anleitung wird nur die Oberfläche von GDAL vorgestellt, sie bietet jedoch einen praktischen Mechanismus zum Generieren von Kacheln. Die zentralen GDAL-Bibliotheken sind in C++ geschrieben, bieten aber Bindungen für Perl, Python, VB6, R, Ruby, Java und C#/.NET. Sie können GDAL also problemlos in Ihre eigenen Anwendungen einbinden. Außerdem sind viele der Dienstprogramme, einschließlich gdal2tiles, in Python geschrieben, sodass sie sich einfach in Python-Anwendungen einbinden lassen. gdal2tiles kann auch Seiten der Google Maps API und von OpenLayers generieren.