Saya memiliki folder data GIS yang sebagian besar terdiri dari file GeoTIFF. Seluruh set memiliki berat sekitar 1.2 GB
. Saya perhatikan bahwa jika saya mengemas isinya ke dalam tarball, itu hancur sekitar 82 MB
. Saya ingin memeriksa set ke sistem kontrol revisi sehingga dapat dikerjakan oleh orang lain dan sepertinya ada beberapa ruang yang dapat diperas.
Halaman driver GDAL GeoTIFF mencantumkan banyak opsi yang dapat digunakan untuk membuat file GeoTIFF terkompresi. Ada juga banyak opsi yang memengaruhi cara kerja setiap algoritma.
Halaman bantuan melakukan pekerjaan yang baik dalam menggambarkan opsi tetapi tidak menguraikan cara memilih algoritma atau pengorbanan yang terkait dengan berbagai tingkat kompresi. Ini mengarah pada pertanyaan-pertanyaan berikut:
Kelebihan menggunakan kompresi adalah penghematan ruang yang dramatis. Apa yang kontra? Apakah informasi hilang ketika gambar dikompresi?
Bagaimana seharusnya seseorang memilih algoritma dan tingkat kompresi. Apakah beberapa jenis gambar cocok untuk algoritma tertentu?
sumber
Dengan
lzw
dandeflate
kompresi, penggunaan-co predictor=2
dapat membantu pencitraan yang bervariasi dengan lancar karena mengompres perbedaan dari piksel ke piksel alih-alih nilai absolut, dan ini cenderung kecil dan memiliki lebih banyak pola ( ref ). Predictor hanya berguna denganlzw
dandeflate
kompresi, opsi tidak berpengaruh dengan metode lain.Tabungan prediktor bisa dramatis. Saya baru saja mengkompres ulang direktori model elevasi geotiff 16bit yang menggunakan hingga 17GB dengan pengaturan LZW default menjadi hanya 5GB dengan prediktor = 2.
Ada info yang bertentangan tentang perbedaan antara prediktor 2 & 3 dan kapan masing-masing diterapkan terbaik ( ref1 , ref2 ). Mungkin bahan bakar untuk pertanyaan lain.
Pilihan lain yang mudah untuk ditabung adalah
-co tiled=yes
. Ada beberapa perangkat lunak yang tidak dapat membaca gambar ubin, tetapi itu menjadi lebih jarang dan sebagian besar di luar GIS (Saya tidak tahu ada perangkat lunak GIS aliran utama sekarang yang tidak membacanya).Untuk membangun jawaban @ alfonx tentang penggunaan ikhtisar terkompresi : Ini memungkinkan gambar dasar disimpan tanpa kehilangan, untuk integritas data, dan piramida menjadi lossy, untuk kecepatan dan penghematan ruang. Ini hampir yang terbaik dari kedua dunia. Untuk ikhtisar sekecil mungkin dengan
gdaladdo
pada gambar RGB: gunakan kompresi jpeg, rata-rata atau gaussian resampling alih-alih tetangga terdekat default (membuat ikhtisar lebih halus), dan ikhtisar fotometrik YCBCR. Lihat halaman referensi gdaladdo untuk info lebih lanjut tentang opsi-opsi ini (meskipun tidak banyak berbicara tentang apa itu fotometrik).Ini adalah bagian dari file batch windows yang saya gunakan untuk menerapkan ikhtisar jpeg eksternal ke semua tiffs dalam direktori:
Catatan
GDAL 1.6.0 memperkenalkan
gauss
resampling yang dapat menghasilkan hasil yang lebih baikaverage
jika tepi tajam dengan kontras tinggi atau pola bising. Powers 2 level (2 4 8 ...) harus digunakan sehingga kernel Gaussian resampling 3x3 dipilih.JPEG_QUALITY_OVERVIEW 85
- jika tidak ditentukan, default 75% digunakan, yang menghasilkan file lebih kecil, tapi saya menemukan 85% kompromi yang lebih baik dalam ukuran vs kualitas trade off.Pembaruan, 2015: GDAL 1.8 dan 2.0 telah memperkenalkan banyak opsi baru yang tidak tercakup di sini dan yang belum sempat saya cerna. Baca halaman format gtiff resmi , saya yakin ada pengaturan berguna tambahan rinci.
sumber
Untuk raster besar, GeoTiff menawarkan kemungkinan untuk menyimpan (pra-) ikhtisar yang diturunkan sebagai gambar tambahan ke file GeoTiff. Ini dapat dilakukan dengan gdaladdo (= Ikhtisar GDAL ADD). Saat membuat ikhtisar ini, Anda dapat secara manual memberi tahu gdal untuk mengompresnya juga:
Mempercepat melihat data Anda tanpa menambahkan ukuran terlalu banyak. Catatan: Aplikasi Geotools seperti Geoserver, uDig, AtlasStyler, Geopublisher semuanya dapat menggunakan fitur ini dan mendapat keuntungan dari ikhtisar.
sumber
Untuk mengaktifkan dekompresi gambar parsial, cukup gunakan TILED = YES.
Peter
sumber
Pada akhirnya Anda mungkin perlu bereksperimen dengan berbagai opsi dan melihat apa yang memenuhi kebutuhan Anda.
Saya telah meningkatkan penggunaan GeoTIFF yang dikompresi JPEG melalui format berbasis wavelet. Hasil saya cukup bagus. Menggunakan GDAL untuk melakukan ini telah menghasilkan rasio kompresi yang sebanding dengan format berbasis wavelet tanpa terlalu banyak kehilangan data. Hit kinerja yang datang dengan dekompresi telah diterima.
Yang paling saya sukai dari pendekatan ini adalah bahwa dukungan GeoTIFF hampir universal, sementara dukungan untuk format berbasis wavelet tidak selalu terjamin dan kadang-kadang tunduk pada masalah perizinan yang sulit.
sumber
Pengalaman saya membandingkan kompresi ECW GeoTIFF vs Earth Resource Mapping ( Enhanced Compressed Wavelet ) adalah bahwa ECW adalah urutan besarnya lebih baik ketika mengompresi foto udara resolusi tinggi. Keuntungan penting lain dari kompresi berbasis wavelet adalah bahwa, tidak seperti format lama seperti GeoTIFF, JPEG - bukan JPEG 2000 -, hanya sebagian gambar yang dapat didekompresi [ref. 1]. Pentingnya keunggulan ini tidak boleh diremehkan, khususnya ketika bekerja dengan "lebih besar dari sekitar setengah ukuran memori komputer".
Tampaknya - saya tidak pernah memiliki kesempatan untuk mengujinya - bahwa MrSID , format file berbasis wavelet lainnya, juga menunjukkan rasio kompresi yang lebih tinggi daripada format "lama" dan dekompresi selektif.
ref. 1: http://www.ifp.uni-stuttgart.de/publications/phowo01/Ueffing.pdf
sumber
Jawaban oleh @dodobas dan @ matt-wilkie mencakup hampir semua yang berhubungan dengan tindakan mengompresi dan mengaburkan dengan GDAL untuk mengurangi ukuran gambar.
Saya ingin menambahkan dua hal:
-co
), khususnya:COMPRESS
NUM_THREADS
PREDICTOR
ZLEVEL
Misalnya, GeoServer tidak merekomendasikan kompresi GeoTIFFs :
Ini terutama benar jika sudah menggunakan ikhtisar, ubin, dan media penyimpanan berkinerja tinggi (disk kelas perusahaan atau SSD).
sumber
Bagi mereka yang menggunakan versi GDAL yang lebih baru, ada juga kompresi ZStandard ( ZSTD ) lossless (GDAL> = 2.3) dan kompresi Raster Compression ( LERC ) lossy (GDAL> = 2.4) yang tersedia.
Namun secara umum,
ZSTD
menawarkan kecepatan membaca data yang lebih cepat daripada keduanyaLZW
danDEFLATE
dengan rasio kompresi yang serupa, meskipun bisa agak lambat ketika menulis file (tergantung pada pengaturan apa yang Anda gunakan).Jika Anda tidak terlalu fokus pada ketepatan data (mis. Hanya melakukan visualisasi daripada analisis), maka itu
LERC
mungkin merupakan pilihan yang baik. AdaMAX_Z_ERROR
pengaturan yang memungkinkan Anda menyesuaikan seberapa banyak presisi yang ingin Anda korbankan. Misalnya aMAX_Z_ERROR=0.001
atau 1mm memberikan penghematan ruang 50% dalam satu patokan (lihat ref ).Bagian terbaiknya adalah Anda juga dapat menggabungkan
LERC
denganZSTD
menggunakanCOMPRESS=LERC_ZSTD
! Atau jika Anda lebih suka menggunakanDEFLATE
, Anda bisa melakukannyaCOMPRESS=LERC_DEFLATE
. Lihat juga daftar lengkap kombinasi / pengaturan di dokumen resmi GDAL GeoTIFF https://gdal.org/drivers/raster/gtiff.html#creation-optionsLebih detail dan perbandingan benchmark lengkap dapat ditemukan di referensi berharga ini:
sumber