Tôi đang viết một tiện ích đơn giản để cắt các lô tệp raster geotiff đa băng tần cho cùng một khu vực (nhỏ hơn). Sử dụng gdalwarp, tôi có thể dễ dàng cắt một tệp bằng cách sử dụng shapefile cắt đa giác đơn:
gdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif
Tuy nhiên, khu vực thực tế tôi muốn quay clip sẽ luôn được xác định ban đầu bởi một tệp raster geotiff khác, không phải là shapefile. Sẽ thật tuyệt nếu tôi có thể sử dụng phạm vi của raster đó làm tệp cắt, nhưng tôi không chắc làm thế nào để làm điều này. Không có gì đáng ngạc nhiên, những điều sau đây không hoạt động (nó không gây ra lỗi, nó chỉ không tạo ra bất cứ điều gì):
gdalwarp -cutline clipper.tif-crop_to_cutline input.tif output.tif
Vì vậy, câu hỏi của tôi là, có cách nào để cung cấp một raster cho gdalwarp -cutline
? Thay phiên, có một chức năng gdal khác có thể cắt một raster bằng cách sử dụng một raster khác? Nếu cả hai điều này đều không thể, thì có một cách rất đơn giản để tạo ra một shapefile với một đa giác duy nhất được xác định theo phạm vi của một raster?
Mã này sẽ được gói trong một tập lệnh python rộng hơn, vì vậy tôi có thể sử dụng các tiện ích gdal dòng lệnh hoặc bất kỳ ràng buộc python nào cho gdal.
Là một lưu ý phụ, tôi biết rằng tôi có thể dễ dàng tạo ra một shapefile cắt bao gồm phạm vi raster của tôi trong QGIS. Tôi có thể sẽ làm điều đó nếu tôi không tìm thấy một giải pháp đơn giản, nhưng cuối cùng tôi sẽ kết thúc việc sử dụng tiện ích này trên hàng chục khu vực nếu không phải là một phần của một phân tích tự động lớn, vì vậy tôi không muốn có một sự tẻ nhạt bước thủ công ngay cả khi nó rất dễ dàng.
gdaltindex clipper.shp clipper.tif
, tiếp theo làgdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif