¿Puede GDAL informar si un .tiff está en mosaico o no?

9

Una cierta pieza de software que utilizo no admite .tiff DEM que están en mosaico. ¿Hay alguna manera con una utilidad GDAL para determinar si un .tiff DEM está en mosaico o no?

gdalinfo dem.tif 

informará el tipo de compresión y el tipo de intercalación (banda / píxel), pero por lo que puedo decir, el tipo de intercalación no tiene nada que ver con el mosaico.

puede traducir el tiff DEM con un indicador de opción de creación para hacer un DEM sin mosaico, pero eso requiere una traducción y no solo un informe.

gdal_translate -co TILED=NO dem.tif dem_notile.tif
jamierob
fuente

Respuestas:

11

No he encontrado ninguna utilidad de línea de comandos específica que pueda informar si un tiff está en mosaico o rayado. Al menos no directamente o en una forma grepable como TILED=YES.

Sin gdalinfoembargo, debe haber suficiente información para tomar esa decisión.

Tengo una escena de Landsat, cada una hecha con 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

Por lo tanto, es obvio que los tiffs en mosaico tienen un tamaño de bloque Y mayor que 1. Los tiffs rayados tienen un tamaño de bloque X igual a XSize y un tamaño de bloque Y igual a 1.

Esto debería ser suficiente para determinar si están rayados (no en mosaico).

gdalinfo landsat_notiled.tif | grep -o 'Block=.*x1\s'
>>Block=7621x1

Si esa llamada devuelve algo, puede estar seguro de que NO está en mosaico.

Esto no aborda los tiffs muy pequeños, que pueden tener toda la matriz de ráster almacenada en un solo bloque. Entonces YMMV en esos ...

Logan Byers
fuente
2
Acabo de crear un tiff de mosaico de 50x1 con gdal_translate -srcwin 0 0 50 1 -co tiled=YES input.tif test_tiled.tif. gdalinfotodavía informa, por Block=256x256lo que su método también funcionará para pequeños tiffs.
usuario2856