Sự khác biệt giữa gdalwarp và gdal_merge để ghép


14

Tôi muốn hợp nhất khoảng 20 dem mỗi lần khoảng 100 MB và tôi đã sử dụng gdalwarp (tôi biết về tùy chọn tệp ảo):

gdalwarp $(list_of_tiffs) merged.tiff

Tuy nhiên, lệnh này mất rất nhiều thời gian và sau khoảng 15 phút, nó đã xử lý ảnh thứ 5 từ bộ. Tôi chấm dứt nó.

Sau đó tôi thấy rằng tập lệnh gdal_merge.py cũng có thể được sử dụng để ghép và đã thử nó:

gdal_merge.py $(list_of_tiffs)

mà hoàn thành trong ít hơn 3 phút.

Như tôi dự đoán rằng cả hai lệnh sẽ tạo ra kết quả giống nhau, tôi tự hỏi sự khác biệt giữa hai lệnh này là gì, tại sao gdalwarp lại mất quá nhiều thời gian nếu kết quả giống nhau?

Câu trả lời:


20

Mặc dù tôi không biết tại sao GDAL cung cấp chức năng chồng lấp này, hãy đảm bảo đặt bộ đệm cho gdalwarp để làm cho nó thực sự nhanh:

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

Đảm bảo không xác định nhiều bộ nhớ cache hơn là có RAM trên máy.


Không có ý tưởng về công tắc điều chỉnh này, mà thực sự tăng tốc quá trình. Đối với tài liệu tham khảo 3000 là 3GB (thông tin thêm trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp ) Tôi có bản dựng NumPy với MKL trong hệ thống của mình, nhưng vẫn gdalwarpphải làm gì đó nhiều hơn, vì NumPy không thể nhanh hơn C thực hiện, mặc dù có thể đạt được nó.
zetah

3000 thực sự là 3GB hay phải là 3072?
miln40

12

Tôi tình cờ bắt gặp câu hỏi này và một câu trả lời tiềm năng khi tìm kiếm một thứ khác.

gdal_merge.py sử dụng việc lấy mẫu hàng xóm gần nhất. Nếu bạn muốn kiểm soát việc lấy mẫu lại được sử dụng, bạn nên sử dụng gdalwarp thay thế.

nguồn: trac.osgeo.org


5

gdal_merge.py tải tất cả các tệp vào bộ nhớ trước khi xử lý chúng. do đó, nó không thể xử lý các tệp lớn nếu bộ nhớ của bạn nhỏ. xem ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.