Tôi không tìm thấy bất kỳ tiện ích dòng lệnh cụ thể nào có thể báo cáo nếu một tiff bị lát gạch hoặc sọc. Ít nhất là không trực tiếp hoặc ở dạng grepable như TILED=YES
.
Tuy nhiên, cần có đủ thông tin gdalinfo
để đưa ra quyết định.
Tôi có một cảnh đất liền, mỗi cảnh được thực hiện bằng gdal_translate:
landsat_tiled.tif
: -co TILED=YES
landsat_notiled.tif
: -co TILED=NO
gdalinfo landsat_tiled.tif | grep -E 'Block=|Size is'
>>Size is 7621, 7791
>>Band 1 Block=256x256 Type=UInt16, ColorInterp=Gray
gdalinfo landsat_notiled.tif | grep -E 'Block=|Size is'
>>Size is 7621, 7791
>>Band 1 Block=7621x1 Type=UInt16, ColorInterp=Gray
Vì vậy, rõ ràng là các tiff lát gạch có kích thước khối Y lớn hơn 1. Các tiff sọc có kích thước khối X bằng với kích thước khối XSize và khối Y bằng 1.
Điều này là đủ để xác định nếu chúng là sọc (không lát gạch).
gdalinfo landsat_notiled.tif | grep -o 'Block=.*x1\s'
>>Block=7621x1
Nếu cuộc gọi đó trả về bất cứ điều gì, bạn có thể chắc chắn rằng nó KHÔNG được lát gạch.
Điều này không giải quyết các tiff rất nhỏ, có thể có toàn bộ mảng raster được lưu trữ trong một khối duy nhất. Vì vậy, YMMV trên những ..
gdal_translate -srcwin 0 0 50 1 -co tiled=YES input.tif test_tiled.tif
.gdalinfo
vẫn báo cáoBlock=256x256
để phương pháp của bạn cũng sẽ làm việc cho các tiff nhỏ.