Je souhaite aligner de nombreux rasters dans une taille de pixel, une étendue et un système de projection à l'aide de Python ou PyQGIS.
Pensez d'abord à utiliser GDAL:
gdalinfo (pour rechercher des informations à partir du raster de référence)
gdalwarp (pour convertir le système de projection et la taille des pixels)
gdal_translate (pour convertir l'étendue)
Ils fonctionnent, mais il n'est pas facile d'utiliser ces outils ensemble en Python et ils ont besoin de beaucoup de temps pour terminer ce travail. En outre, cela peut être fait facilement en utilisant QGIS et Align Rasters Tool.
Existe-t-il un outil effectuant ce travail en utilisant PyQGIS ou Python? (Je veux travailler plus de programmation automatiquement)
MISE À JOUR
Je trouve ce code à partir de cette question :
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
Ce code fonctionne très bien sauf le clip raster. Une idée de la façon de mettre à jour ce code pour découper le raster en entrée dans la mesure du raster de référence dans le code?
Réponses:
Approche et temps GDAL
Je suis d'accord avec @user: 78446 - gdal est la meilleure façon de progresser et vous devriez pouvoir utiliser les outils que vous mentionnez déjà, c'est-à-dire gdalwarp, gdaltranslate etc. Ce sera un processus assez long car pour chaque raster, chaque cellule doit être réalignée et essentiellement ré-interpolé pour tenir compte du réalignement des cellules - encore plus longtemps en fonction de la taille du raster.
Soit dit en passant, dans toutes les analyses suivantes, assurez-vous de prendre également en compte ces changements de valeur de pixel de trame, en particulier si les réalignements de trame sont sur de très grandes distances.
GDAL et Python
En parcourant le forum, vous trouverez de nombreux exemples montrant comment lier gdal et python ensemble, par exemple ici .
Consultez également l' aide ici pour travailler ensemble avec gdal et Python.
la source
Il semble que vous pouvez utiliser gdal.Warp au lieu de ReprojectImage, comme dans
(Le code est extrait de https://gis.stackexchange.com/a/237372/15183 ).
la source
Fonctionne bien pour moi. Fixé uniquement
GA_ReadOnly
sur une ligneà
Reprojetez le script et découpez le raster en entrée (toute l'Europe) à la résolution et à l'étendue du raster de référence (partie centrale).
gdalwarp
peut également être utilisé pour aligner les rasters ( Changer la taille des pixels dans le fichier 'asc' en utilisant Qgis? )la source