Viele Raster mit PyQGIS oder Python ausrichten?


8

Ich möchte viele Raster mit Python oder PyQGIS in Pixelgröße, Ausdehnung und Projektionssystem ausrichten.

Der erste Gedanke ist, GDAL zu verwenden:

  1. gdalinfo (um Informationen aus dem Referenzraster zu finden)

  2. gdalwarp (zum Konvertieren des Projektionssystems und der Pixelgröße)

  3. 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.

Geben Sie hier die Bildbeschreibung ein

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?


2
Ich bin nicht der Meinung, dass "es nicht einfach ist, [gdal] -Tools in Python zusammen zu verwenden". Es ist ganz einfach. In diesem Beitrag finden Sie Ideen, wie Sie Ihre Raster mit einem Raster ausschneiden können. (Ich würde selbst den gdal-Weg gehen.) Gis.stackexchange.com/questions/125202/…
Jon

@ Jon , dass nicht für mich arbeiten
Mar

Wenn Sie Hilfe benötigen, sollten Sie wahrscheinlich posten, was Sie versucht haben und was nicht funktioniert hat.
Jon

Antworten:


1

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.


0

Anscheinend können Sie gdal.Warp anstelle von ReprojectImage wie in verwenden

OutTile = gdal.Warp(OutTileName, Raster,
  format=RasterFormat, outputBounds=[minX, minY, maxX, maxY], 
  xRes=PixelRes, yRes=PixelRes, dstSRS=Projection, 
  resampleAlg=gdal.GRA_NearestNeighbour, options=['COMPRESS=DEFLATE']
)

(Der Code stammt von https://gis.stackexchange.com/a/237372/15183 ).


0

Funktioniert gut für mich. Nur GA_ReadOnlyin einer Zeile fixiert

reference = gdal.Open(referencefile, gdalconst.GAReadOnly)

zu

reference = gdal.Open(referencefile, gdalconst.GA_ReadOnly)

Skript projiziert das Eingabe-Raster (ganz Europa) neu und schneidet es auf Auflösung und Umfang des Referenz-Rasters (zentraler Teil) ab. Ergebnis:

Geben Sie hier die Bildbeschreibung ein

gdalwarpkann auch zum Ausrichten von Rastern verwendet werden ( Ändern der Pixelgröße in der ASC-Datei mithilfe von Qgis? )

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.