Kann GDAL melden, ob ein .tiff gekachelt ist oder nicht?

9

Eine bestimmte Software, die ich verwende, unterstützt keine gekachelten .tiff-DEMs. Gibt es eine Möglichkeit mit einem GDAL-Dienstprogramm zu bestimmen, ob ein .tiff-DEM gekachelt ist oder nicht?

gdalinfo dem.tif 

wird den Komprimierungstyp und den Interleave-Typ (Band / Pixel) melden, aber soweit ich das beurteilen kann, hat der Interleave-Typ nichts mit Kacheln zu tun.

Sie können das tiff-DEM mit einem Erstellungsoptionsflag übersetzen, um ein bearbeitetes DEM zu erstellen. Dies erfordert jedoch eine Übersetzung und nicht nur einen Bericht.

gdal_translate -co TILED=NO dem.tif dem_notile.tif
Jamierob
quelle

Antworten:

11

Ich habe kein bestimmtes Befehlszeilenprogramm gefunden, das melden kann, ob ein Tiff gekachelt oder gestreift ist. Zumindest nicht direkt oder in greifbarer Form wie TILED=YES.

Es sollten jedoch genügend Informationen vorhanden sein gdalinfo, um diese Entscheidung zu treffen.

Ich habe eine Landsat-Szene, jede mit gdal_translate erstellt:

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

Es ist also offensichtlich, dass gekachelte Tiffs eine Y-Blockgröße größer als 1 haben. Gestreifte Tiffs haben eine X-Blockgröße gleich XSize und eine Y-Blockgröße gleich 1.

Dies sollte ausreichen, um festzustellen, ob sie gestreift (nicht gekachelt) sind.

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

Wenn dieser Aufruf etwas zurückgibt, können Sie sicher sein, dass er NICHT gekachelt ist.

Dies betrifft nicht sehr kleine Tiffs, bei denen das gesamte Raster-Array in einem einzigen Block gespeichert werden kann. Also YMMV auf denen ..

Logan Byers
quelle
2
Ich habe gerade ein gekacheltes 50x1-Tiff mit erstellt gdal_translate -srcwin 0 0 50 1 -co tiled=YES input.tif test_tiled.tif. gdalinfomeldet immer noch, Block=256x256damit Ihre Methode auch für kleine Tiffs funktioniert.
user2856