Страница 1 из 2
gdal_retile не строится пирамида
Добавлено: 09 янв 2013, 17:36
NIckolay
Здравствуйте, уважаемые форумчани, у меня такой вопрос.
Нужно с помощью gdal_retile построить пирамиду изображений. Проблема состоит в том что у меня при помощи данной утилиты получается только разрезать на куски изображения, а задача стоит, получить на выходе несколько, целых изображений разного разрешения.
Re: gdal_retile не строится пирамида
Добавлено: 09 янв 2013, 19:27
Дмитрий Барышников
Для этого служит
http://gdal.org/gdaladdo.html
[ Сообщение с мобильного устройства ]
Re: gdal_retile не строится пирамида
Добавлено: 09 янв 2013, 22:06
NIckolay
Спасибо бьольшое за ответ. У меня получилось, но на выходе создается только один фаил. А нельзя ли сделать чтоб на выходе создовалось сразу несколько. И сразу хотелось бы уточнить, возможно ли работать с hdf файлами при помощи данной утилиты?
Re: gdal_retile не строится пирамида
Добавлено: 09 янв 2013, 23:44
Дмитрий Барышников
Вот поддерживаемые форматы:
http://gdal.org/formats_list.html
Список конкретных форматов можно посмотреть командой gdalinfo --formats ну или gdaladdo --formats
Как через утилиты получить пирамиды в разных файлах я не нашел. Через API есть такая возможность, но это надо программировать.
Re: gdal_retile не строится пирамида
Добавлено: 10 янв 2013, 00:41
NIckolay
И снова спаибо за то что откликнулись, но боюсь что я наверное не правильно поставил вопрос, я имел ввиду, к примеру у меня есть изображение 1024x1204, и нужно чтоб посредством вызова gdaladdo у меня на выходе получилось несколько изображений, разрешением 512х512, 256х256, 128х128..... и т.д.
Re: gdal_retile не строится пирамида
Добавлено: 10 янв 2013, 12:39
Дмитрий Барышников
Тогда воспользуйтесь gdal_translate
http://gdal.org/gdal_translate.html и укажите выходной размер: опция outsize
[ Сообщение с мобильного устройства ]
Re: gdal_retile не строится пирамида
Добавлено: 11 янв 2013, 01:38
NIckolay
Но ведь на выходе получится одно изображение, а мне надо чтоб несколько, разных масштабов
Re: gdal_retile не строится пирамида
Добавлено: 11 янв 2013, 03:47
Denis Rykov
Ну так воспользуйтесь утилитой несколько раз, если растров много - напишите скрипт.
[ Сообщение с мобильного устройства ]
Re: gdal_retile не строится пирамида
Добавлено: 11 янв 2013, 11:40
Дмитрий Барышников
Самый простой способ - командный файл примерно такого содержания:
gdal_translate -outsize 50%% 50%% %1 %2_50.tif
gdal_translate -outsize 25%% 25%% %1 %2_25.tif
Для командного файла передаются 2 параметра:
%1 - это путь до исходного растра
%2 - это постоянная часть имени выходного
Пример вызова может быть таким:
ovr_separate.bat c:/temp/input_raster.tif c:/temp/output_raster
Первая ссылка в поиске про командные файлы:
http://ab57.ru/cmd.html
Re: gdal_retile не строится пирамида
Добавлено: 12 янв 2013, 23:25
NIckolay
Спасибо большое, всем кто откликнулся, действительно очень полезные советы, и я тоже подумывал над скриптом, но дело в том, что преподователь поставил задачу это выполнить в одной строке, а на счет скрипта он мне сказал примерно следующее, "можно, но зачем такие сложности если возможно только одной строкой", попадя в такую ситуацию, я хотел бы спросить это вообще реально, сохронять отдельный слой в отдельный фаил?
Re: gdal_retile не строится пирамида
Добавлено: 13 янв 2013, 20:57
Дмитрий Барышников
NIckolay писал(а):дело в том, что преподователь поставил задачу это выполнить в одной строке, а на счет скрипта он мне сказал примерно следующее, "можно, но зачем такие сложности если возможно только одной строкой", попадя в такую ситуацию, я хотел бы спросить это вообще реально, сохронять отдельный слой в отдельный фаил?
А преподаватель конкретно про GDAL говорил или про иные программы? Может какой ни будь ImageMagic такое может.
Re: gdal_retile не строится пирамида
Добавлено: 13 янв 2013, 21:24
NIckolay
Нет, конкретно GDAL, и даже сказал что нужно почитать про gdal_retile и gdaladdo. Да и хотелось бы у точнить, отдельный слой пирамиды это один из масштабов?
Re: gdal_retile не строится пирамида
Добавлено: 13 янв 2013, 22:18
Дмитрий Барышников
NIckolay писал(а):Да и хотелось бы у точнить, отдельный слой пирамиды это один из масштабов?
Вот с этого и надо было начинать.
Пирамидные слои - это уменьшенные копии изображения в кратное количество раз. Обычно 2,4,8 раз и далее до достижения размера выходного пирамидного изображения определенного порога - например, 20 х 20 пикселей. Пирамидные слои служат ускоренной отрисовки всего изображения при определенном масштабе. Если бы их не было то компьютер бы вынужден был разрежать исходное изображение, что бы уместить его на экран.
Например есть снимок с КА Ikonos. Размер сцены 8 х 8 км, разрешение 0.8 м. Размер изображения 10 000 х 10 000 пикселов. При выводе на экран с разрешением 1024 х 768 (а с учетом меню, статусной строки и т.п. и вообще 800 х 600) нужно было бы разредить изображения порядка 10-11 раз. Этот процесс потребовал бы обсчет 10 000 * 10 000 = 100 000 000 писелей. А так берется пирамидный слой нужного уровня и выводится на экран 1 в один или с меньшим количеством расчетов. В данной случае для исключения потери детальности - 8-го уровня. Т.к. 16 (следующий после

будет слишком размытым.
В принципе при помощи GDAL можно генерировать и другие уровни - не обязательно кратные 2-м.
Есть еще такое понятие, как тайлы - когда изображение режется на кусочки. Например, наш снимок 10 000 х 10 000 можно разделить на 4 части по 5 000 х 5 000 пикселей. Это будут тайлы. И если выводиться какой-то участок снимка, то можно грузить только один тайл. Но при этом, необходимость пирамид остается.
Возможно, преподаватель хотел, что бы одной командой были сгенерированы пирамиды для нескольких тайлов - тогда это делается через gdal_retile (
http://www.gdal.org/gdal_retile.html) - опции levels и pyramidOnly.
Re: gdal_retile не строится пирамида
Добавлено: 14 янв 2013, 01:53
NIckolay
Не совсем, преподователь ясно сказал, что каждый слой пирамиды, должен сохраниться отдельным изображением. Возможно ли сделать это одной или несколькими командами но без сложных конструкций(каких либо скриптовых файлов и т.д.)?
[ Сообщение с мобильного устройства ]
Re: gdal_retile не строится пирамида
Добавлено: 14 янв 2013, 14:02
Дмитрий Барышников
Как сделать одной командой я не знаю. Одна команда - один файл. Вы можете последовательно вызвать что-то типа:
gdal_translate -outsize 50% 50% input_raster.tif output_raster_50.tif
gdal_translate -outsize 25% 25% input_raster.tif output_raster_25.tif
...
gdal_translate -outsize 5% 5% input_raster.tif output_raster_5.tif
Интересно узнать, чего же хотел преподаватель.