GDAL peut-il signaler si un .tiff est en mosaïque ou non?

9

Un certain logiciel que j'utilise ne prend pas en charge les DEM .tiff qui sont en mosaïque. Existe-t-il un moyen avec un utilitaire GDAL pour déterminer si un DEM .tiff est en mosaïque ou non?

gdalinfo dem.tif 

rapportera le type de compression et le type d'entrelacement (bande / pixel), mais pour autant que je sache, le type d'entrelacement n'a rien à voir avec le pavage.

vous pouvez traduire le DEM tiff avec un indicateur d'option de création pour faire un DEM jusqu'à ce que cela soit nécessaire, mais cela nécessite une traduction et pas seulement un rapport.

gdal_translate -co TILED=NO dem.tif dem_notile.tif
jamierob
la source

Réponses:

11

Je n'ai trouvé aucun utilitaire de ligne de commande spécifique qui puisse signaler si un tiff est carrelé ou rayé. Du moins pas directement ou sous une forme grepable comme TILED=YES.

Cependant, il devrait y avoir suffisamment d'informations gdalinfopour prendre cette décision.

J'ai une scène Landsat, chacune faite avec 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

Il est donc évident que les tiffs carrelés ont une taille de bloc Y supérieure à 1. Les tiffs rayés ont une taille de bloc X égale à XSize et une taille de bloc Y égale à 1.

Cela devrait être suffisant pour déterminer s'ils sont rayés (non carrelés).

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

Si cet appel renvoie quelque chose, vous pouvez être sûr qu'il n'est PAS en mosaïque.

Cela ne concerne pas les très petits tiffs, qui peuvent avoir la totalité du tableau raster stockée dans un seul bloc. Alors YMMV sur ces ..

Logan Byers
la source
2
Je viens de créer un tiff 50x1 en mosaïque avec gdal_translate -srcwin 0 0 50 1 -co tiled=YES input.tif test_tiled.tif. gdalinforapporte toujours Block=256x256donc votre méthode fonctionnera également pour les petits tiffs.
user2856