Яка різниця між gdalwarp та gdal_merge для мозаїки


15

Я хотів об'єднати близько 20 dem tiff кожен по 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 Гб (детальніше info trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp ) Я маю NumPy будувати з MKL в моїй системі Python, але все одно gdalwarpпотрібно робити щось більше, оскільки NumPy не може бути швидше C реалізація, хоча може досягти цього.
зета

це 3000 справді 3 Гб, чи має бути 3072?
miln40

14

Мені просто трапилось зустріти це запитання та потенційну відповідь, коли шукаю щось інше.

gdal_merge.py використовує найближчий сусідський перекомпонування. Якщо ви хочете контролювати використовуване перестановку, вам слід скористатися gdalwarp.

джерело: trac.osgeo.org


5

gdal_merge.py завантажує всі файли в пам'ять перед їх обробкою. тому він не в змозі обробляти великі файли, якщо пам'ять мала. дивіться тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.