Qual é a diferença entre gdalwarp e gdal_merge para mosaicos


14

Eu queria mesclar cerca de 20 dem tiffs cada um com cerca de 100 MB e usei o gdalwarp (eu sei sobre a opção de arquivo virtual):

gdalwarp $(list_of_tiffs) merged.tiff

No entanto, esse comando levou muito tempo e, após 15 minutos, estava processando a 5ª imagem do conjunto. Eu termino.

Descobri então que o script gdal_merge.py também pode ser usado para mosaico e tentei:

gdal_merge.py $(list_of_tiffs)

que terminou em menos de 3 minutos.

Como eu esperava que ambos os comandos produzissem o mesmo resultado, pergunto-me qual é a diferença entre os dois, e por que o gdalwarp leva tanto tempo se o resultado é o mesmo?

Respostas:


21

Embora eu não saiba por que o GDAL fornece essa sobreposição de funcionalidade, configure o cache do gdalwarp para torná-lo muito rápido:

# assuming 3G of cache here:
gdalwarp --config GDAL_CACHEMAX 3000 -wm 3000 $(list_of_tiffs) merged.tiff

Certifique-se de não definir mais cache do que ter RAM na máquina.


Não tinha idéia sobre esse interruptor, o que de fato acelera o processo. Para referência, 3000 é 3GB (mais informações trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp ) Eu tenho o NumPy compilado com MKL no meu sistema Python, mas ainda gdalwarppreciso fazer algo mais, pois o NumPy não pode ser mais rápido que C implementação, embora possa alcançá-lo.
Zetah 27/12/12

3000 é realmente 3GB ou deveria ser 3072?
miln40

13

Por acaso encontrei esta pergunta e uma resposta em potencial ao procurar outra coisa.

O gdal_merge.py usa a reamostragem do vizinho mais próximo. Se você quiser controlar a reamostragem usada, use gdalwarp.

fonte: trac.osgeo.org


5

O gdal_merge.py carrega todos os arquivos na memória antes de processá-los. portanto, não é possível processar arquivos grandes se a sua memória for pequena. veja aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.