У меня есть папка с данными ГИС, которая состоит в основном из файлов GeoTIFF. Весь набор весит около 1.2 GB
. Я заметил, что, если я упакую содержимое в тарбол, оно сократится примерно до 82 MB
. Я хотел бы проверить набор в системе контроля версий, так чтобы над ним могли работать другие люди, и похоже, что есть место, которое можно выжать.
На странице драйвера GDAL GeoTIFF перечислено множество параметров, которые можно использовать для создания сжатых файлов GeoTIFF. Есть также много опций, которые влияют на работу каждого алгоритма.
Страница справки хорошо описывает параметры, но не раскрывает, как выбрать алгоритм или компромиссы, связанные с различным уровнем сжатия. Это приводит к следующим вопросам:
Плюсы использования сжатия - это значительная экономия места. Какие минусы? Потеряна ли информация при сжатии изображения?
Как следует выбирать алгоритм и уровень сжатия? Некоторые типы изображений поддаются определенному алгоритму?
источник
С
lzw
иdeflate
сжатия , используя-co predictor=2
могут помочь с образами , которые плавно изменяющимися , как он сжимает отличия от пикселя к пикселю вместо абсолютных значений, и они будут иметь тенденцию быть маленькими и имеют больше моделей ( реф ). Предиктор полезен только сlzw
иdeflate
сжатием, опция не влияет на другие методы.Экономия предсказателя может быть драматичной. Я просто повторно сжал каталог с 16-битными моделями высот геотифов, используя 17 ГБ с настройками LZW по умолчанию, до 5 ГБ с предсказателем = 2.
Существует противоречивая информация о различиях между предикторами 2 и 3 и о том, когда каждый из них лучше всего применяется ( ref1 , ref2 ). Возможно, топливо для другого вопроса.
Еще один простой вариант для экономии
-co tiled=yes
. Есть некоторые программы, которые не могут читать мозаичные изображения, но они становятся все реже и в основном за пределами ГИС (сейчас я не знаю ни одного основного программного обеспечения ГИС, которое их не читает).Чтобы построить ответ @ alfonx об использовании сжатых обзоров : это позволяет хранить базовое изображение без потерь, для обеспечения целостности данных, а пирамиды - с потерями, для скорости и некоторой экономии пространства. Это почти лучшее из обоих миров. Для наименьших возможных обзоров с
gdaladdo
изображениями RGB: используйте сжатие JPEG, усредненную или гауссовскую повторную выборку вместо ближайшего соседа по умолчанию (делает обзоры более плавными) и фотометрический обзор YCBCR. См. Справочную страницу gdaladdo для получения дополнительной информации об этих параметрах (хотя это не говорит о том, что такое фотометрический).Это часть пакетного файла Windows, который я использую для применения внешних обзоров jpeg ко всем файлам в каталоге:
Примечания
В GDAL 1.6.0 введена
gauss
передискретизация, которая может привести к лучшим результатамaverage
в случае острых краев с высокой контрастностью или шумными рисунками. Необходимо использовать полномочия 2 уровней (2 4 8 ...), чтобы было выбрано ядро Гаусса с передискретизацией 3x3.JPEG_QUALITY_OVERVIEW 85
- если не указано, используется значение по умолчанию 75%, что дает меньший файл, но я считаю, что 85% - лучший компромисс в соотношении размера и качества.Обновление, 2015: GDAL 1.8 и 2.0 представили много новых опций, которые здесь не описаны, и которые я не успел переварить. Читайте официальную страницу формата gtiff , я уверен, что есть дополнительные полезные настройки подробно.
источник
Для больших растров GeoTiff предлагает возможность сохранять (предварительно) уменьшенные изображения в виде дополнительных изображений в файле GeoTiff. Это можно сделать с помощью gdaladdo (= GDAL ADD Overview). При создании этих обзоров вы можете вручную указать gdal их сжать:
Ускоряет просмотр ваших данных без добавления слишком большого размера. Примечание: приложения Geotools, такие как Geoserver, uDig, AtlasStyler, Geopublisher, могут использовать эту функцию и получать прибыль от обзоров.
источник
Чтобы включить частичную декомпрессию изображения, просто используйте TILED = YES.
Питер
источник
В конечном итоге вам, вероятно, придется поэкспериментировать с различными вариантами и посмотреть, что отвечает вашим потребностям.
Я все чаще использую сжатые JPEG файлы GeoTIFF по сравнению с вейвлет-форматами. Мои результаты были довольно хорошими. Использование для этого GDAL позволило получить коэффициенты сжатия, сопоставимые с форматами на основе вейвлетов, без потери данных. Хит производительности, который приходит с декомпрессией, был приемлемым.
Что мне больше всего нравится в этом подходе, так это то, что поддержка GeoTIFF является почти универсальной, в то время как поддержка форматов на основе вейвлетов не всегда гарантирована, и иногда возникают острые проблемы с лицензированием.
источник
Мой опыт сравнения сжатия GeoTIFF и Earth Resource Mapping в ECW ( расширенный сжатый вейвлет ) показывает, что ECW на несколько порядков лучше при сжатии аэрофотоснимков высокого разрешения. Другим важным преимуществом вейвлет-сжатия является то, что, в отличие от более старых форматов, таких как GeoTIFF, JPEG, а не JPEG 2000 , может быть распакована только часть изображения [ссылка. 1]. Важность этого преимущества не следует недооценивать, особенно при работе с «размером, превышающим половину объема памяти компьютера».
Кажется - у меня никогда не было возможности протестировать это - что MrSID , другой пропиетарный формат файлов, основанный на вейвлетах, также демонстрирует более высокие коэффициенты сжатия, чем «более старые» форматы и выборочную декомпрессию.
ссылка 1: http://www.ifp.uni-stuttgart.de/publications/phowo01/Ueffing.pdf
источник
Ответы @dodobas и @ matt-wilkie охватывают почти все, что касается сжатия и размытия с помощью GDAL для уменьшения размера изображения.
Я хотел бы добавить две вещи:
-co
), а именно:COMPRESS
NUM_THREADS
PREDICTOR
ZLEVEL
Например, GeoServer не рекомендует сжимать GeoTIFF :
Это особенно верно, если уже используются обзоры, листы и высокопроизводительный носитель (корпоративный диск или SSD).
источник
Для тех, кто использует более новые версии GDAL, также доступны варианты сжатия без потерь ZStandard ( ZSTD ) (GDAL> = 2.3) и сжатия с ограниченным растровым сжатием с потерями ( LERC ) (GDAL> = 2.4).
В целом, однако,
ZSTD
предлагает более высокие скорости чтения данных, чем оба,LZW
иDEFLATE
с аналогичными коэффициентами сжатия, хотя это может быть несколько медленнее при записи файла (в зависимости от того, какие настройки вы используете).Если вы не слишком беспокоитесь о точности данных (например, выполняете только визуализацию, а не анализ), то это
LERC
может быть хорошим вариантом. СуществуетMAX_Z_ERROR
настройка, позволяющая настроить точность, которой вы готовы пожертвовать. Например, aMAX_Z_ERROR=0.001
или 1 мм дали экономию пространства на 50% в одном тесте (см. Ссылку ).Самое приятное то, что вы также можете сочетать
LERC
сZSTD
использованиемCOMPRESS=LERC_ZSTD
! Или, если вы предпочитаете использоватьDEFLATE
, вы можете сделатьCOMPRESS=LERC_DEFLATE
. Смотрите также полный список комбинаций / настроек в официальных документах GDAL GeoTIFF https://gdal.org/drivers/raster/gtiff.html#creation-optionsБолее подробную информацию и полное сравнение можно найти по этой ценной ссылке:
источник