В чем разница между gdalwarp и gdal_merge для мозаики


14

Я хотел объединить около 20 файлов в формате 100 МБ каждый и использовал gdalwarp (я знаю о параметре виртуального файла):

gdalwarp $(list_of_tiffs) merged.tiff

Однако эта команда заняла очень много времени, и примерно через 15 минут она обрабатывала 5-е изображение из набора. Я прекращаю это.

Затем я обнаружил, что сценарий gdal_merge.py можно использовать также для создания мозаики, и попробовал его:

gdal_merge.py $(list_of_tiffs)

который завершен менее чем за 3 минуты.

Поскольку я ожидал, что обе команды приведут к одному и тому же результату, мне интересно, в чем разница между ними, почему gdalwarp занимает так много времени, если результат одинаков?

Ответы:


21

Хотя я не знаю, почему GDAL обеспечивает такое совпадение в функциональности, обязательно установите кэш для gdalwarp, чтобы сделать его действительно быстрым:

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

Убедитесь, что вы не определили больше кеша, чем на компьютере.


Я понятия не имел об этом переключателе настройки, который действительно ускоряет процесс. Для справки 3000 - 3 ГБ (дополнительная информация trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp ) У меня есть сборка NumPy с MKL в моем системном Python, но все равно gdalwarpнужно делать что-то большее, поскольку NumPy не может быть быстрее, чем C реализация, хотя может достичь этого.
Зета

3000 действительно 3ГБ или 3072?
miln40

13

Я просто случайно наткнулся на этот вопрос и потенциальный ответ, когда искал что-то еще.

gdal_merge.py использует ресэмплинг ближайшего соседа. Если вы хотите контролировать использование передискретизации, вы должны использовать вместо этого gdalwarp.

источник: trac.osgeo.org


5

gdal_merge.py загружает все файлы в память перед их обработкой. поэтому он не может обрабатывать большие файлы, если у вас мало памяти. смотрите здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.