Obcinanie obrazu rastrowego zwiększa rozmiar pliku

9

Pracując z QGIS 2.4.0 Chugiak Mam pytanie dotyczące obcinania obrazów rastrowych. Mam zdjęcie lotnicze, które chcę wyciąć przy użyciu pliku kształtu. Jak dotąd tak dobrze, użyłem do tego narzędzia raster / ekstrakcja / clipper. Problem polega na tym, że rozmiar mojego wyjściowego rastra jest prawie trzy razy większy niż oryginalny plik (tj. Odpowiednio 725,283 i 249,693 kb), podczas gdy zajmuje mniejszą powierzchnię.

Dlaczego mój plik jest większy? Czy jest jakiś sposób na „ustawienie” rozmiaru pliku wyjściowego?

Funkcja pomocy strzyżenia odnosi się do następującej strony: http://www.gdal.org/gdal_translate.html Chociaż nie mogę wiele z tego zrobić.

Jestem stosunkowo nowy w QGIS.

Mathijs
źródło
Zwykle oznacza to, że oryginał jest skompresowany, ale obcięta tiff jest nieskompresowana. Musisz przeczytać o sterowniku GDAL GeoTIFF i opcjach kompresji.
user30184,
Jeśli chcesz zastosować kompresję w wyjściowym zbiorze danych, musisz edytować polecenie, jak pokazano na dole interfejsu Clippera i dołączyć opcje tworzenia do -coflagi. W przypadku GeoTiff można na przykład -co compress=lzwzastosować bezstratną kompresję LZW. Musielibyśmy jednak wiedzieć więcej o twoim zestawie danych, aby móc ci pomóc (na przykład przez gdlainfo).
Kersten
Nieskompresowane obrazy TIFF są zwykle szybsze.
Zoltan
Dzięki wszystkim za odpowiedzi. To może być problem kompresji, nie myślałem o tym. Tak, Kersten Zauważyłem konsolę w interfejsie maszynki do strzyżenia, chociaż nie zastanawiałem się, jak z tego korzystać. Próbuję uruchomić gdalinfo z konsoli Python w QGIS, ale nie mam z tym doświadczenia. Czy ktoś zna odpowiedni samouczek do zapoznania się? Na zdrowie
Mathijs,
Można pójść do Raster > Miscellaneous > Informationsię gdalinfopracować na pliku rastrowego. Nie można go uruchomić bezpośrednio z konsoli Python, ponieważ nie jest to skrypt Pythona.
bosth

Odpowiedzi:

6

Po uruchomieniu narzędzia klipu rastrowego w QGIS pokazuje ono dokładne polecenie GDAL, które zostanie uruchomione w dolnej części okna dialogowego.

Narzędzie do klipsów rastrowych

Klikając przycisk pióra po prawej stronie polecenia, możesz go edytować bezpośrednio i dodać opcję konfiguracji kompresji. W moim przykładzie jest to polecenie początkowe:

gdalwarp -q -cutline /tmp/mask.shp -crop_to_cutline -of GTiff /tmp/453A.tif /tmp/output.tif

Możesz zmienić to na:

gdalwarp -q -cutline /tmp/mask.shp -crop_to_cutline -of GTiff -co "COMPRESS=LZW" /tmp/453A.tif /tmp/output.tif

Dodatek -co "COMPRESS=LZW"to tylko jedna z wielu możliwych opcji kompresji, których można używać z plikami GeoTIFF. Dokumentacja GDAL zawiera więcej informacji na temat wszystkich opcji.

bosth
źródło
Wielkie dzięki, właśnie tego potrzebowałem. Plik ma nadal rozmiar 409,019 kb, więc jest prawie dwa razy większy niż oryginał, ale renderowanie jest znacznie szybsze. Witrynę, którą widziałem, ale nie mogłem jej wiele zrozumieć. Gdalinfo wykazał, że kompresja była rzeczywiście „zaznaczona” dla pierwszego klipu, więc to rzeczywiście był problem.
Mathijs,
Po uruchomieniu gdalinfo, co zgłasza kompresja? Powinniśmy być w stanie replikować go w drugim pliku, gdy tylko będziemy wiedzieć. Domyślam się, że może to być stratny JPEG, jeśli jest znacznie mniejszy niż LZW.
bosth
Tak jest napisane w przypadku oryginalnego obrazu: „Rozmiar piksela = (0,000738433000001, -0.000738432999949) Metadane: AREA_OR_POINT = Metadane struktury obrazu obszaru: COMPRESSION = LZW INTERLEAVE = PIXEL” i tak jest w przypadku obciętego obrazu: „Rozmiar piksela = (0,000738423955088, -0.000738437979722) Metadane: AREA_OR_POINT = Metadane struktury obrazu obszaru: KOMPRESJA = WKŁAD LZW = PIXEL '
Mathijs
Czy to możliwe, że przypadkowo dostałeś metadane dla tego samego obrazu dwa razy, ponieważ oba są takie same?
bosth
Nie są, spójrz na rozmiar w pikselach;)
Mathijs,
0

Aktualizacja dla QGIS w wersji 3 i nowszych: opcja kompresji jest teraz zintegrowana z wtyczką Raster-> Extraction-> Clip raster by mask layeri większością innych wtyczek tworzących pliki rastrowe.

Pod Advanced parameters-> Profile, wybierając albo Low compressionczy High compressionprzyniesie mniejszy plik.

Te opcje kompresji są bezstratne, ale możesz także wybrać opcje stratne:

  • Low compression -> -co PACKBITS(bezstratne)
  • High compression-> -co DEFLATE(bezstratne)
  • JPEG compression-> -co JPEG_QUALITY=75(stratny: strzeż się!)

Przycinaj raster według warstwy maski

RafDouglas
źródło