Quiero alinear muchos rásteres en algún tamaño de píxel, extensión y sistema de proyección usando Python o PyQGIS.
Primero piense en usar GDAL:
gdalinfo (para buscar información del ráster de referencia)
gdalwarp (para convertir el sistema de proyección y el tamaño de píxel)
gdal_translate (para convertir la extensión)
Funcionan, pero no es fácil usar esas herramientas juntas en Python y necesitan mucho tiempo para terminar este trabajo. Además, se puede hacer fácilmente usando QGIS y Align Rasters Tool.
¿Existe una herramienta que haga este trabajo usando PyQGIS o Python? (Quiero trabajar más programación automáticamente)
ACTUALIZAR
Encuentro este código de esta pregunta :
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
Ese código funciona bien, excepto el clip de trama. ¿Alguna idea de cómo actualizar este código para recortar el ráster de entrada en la extensión del ráster de referencia en el código?
Respuestas:
Enfoque GDAL y tiempo
Estoy de acuerdo con @user: 78446: gdal es la mejor manera de avanzar y debería poder usar las herramientas que ya menciona, es decir, gdalwarp, gdaltranslate, etc. Este será un proceso bastante largo ya que para cada ráster, cada celda necesita ser realineada y esencialmente re-interpolado para tener en cuenta la realineación de la celda, incluso más en función del tamaño de la trama.
Por cierto, en cualquiera de los siguientes análisis, asegúrese de tener en cuenta estos cambios en el valor del píxel de la trama también, especialmente si las realineaciones de la trama son a distancias muy grandes.
GDAL y Python
Mirando alrededor del foro encontrarás muchos ejemplos que demuestran cómo unir gdal y python juntos, por ejemplo, aquí .
Además, consulte la ayuda aquí para trabajar juntos con gdal y Python.
fuente
Parece que puedes usar gdal.Warp en lugar de ReprojectImage, como en
(El código se toma de https://gis.stackexchange.com/a/237372/15183 ).
fuente
Funciona bien para mi. Solo fijado
GA_ReadOnly
en una líneaa
El script reproyecta y recorta el ráster de entrada (toda Europa) a la resolución y extensión del ráster de referencia (parte central), resultado:
gdalwarp
también se puede usar para alinear rásteres (¿ Cambiar el tamaño de píxel en el archivo 'asc' usando Qgis? )fuente