Entschuldigung, wenn die folgende Frage etwas dumm ist, aber ich bin nur SEHR neu in dieser ganzen GIS-Sache.
Ich versuche, einige projizierte GeoTiff-Bilder mit gdal in Python nach WGS84 zu konvertieren. Ich habe einen Beitrag gefunden, in dem der Prozess zum Transformieren von Punkten in projizierten GeoTiffs mit etwas ähnlichem wie dem Folgenden beschrieben wird:
from osgeo import osr, gdal
# get the existing coordinate system
ds = gdal.Open('path/to/file')
old_cs= osr.SpatialReference()
old_cs.ImportFromWkt(ds.GetProjectionRef())
# create the new coordinate system
wgs84_wkt = """
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]"""
new_cs = osr.SpatialReference()
new_cs .ImportFromWkt(wgs84_wkt)
# create a transform object to convert between coordinate systems
transform = osr.CoordinateTransformation(old_cs,new_cs)
#get the point to transform, pixel (0,0) in this case
width = ds.RasterXSize
height = ds.RasterYSize
gt = ds.GetGeoTransform()
minx = gt[0]
miny = gt[3] + width*gt[4] + height*gt[5]
#get the coordinates in lat long
latlong = transform.TransformPoint(x,y)
Meine Frage ist, ob ich diese Punkte konvertieren und eine neue WGS84-GeoTiff-Datei erstellen möchte. Ist dies der beste Weg, dies zu tun? Gibt es eine Funktion, die solche Aufgaben in einem Schritt erledigt?
Vielen Dank!
quelle
Wie mdsumner sagte, ist es viel einfacher, die Befehlszeile als die Python-Bindungen zu verwenden, es sei denn, Sie möchten sehr komplexe Aufgaben ausführen .
Wenn Sie Python mögen, wie ich, können Sie das Kommandozeilen-Tool folgendermaßen ausführen:
oder durchlaufen Sie eine Liste von Dateien:
Und selbst Multiprocessing- Tools nutzen die volle Leistung Ihrer Maschine, um große Aufgaben auszuführen.
quelle
os.sys
ist ein eingebautes Modul; Sie wollen denos.system
Befehl