¿Cuál es la diferencia entre gdalwarp y gdal_merge para mosaicizar?


14

Quería fusionar alrededor de 20 dem tiffs cada uno alrededor de 100 MB, y usé gdalwarp (sé sobre la opción de archivo virtual):

gdalwarp $(list_of_tiffs) merged.tiff

Sin embargo, este comando tardó mucho tiempo y, después de unos 15 minutos, estaba procesando la quinta imagen del conjunto. Lo termino.

Luego descubrí que el script gdal_merge.py también se puede usar para crear mosaicos y lo probé:

gdal_merge.py $(list_of_tiffs)

que se completó en menos de 3 minutos.

Como esperaba que ambos comandos produjeran el mismo resultado, me pregunto cuál es la diferencia entre los dos, ¿por qué gdalwarp tarda tanto tiempo si el resultado es el mismo?

Respuestas:


21

Si bien no sé por qué GDAL proporciona esta superposición en la funcionalidad, asegúrese de configurar el caché para gdalwarp para que sea realmente rápido:

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

Asegúrese de no definir más caché que tener RAM en la máquina.


No tenía idea sobre este interruptor de ajuste, que de hecho acelera el proceso. Para referencia 3000 es 3GB (más información trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp ) Tengo NumPy compilado con MKL en mi sistema Python, pero aún gdalwarpdebo estar haciendo algo más, ya que NumPy no puede ser más rápido que C implementación, aunque puede alcanzarlo.
zetah

¿3000 es realmente 3GB o debería ser 3072?
miln40

13

Me encontré con esta pregunta y una posible respuesta cuando busco algo más.

gdal_merge.py utiliza el remuestreo de vecino más cercano. Si desea controlar el remuestreo utilizado, debe usar gdalwarp en su lugar.

fuente: trac.osgeo.org


5

gdal_merge.py carga todos los archivos en la memoria antes de procesarlos. por lo tanto, no puede procesar archivos grandes si su memoria es pequeña. mira aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.