Eu quero alinhar muitos rasters em algum tamanho de pixel, extensão e sistema de projeção usando Python ou PyQGIS.
Primeiro, pense é usar o GDAL:
gdalinfo (para encontrar informações da varredura de referência)
gdalwarp (para converter o sistema de projeção e o tamanho do pixel)
gdal_translate (para converter extensão)
Eles funcionam, mas não é fácil usar essas ferramentas juntas no Python e precisam de muito tempo para concluir este trabalho. Além disso, isso pode ser feito facilmente usando o QGIS e a ferramenta Align Rasters .
Existe uma ferramenta fazendo esse trabalho usando PyQGIS ou Python? (Eu quero trabalhar mais programação automaticamente)
ATUALIZAR
Acho esse código a partir desta pergunta :
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
Esse código funciona bem, exceto raster clip. Alguma idéia de como atualizar esse código para cortar a varredura de entrada até a extensão da varredura de referência no código?
Respostas:
Abordagem e tempo da GDAL
Concordo com @user: 78446 - gdal é a melhor maneira para a frente e você deve ser capaz de usar as ferramentas já que você menciona isto é gdalwarp, gdaltranslate etc. Isso vai ser um longo processo que para cada raster, as necessidades de cada célula a ser realinhados e essencialmente re-interpolado para levar em conta o realinhamento da célula - ainda mais com base no tamanho da varredura.
Aliás, em qualquer análise a seguir, certifique-se de levar em consideração também essas alterações no valor do pixel de varredura - especialmente se os realinhamentos da varredura estiverem em distâncias muito grandes.
GDAL e Python
Olhando ao redor do fórum, você encontrará muitos exemplos demonstrando como encadear gdal e python, por exemplo, aqui .
Além disso, confira a ajuda aqui para trabalhar com gdal e Python juntos.
fonte
Parece que você pode usar gdal.Warp em vez de ReprojectImage, como em
(O código é obtido em https://gis.stackexchange.com/a/237372/15183 ).
fonte
Funciona bem para mim. Corrigido apenas
GA_ReadOnly
em uma linhapara
O reprojeto de script e o clipe da varredura de entrada (toda a Europa) até a resolução e extensão da varredura de referência (parte central), resultam:
gdalwarp
também pode ser usado para alinhar rasters ( Alterar o tamanho do pixel no arquivo 'asc' usando o Qgis? )fonte