ความแตกต่างระหว่าง gdalwarp และ gdal_merge สำหรับโมเสกคืออะไร


14

ฉันต้องการรวมประมาณ 20 tiff dem ต่อแต่ละประมาณ 100MB และฉันใช้ 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

ตรวจสอบให้แน่ใจว่าไม่ได้กำหนดแคชมากกว่าการมี RAM บนเครื่อง


ไม่มีความคิดเกี่ยวกับสวิตช์การปรับแต่งนี้ซึ่งเร็วขึ้นกระบวนการ สำหรับการอ้างอิง 3000 คือ 3GB (ข้อมูลเพิ่มเติมtrac.osgeo.org/gdal/wiki/UserDocs/GdalWarp ) ฉันมี NumPy build ด้วย MKL ในระบบ Python ของฉัน แต่ก็gdalwarpต้องทำอะไรมากกว่านี้เพราะ NumPy ไม่สามารถเร็วขึ้นได้ C การดำเนินการแม้ว่าจะสามารถเข้าถึงได้
zetah

3,000 จริงๆ 3GB หรือควรเป็น 3072?
miln40

13

ฉันเพิ่งเจอคำถามนี้และคำตอบที่เป็นไปได้เมื่อมองหาอย่างอื่น

gdal_merge.py ใช้การสุ่มตัวอย่างเพื่อนบ้านที่ใกล้ที่สุด หากคุณต้องการควบคุมการ resampling ที่ใช้คุณควรใช้ gdalwarp แทน

แหล่งที่มา: trac.osgeo.org


5

gdal_merge.py โหลดไฟล์ทั้งหมดลงในหน่วยความจำก่อนประมวลผล ดังนั้นจึงไม่สามารถประมวลผลไฟล์ขนาดใหญ่ได้หากหน่วยความจำของคุณมีขนาดเล็ก ดูที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.