Wie generiere ich Weltdateien für Raster X?

8

Was ist angesichts einer Liste von georeferenzierten Rastern (ungefähr hundert) die einfachste Methode, um Weltdateien für jede zu generieren ?

In diesem Fall sind die Quell-Raster entweder Geotiff mit eingebetteter Georeferenzierung oder .BIL mit zugehörigem .PRJ, aber die ideale Lösung sollte sich nicht um das Format kümmern. Ich hoffe, dass ich keine Daten duplizieren kann.

Ich habe Arcgis 10 (Arcinfo & Spatial Analyst), GDAL Utilities (gdal v1.8.0) und Quantum GIS 1.8 zur Verfügung.

matt wilkie
quelle
Durch das Generieren von Weltdateien wird nicht immer sichergestellt, dass eine Software die Weltdatei für die Georeferenzierung lesen kann / tut. Geotiff ist das, womit ich in verschiedenen Softwareprogrammen am meisten Glück hatte.
Brad Nesom
Versuchen Sie, das EHdr-Format zu lesen? gdal.org/frmt_various.html
falcacibar
1
Die Software, für die ich diese vorbereite, versteht eingebettete Georeferenzierungen oder externe PRJ-Dateien (proj4 oder wkt) nicht. Es wird nur .wld (oder .blw, .jpw, ... usw.) angezeigt.
Matt Wilkie

Antworten:

12

Wenn Sie einen kürzlich erstellten QGIS-Build verwenden, haben Sie möglicherweise bereits Zugriff auf das hier erwähnte Tool zum Extrahieren von Projektionen .

Aus dem Artikel: "Auf diese Weise können Sie herausfinden, in welcher Projektion sich Ihre Raster befinden. Anschließend wird diese in eine .WLD-Datei exportiert. Außerdem können Sie .PRJ-Dateien erstellen. Wenn Sie GDAL Tools installiert (und aktiviert) haben ) finden Sie dieses neue Werkzeug unter Raster> Projektionen> Projektion extrahieren. "

Es enthält auch eine Stapelverarbeitungsoption, die sich hervorragend für Ihre Zwecke eignet.

R Thiede
quelle
Wenn ich also einen Tag gewartet hätte, hätte ich mir ein paar Stunden Arbeit sparen können! aber ich hätte nichts gelernt, also werde ich es sogar nennen. ;-) Nach dem Lesen des Festschreibungsprotokolls verarbeitet dieses qgis-Tool neben der Güte der Benutzeroberfläche auch Unicode-Dateinamen und schreibt eine externe PRJ-Datei im Esri-Stil. Es folgt nicht der Konvention, die Erweiterung nach der Eingabe zu benennen, z. B. für ein JPEG, das .wld anstelle von .jgw schreibt, was für andere möglicherweise von Bedeutung ist oder nicht. Akzeptiere dies als die richtige Antwort, obwohl ich es nicht benutzt habe, da es die vollständigste Lösung ist.
Matt Wilkie
7

Ausgelöst durch den Zeiger von Mike Toews auf GetGeoTransform gelang es mir, ein kleines gdal-Python-Skript zu erstellen, das Weltdateien für jedes unterstützte georeferenzierte Raster erstellt (glaube ich). Der vollständige Code ist hier : gdal-makeworld.py. Die wesentlichen Teile sind:

geotransform = dataset.GetGeoTransform()

if geotransform is not None:
    x, x_size, x_rot, y, y_rot, y_size = geotransform
    # correct for centre vs corner of pixel
    x = x_size/2+x
    y = y_size/2+y
    world_file.write('%s\n' % x_size)
    world_file.write('%s\n' % x_rot)
    world_file.write('%s\n' % y_rot)
    world_file.write('%s\n' % y_size)
    world_file.write('%s\n' % x)
    world_file.write('%s\n' % y)
    world_file.close()

''' geotransform tuple key:
    [0] /* top left x */
    [1] /* w-e pixel resolution */
    [2] /* rotation, 0 if image is "north up" */
    [3] /* top left y */
    [4] /* rotation, 0 if image is "north up" */
    [5] /* n-s pixel resolution */
'''

Zusätzlicher Dank geht an Schuyler Erle für das Schreiben, gdalcopyproj.pydas ich als Ausgangspunkt verwendet habe.

Hutspitze @AlisterH für "korrekt für Mitte gegen Ecke des Pixels" , 2019-05-30

matt wilkie
quelle