Mam folder danych GIS, który składa się głównie z plików GeoTIFF. Cały zestaw waży około 1.2 GB
. Zauważyłem, że jeśli spakuję zawartość do tarballa, rozbije się do około 82 MB
. Chciałbym sprawdzić zestaw w systemie kontroli wersji, który może być obsługiwany przez inne osoby i wygląda na to, że jest trochę miejsca, które można wycisnąć.
Strona sterownika GDAL GeoTIFF zawiera wiele opcji, które można wykorzystać do tworzenia skompresowanych plików GeoTIFF. Istnieje również wiele opcji, które wpływają na sposób działania każdego algorytmu.
Strona pomocy ma dobrą robotę w opisywaniu opcji, ale nie wyjaśnia, jak wybrać algorytm lub kompromisy związane ze zmiennym poziomem kompresji. Prowadzi to do następujących pytań:
Zalety stosowania kompresji to radykalna oszczędność miejsca. Jakie są minusy? Czy informacje są tracone podczas kompresji obrazu?
Jak należy wybrać algorytm i poziom kompresji. Czy niektóre rodzaje obrazów nadają się do określonego algorytmu?
źródło
Z
lzw
ideflate
kompresji przy użyciu-co predictor=2
może przyczynić się do obrazowania, które są w różnym płynnie jak kompresowanie różnic z piksela piksela zamiast wartości bezwzględne, a to będzie na ogół małe i mają więcej wzorów ( ref ). Predictor jest przydatna tylko zlzw
ideflate
kompresji, opcja nie działa z innymi metodami.Oszczędności predyktorów mogą być ogromne. Właśnie ponownie skompresowałem katalog 16-bitowych modeli wysokości geotiff, używając do 17 GB przy domyślnych ustawieniach LZW do zaledwie 5 GB z predyktorem = 2.
Istnieją sprzeczne informacje na temat różnic pomiędzy predyktorami 2 & 3 i kiedy każdy jest najlepiej stosować ( ref1 , ref2 ). Być może paliwo na kolejne pytanie.
Inną łatwą opcją oszczędności jest
-co tiled=yes
. Istnieje oprogramowanie, które nie potrafi odczytać obrazów sąsiadujących, ale stają się one coraz rzadsze i przeważnie poza GIS (nie znam żadnego oprogramowania GIS głównego strumienia, które ich nie czyta).Opierając się na odpowiedzi @ alfonx na użycie skompresowanych przeglądów : Pozwala to na przechowywanie obrazu podstawowego bez strat, w celu zapewnienia integralności danych, a piramidy na straty, dla szybkości i oszczędności miejsca. To prawie najlepsze z obu światów. W celu uzyskania możliwie najmniejszych podglądów z
gdaladdo
obrazami RGB: użyj kompresji JPEG, uśrednionego lub gaussowskiego ponownego próbkowania zamiast domyślnego najbliższego sąsiada (wygładza podgląd) i przeglądu fotometrycznego YCBCR. Zobacz stronę referencyjną gdaladdo, aby uzyskać więcej informacji na temat tych opcji (choć niewiele mówi o tym, o co chodzi w fotometryce).Jest to część pliku wsadowego systemu Windows, którego używam do stosowania zewnętrznych przeglądów JPEG do wszystkich tiffów w katalogu:
Notatki
GDAL 1.6.0 wprowadził
gauss
ponowne próbkowanie, które może prowadzić do lepszych wynikówaverage
w przypadku ostrych krawędzi o wysokim kontraście lub głośnych wzorach. Należy użyć mocy 2 poziomów (2 4 8 ...), aby wybrać jądro Gaussa o ponownym próbkowaniu 3x3.JPEG_QUALITY_OVERVIEW 85
- jeśli nie jest określony, używana jest domyślna wartość 75%, co daje mniejszy plik, ale uważam, że 85% jest lepszym kompromisem w stosunku do kompromisu jakości.Aktualizacja, 2015: GDAL 1.8 i 2.0 wprowadziły wiele nowych opcji, które nie zostały tutaj omówione, a których nie miałem czasu do przeanalizowania. Przeczytaj oficjalną stronę formatu GTIFF , jestem pewien, że są szczegółowe dodatkowe przydatne ustawienia.
źródło
Dla dużych rastrów GeoTiff oferuje możliwość przechowywania (wstępnie) zmniejszonych przeglądów jako dodatkowych obrazów do pliku GeoTiff. Można to zrobić za pomocą gdaladdo (= Przegląd GDAL ADD). Podczas tworzenia tych przeglądów możesz ręcznie powiedzieć gdalowi, aby je również skompresował:
Przyspiesza przeglądanie danych bez zwiększania rozmiaru. Uwaga: aplikacje Geotools, takie jak Geoserver, uDig, AtlasStyler, Geopublisher, mogą korzystać z tej funkcji i korzystać z przeglądów.
źródło
Aby włączyć częściową dekompresję obrazu, wystarczy użyć TILED = TAK.
Piotr
źródło
Ostatecznie prawdopodobnie będziesz musiał poeksperymentować z różnymi opcjami i zobaczyć, co spełnia twoje potrzeby.
Coraz częściej korzystam z GeoTIFF-ów skompresowanych JPEG w porównaniu z formatami opartymi na falkach. Moje wyniki były całkiem dobre. Wykorzystanie do tego GDAL pozwoliło uzyskać współczynniki kompresji porównywalne z formatami opartymi na falkach, bez zbyt dużej utraty danych. Uderzenie wydajności związane z dekompresją jest do zaakceptowania.
To, co najbardziej podoba mi się w tym podejściu, to fakt, że obsługa GeoTIFF jest prawie uniwersalna, podczas gdy obsługa formatów falkowych nie zawsze jest zapewniona i czasami podlega trudnym problemom z licencjonowaniem.
źródło
Moje doświadczenie w porównaniu kompresji GeoTIFF z kompresją ECW ( Enhanced Compressed Wavelet ) w Mapowaniu Zasobów Ziemi polega na tym, że ECW jest o rząd wielkości lepszy podczas kompresji zdjęć lotniczych w wysokiej rozdzielczości. Kolejną ważną zaletą kompresji opartej na falkach jest to, że w przeciwieństwie do starszych formatów, takich jak GeoTIFF, JPEG - nie JPEG 2000 - tylko część obrazu można zdekompresować [ref. 1]. Nie można nie doceniać znaczenia tej przewagi, zwłaszcza przy pracy z „większym niż około połowy wielkości pamięci komputera”.
Wydaje się - nigdy nie miałem okazji go przetestować - że MrSID , inny zastrzeżony format pliku oparty na falkach, również wykazuje wyższy współczynnik kompresji niż „starsze” formaty i selektywną dekompresję.
ref. 1: http://www.ifp.uni-stuttgart.de/publications/phowo01/Ueffing.pdf
źródło
Odpowiedzi @dodobas i @ matt-wilkie obejmują większość wszystkiego, co dotyczy kompresji i rozmycia za pomocą GDAL w celu zmniejszenia rozmiaru obrazu.
Chciałbym dodać dwie rzeczy:
-co
), w szczególności:COMPRESS
NUM_THREADS
PREDICTOR
ZLEVEL
Na przykład GeoServer nie zaleca kompresji GeoTIFF :
Jest to szczególnie prawdziwe, jeśli już używasz przeglądów, kafelkowania i nośników pamięci o wysokiej wydajności (dysk klasy korporacyjnej lub dysk SSD).
źródło
Dla tych, którzy używają nowszych wersji GDAL, dostępna jest również bezstratna kompresja ZStandard ( ZSTD ) (GDAL> = 2.3) i stratna kompresja z ograniczonym błędem kompresji rastrowej ( LERC ) (GDAL> = 2.4).
Ogólnie rzecz biorąc,
ZSTD
oferuje szybsze prędkości odczytu danych niż obaLZW
iDEFLATE
przy podobnych współczynnikach kompresji, chociaż może być nieco wolniejszy podczas zapisywania pliku (w zależności od używanych ustawień).Jeśli nie troszczysz się o precyzję danych (np. Tylko wizualizację, a nie analizę), to
LERC
może być dobrym rozwiązaniem. IstniejeMAX_Z_ERROR
ustawienie, które pozwala dostosować, ile precyzji chcesz poświęcić. Np. AMAX_Z_ERROR=0.001
lub 1 mm dało oszczędność miejsca 50% w jednym teście (patrz odnośnik ).Najlepsze jest to, że możesz łączyć
LERC
zZSTD
użyciemCOMPRESS=LERC_ZSTD
! Lub jeśli wolisz używaćDEFLATE
, możesz to zrobićCOMPRESS=LERC_DEFLATE
. Zobacz także pełną listę kombinacji / ustawień na oficjalnych dokumentach GDAL GeoTIFF https://gdal.org/drivers/raster/gtiff.html#creation-optionsWięcej szczegółowych informacji i pełnych porównań porównawczych można znaleźć pod tym cennym odniesieniem:
źródło