Apa perbedaan antara gdalwarp dan gdal_merge untuk mosaicing

14

Saya ingin menggabungkan sekitar 20 dem tiff masing-masing sekitar 100MB, dan saya menggunakan gdalwarp (saya tahu tentang opsi file virtual):

gdalwarp $(list_of_tiffs) merged.tiff

Namun perintah ini memakan waktu sangat lama, dan setelah beberapa 15 menit itu memproses gambar ke-5 dari set. Saya menghentikannya.

Saya kemudian menemukan bahwa skrip gdal_merge.py dapat digunakan juga untuk mosaicing, dan mencobanya:

gdal_merge.py $(list_of_tiffs)

yang selesai dalam waktu kurang dari 3 menit.

Seperti yang saya harapkan bahwa kedua perintah akan menghasilkan hasil yang sama, saya bertanya-tanya apa perbedaan antara keduanya, mengapa gdalwarp membutuhkan banyak waktu jika hasilnya sama?

zetah
sumber

Jawaban:

21

Meskipun saya tidak tahu mengapa GDAL menyediakan fungsi yang tumpang tindih ini, pastikan untuk mengatur cache untuk gdalwarp agar sangat cepat:

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

Pastikan untuk tidak mendefinisikan lebih banyak cache daripada memiliki RAM pada mesin.

markN
sumber
Tidak tahu tentang tombol tuning ini, yang memang mempercepat proses. Untuk referensi 3000 adalah 3GB (info lebih lanjut trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp ) Saya memiliki NumPy build dengan MKL di sistem saya Python, tetapi masih gdalwarpharus melakukan sesuatu yang lebih, karena NumPy tidak dapat lebih cepat daripada C implementasi, walaupun bisa mencapainya.
zetah
adalah 3000 benar-benar 3GB atau haruskah 3072?
miln40
13

Saya kebetulan menemukan pertanyaan ini dan jawaban potensial ketika mencari sesuatu yang lain.

gdal_merge.py menggunakan resampling tetangga terdekat. Jika Anda ingin kontrol atas resampling yang digunakan, Anda harus menggunakan gdalwarp sebagai gantinya.

sumber: trac.osgeo.org

dewew
sumber
5

gdal_merge.py memuat semua file ke dalam memori sebelum memprosesnya. karena itu tidak dapat memproses file besar jika memori Anda kecil. lihat di sini

joaoal
sumber