Ich habe einen Ordner mit GIS-Daten, der hauptsächlich aus GeoTIFF-Dateien besteht. Das ganze Set wiegt etwa 1.2 GB
. Mir ist aufgefallen, dass wenn ich den Inhalt in einen Tarball packe, er auf ungefähr zerschmettert 82 MB
. Ich möchte das Set in ein Revisionskontrollsystem einchecken, an dem andere arbeiten können, und es sieht so aus, als gäbe es etwas Platz, der herausgedrückt werden könnte.
Auf der GDAL GeoTIFF- Treiberseite sind zahlreiche Optionen aufgeführt, die zum Erstellen komprimierter GeoTIFF-Dateien verwendet werden können. Es gibt auch viele Optionen, die sich auf die Funktionsweise der einzelnen Algorithmen auswirken.
Auf der Hilfeseite werden die Optionen gut beschrieben, es wird jedoch nicht näher erläutert, wie ein Algorithmus oder die mit der unterschiedlichen Komprimierungsstufe verbundenen Kompromisse ausgewählt werden. Dies führt zu folgenden Fragen:
Die Vorteile der Komprimierung sind dramatische Platzersparnisse. Was sind die Nachteile? Gehen Informationen verloren, wenn das Bild komprimiert wird?
Wie soll man bei der Auswahl eines Algorithmus und einer Komprimierungsstufe vorgehen? Bieten sich einige Bildtypen für einen bestimmten Algorithmus an?
quelle
Die Verwendung von
lzw
unddeflate
Komprimierung-co predictor=2
kann bei Bildern hilfreich sein, die sich gleichmäßig ändern, da die Unterschiede von Pixel zu Pixel anstelle der absoluten Werte komprimiert werden. Diese sind in der Regel klein und weisen mehr Muster auf ( ref ). Predictor ist nur mitlzw
unddeflate
Komprimierung nützlich , die Option hat bei anderen Methoden keine Auswirkung.Die Einsparungen beim Prädiktor können dramatisch sein. Ich habe gerade ein Verzeichnis von 16-Bit-Geotiff-Höhenmodellen mit bis zu 17 GB mit den Standard-LZW-Einstellungen in nur 5 GB mit Predictor = 2 neu komprimiert.
Es gibt widersprüchliche Informationen zu den Unterschieden zwischen den Prädiktoren 2 und 3 und zu den Zeitpunkten, zu denen sie am besten angewendet werden ( ref1 , ref2 ). Vielleicht Treibstoff für eine andere Frage.
Eine weitere einfache Möglichkeit zum Sparen ist
-co tiled=yes
. Es gibt einige Programme, die gekachelte Bilder nicht lesen können, aber diese werden seltener und meistens außerhalb von GIS (ich kenne derzeit keine GIS-Hauptsoftware, die sie nicht liest).So bauen Sie auf der Antwort von @alfonx auf , komprimierte Übersichten zu verwenden : Auf diese Weise können Sie das Basis-Image aus Gründen der Datenintegrität verlustfrei und die Pyramiden aus Gründen der Geschwindigkeit und der Platzersparnis verlustfrei speichern. Es ist fast das Beste aus beiden Welten. Für die kleinstmöglichen Übersichten mit
gdaladdo
RGB-Bildern: Verwenden Sie JPEG-Komprimierung, gemitteltes oder Gauß-Resampling anstelle des nächstgelegenen Standardnachbarn (glättet die Übersichten) und photometrische YCBCR-Übersicht. Weitere Informationen zu diesen Optionen finden Sie auf der gdaladdo-Referenzseite (obwohl nicht viel darüber ausgesagt wird, worum es bei der Fotometrie geht).Dies ist Teil einer Windows-Batchdatei, mit der ich externe JPEG-Übersichten auf alle Tiffs in einem Verzeichnis anwende:
Anmerkungen
Mit GDAL 1.6.0 wurde ein
gauss
Resampling eingeführt, dasaverage
bei scharfen Kanten mit hohem Kontrast oder verrauschten Mustern zu besseren Ergebnissen führen kann . Potenzen von 2 Stufen (2 4 8 ...) sollten verwendet werden, damit ein 3x3-Resampling-Gauß-Kernel ausgewählt wird.JPEG_QUALITY_OVERVIEW 85
- Wenn nicht angegeben, wird der Standardwert von 75% verwendet, wodurch sich eine kleinere Datei ergibt. 85% sind jedoch ein besserer Kompromiss zwischen Größe und Qualität.Update, 2015: GDAL 1.8 und 2.0 haben viele neue Optionen eingeführt, die hier nicht behandelt werden und für die ich keine Zeit hatte, sie zu verdauen. Lesen Sie die offizielle Seite zum Gtiff-Format . Ich bin sicher, dass dort weitere nützliche Einstellungen aufgeführt sind.
quelle
Für große Raster bietet GeoTiff die Möglichkeit, (vor-) verkleinerte Übersichten als zusätzliche Bilder in der GeoTiff-Datei zu speichern. Dies kann mit gdaladdo (= GDAL ADD Overview) erfolgen. Wenn Sie diese Übersichten erstellen, können Sie gdal manuell anweisen, sie auch zu komprimieren:
Beschleunigt das Anzeigen Ihrer Daten, ohne zu viel Größe hinzuzufügen. Hinweis: Geotool-Anwendungen wie Geoserver, uDig, AtlasStyler und Geopublisher können diese Funktion nutzen und von Übersichten profitieren.
quelle
Verwenden Sie zum Aktivieren der teilweisen Bilddekomprimierung einfach TILED = YES.
Peter
quelle
Letztendlich müssen Sie wahrscheinlich mit den verschiedenen Optionen experimentieren und herausfinden, was Ihren Anforderungen entspricht.
Ich habe verstärkt JPEG-komprimierte GeoTIFFs über Wavelet-basierte Formate verwendet. Meine Ergebnisse waren ziemlich gut. Die Verwendung von GDAL zu diesem Zweck hat zu Komprimierungsverhältnissen geführt, die mit Wavelet-basierten Formaten ohne zu großen Datenverlust vergleichbar sind. Der mit der Dekomprimierung einhergehende Leistungseinbruch war akzeptabel.
Was mir an diesem Ansatz am besten gefällt, ist, dass die GeoTIFF-Unterstützung fast universell ist, während die Unterstützung von Wavelet-basierten Formaten nicht immer gewährleistet ist und manchmal heiklen Lizenzproblemen unterliegt.
quelle
Meine Erfahrung beim Vergleich der ECW- Komprimierung ( Enhanced Compressed Wavelet ) von GeoTIFF mit der Earth Resource Mapping- Komprimierung zeigt, dass die ECW-Komprimierung bei hochauflösenden Luftbildern um Größenordnungen besser ist. Ein weiterer wichtiger Vorteil der Wavelet-basierten Komprimierung ist, dass im Gegensatz zu älteren Formaten wie GeoTIFF, JPEG - und nicht JPEG 2000 - nur ein Teil des Bildes dekomprimiert werden kann [Ref. 1]. Die Wichtigkeit dieses Vorteils darf nicht unterschätzt werden, insbesondere wenn mit "mehr als etwa der Hälfte des Computerspeichers" gearbeitet wird.
Es scheint - ich hatte nie die Gelegenheit, es zu testen -, dass MrSID , ein anderes proprietäres, Wavelet-basiertes Dateiformat, auch höhere Komprimierungsraten als "ältere" Formate und selektive Dekomprimierung aufweist.
ref. 1: http://www.ifp.uni-stuttgart.de/publications/phowo01/Ueffing.pdf
quelle
Die Antworten von @dodobas und @ matt-wilkie decken fast alles ab, was mit dem Komprimieren und Verwischen mit GDAL zur Reduzierung der Bildgröße zu tun hat .
Ich möchte zwei Dinge hinzufügen:
-co
), insbesondere:COMPRESS
NUM_THREADS
PREDICTOR
ZLEVEL
GeoServer empfiehlt beispielsweise nicht , GeoTIFFs zu komprimieren :
Dies gilt insbesondere dann, wenn Sie bereits Übersichten, Kacheln und Hochleistungsspeichermedien (Enterprise-Grade-Festplatten oder SSDs) verwenden.
quelle
Für diejenigen neueren GDAL Versionen verwenden, gibt es auch die lossless ZStandard ( ZSTD ) Kompression (GDAL> = 2.3) und verlustbehaftete begrenzte Fehler Raster Compression ( LERC ) Kompression (GDAL> = 2.4) Möglichkeiten zur Verfügung.
Im Allgemeinen
ZSTD
bietet es jedoch schnellere Datenlesegeschwindigkeiten als beideLZW
undDEFLATE
ähnliche Komprimierungsraten, obwohl es beim Schreiben der Datei etwas langsamer sein kann (abhängig von den von Ihnen verwendeten Einstellungen).Wenn Sie nicht so viel Wert auf Datenpräzision legen (z. B. nur Visualisierung statt Analyse), ist dies
LERC
möglicherweise eine gute Option. Es gibt eineMAX_Z_ERROR
Einstellung, mit der Sie festlegen können, wie viel Präzision Sie opfern möchten. ZB einMAX_Z_ERROR=0.001
oder gab 1mm einen Raum von 50% in einer Benchmark - Speichern (siehe ref ).Das Beste daran ist, dass Sie auch
LERC
mit demZSTD
Verwenden kombinieren könnenCOMPRESS=LERC_ZSTD
! Oder wenn Sie es vorziehenDEFLATE
, können Sie tunCOMPRESS=LERC_DEFLATE
. Siehe auch die vollständige Liste der Kombinationen / Einstellungen in den offiziellen GDAL GeoTIFF-Dokumenten https://gdal.org/drivers/raster/gtiff.html#creation-optionsWeitere Details und vollständige Benchmark-Vergleiche finden Sie unter dieser wertvollen Referenz:
quelle