Я пытаюсь обрезать большой ECW (подробности ниже), но растровый файл слишком велик для полной обработки.
Некоторые детали ECW ниже
Драйвер: ECW / ERDAS сжатые вейвлеты (SDK 5.0)
размер файла: 50 ГБ Размер 450000, 565081 Размер пикселя: 0,15 0,15 COLORSPACE = RGB COMPRESSION_RATE_TARGET = 9 VERSION = 2 Количество полос: 4
Область, которую я хочу обрезать, составляет примерно 1/5 от исходного файла.
Вот методы, которые я опробовал безуспешно:
Использовал Arcgis для сохранения ecw в tiff / другие форматы ... (я быстро сдался)
Использовал Qgis и его инструмент обрезки ... создание файла застряло на 40%.
Использовал gdal_translate из OSGeo4W с другими опциями, кроме Qgis. (Попробовал подумать, что МОЖЕТ освободить память, не используя Qgis)
Использовал gdal_retile, думая, что я бы разрезал изображение на части и взял то, что хотел. Команда "gdal_retile -ps 10000 10000 -of ecw -tileIndex tile.shp -targetDir input.ecw Это сбой еще быстрее"
У кого-нибудь есть идея?
Для информации я запускаю Windows 7 64bit на i5-3470 3,2 ГГц с 16 ГБ оперативной памяти.
Вы можете вырезать его напрямую с помощью инструмента gdal gdal_translate, если вы знаете координаты вашей области интересов, если она имеет географическую привязку:
Если не использовать
-srswin
флаг, как это:gdal_translate -srcwin [xoff yoff xsize ysize] infile outfile.
Другой вариант - создать «виртуальный» растр (из нескольких килобайт), который будет указывать на ваш начальный набор данных, с помощью gdalbuildvrt .
К сожалению, вам понадобится файл с географической привязкой для использования gdalbuildvrt.
После клипа не забудьте создать пирамиды для удобства просмотра. Следующая команда создаст внешние пирамиды, сжатые по алгоритму DEFLATE (без потерь):
В качестве последнего шага вы также можете рассчитать статистику, чтобы избежать некоторых глупых проблем с конкретной коммерческой программой:
источник
gdaladdo -ro input.vrt 2 4 8 16
тогдаgdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE input.vrt 2 4 8 16
. Моя цель - получить ECW, поэтому я попыталсяgdal_translate -of ECW input.vrt output.ecw
получить следующую ошибку:0ERROR 6: GDALDriver::Create() ... no create method implemented for this format.
gdalinfo --formats
. Если вы не видите ECW в списке, попробуйте эти инструкции: faunalia.pt/node/438gdalwarp
Должно работать прямое использование «клипа» (я знаю, что это очень старый вопрос: 18 месяцев IRL подобен геологической эпохе в интернет-годах).У меня есть антенна 70 ГБ (ECW, 94000x81000 пикселей при 10 см / px), и GDAL может произвольно обрезать ее с помощью шейп-файла, используя
gdalwarp -cutline [clipfile] -crop_to_cutline [infile] [outfile]
в командной строке Windows. (Я понимаю, что это решение требует создания шейп-файла для целевой области, но это не самая большая проблема, известная ГИС).
Для извлечения фрагмента размером с половину пригорода требуется ~ 0,4 с; чтобы нарезать файл на четверти занимает 4 секунды. Технические характеристики моей машины не сильно отличаются (i7-4770 при 3,4 ГГц, 16 ГБ ОЗУ, Win7-64 Ultimate).
источник