Ich möchte viele Raster mit Python oder PyQGIS in Pixelgröße, Ausdehnung und Projektionssystem ausrichten.
Der erste Gedanke ist, GDAL zu verwenden:
gdalinfo (um Informationen aus dem Referenzraster zu finden)
gdalwarp (zum Konvertieren des Projektionssystems und der Pixelgröße)
gdal_translate (um den Umfang umzuwandeln)
Sie funktionieren, aber es ist nicht einfach, diese Tools in Python zusammen zu verwenden, und sie benötigen viel Zeit, um diese Arbeit abzuschließen. Dies kann auch problemlos mit QGIS und dem Align Rasters Tool durchgeführt werden.
Gibt es ein Tool, das diese Arbeit mit PyQGIS oder Python ausführt? (Ich möchte mehr Programmierung automatisch arbeiten)
AKTUALISIEREN
Ich finde diesen Code aus dieser Frage :
from osgeo import gdal, gdalconst
inputfile = #Path to input file
input = gdal.Open(inputfile, gdalconst.GA_ReadOnly)
inputProj = input.GetProjection()
inputTrans = input.GetGeoTransform()
referencefile = #Path to reference file
reference = gdal.Open(referencefile, gdalconst.GAReadOnly)
referenceProj = reference.GetProjection()
referenceTrans = reference.GetGeoTransform()
bandreference = reference.GetRasterBand(1)
x = reference.RasterXSize
y = reference.RasterYSize
outputfile = #Path to output file
driver= gdal.GetDriverByName('GTiff')
output = driver.Create(outputfile, x, y, 1, bandreference.DataType)
output.SetGeoTransform(referenceTrans)
output.SetProjection(referenceProj)
gdal.ReprojectImage(input, output, inputProj, referenceProj, gdalconst.GRA_Bilinear)
del output
Dieser Code funktioniert außer Rasterclip einwandfrei. Haben Sie eine Idee, wie Sie diesen Code aktualisieren können, um das Eingabe-Raster auf das Ausmaß des Referenz-Rasters im Code zu beschränken?
Antworten:
GDAL Ansatz und Zeit
Ich stimme @user zu: 78446 - gdal ist der beste Weg vorwärts und Sie sollten in der Lage sein, die bereits erwähnten Werkzeuge zu verwenden, z. B. gdalwarp, gdaltranslate usw. Dies ist ein ziemlich langer Prozess, da für jedes Raster jede Zelle neu ausgerichtet werden muss und im Wesentlichen neu interpoliert, um die Neuausrichtung der Zellen zu berücksichtigen - basierend auf der Rastergröße sogar noch länger.
Berücksichtigen Sie bei den folgenden Analysen im Übrigen auch diese Änderungen des Rasterpixelwerts - insbesondere, wenn die Raster-Neuausrichtungen über sehr große Entfernungen erfolgen.
GDAL und Python
Wenn Sie sich im Forum umschauen, finden Sie viele Beispiele, die zeigen, wie man gdal und python aneinanderreiht, z . B. hier .
Lesen Sie auch die Hilfe hier, um mit gdal und Python zusammenzuarbeiten.
quelle
Anscheinend können Sie gdal.Warp anstelle von ReprojectImage wie in verwenden
(Der Code stammt von https://gis.stackexchange.com/a/237372/15183 ).
quelle
Funktioniert gut für mich. Nur
GA_ReadOnly
in einer Zeile fixiertzu
Skript projiziert das Eingabe-Raster (ganz Europa) neu und schneidet es auf Auflösung und Umfang des Referenz-Rasters (zentraler Teil) ab. Ergebnis:
gdalwarp
kann auch zum Ausrichten von Rastern verwendet werden ( Ändern der Pixelgröße in der ASC-Datei mithilfe von Qgis? )quelle