gdal_retile не строится пирамида

Не знаете, где задать вопрос? Задавайте здесь.
NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

gdal_retile не строится пирамида

Сообщение NIckolay » 09 янв 2013, 17:36

Здравствуйте, уважаемые форумчани, у меня такой вопрос.
Нужно с помощью gdal_retile построить пирамиду изображений. Проблема состоит в том что у меня при помощи данной утилиты получается только разрезать на куски изображения, а задача стоит, получить на выходе несколько, целых изображений разного разрешения.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: gdal_retile не строится пирамида

Сообщение Дмитрий Барышников » 09 янв 2013, 19:27

Для этого служит http://gdal.org/gdaladdo.html

[ Сообщение с мобильного устройства ]

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: gdal_retile не строится пирамида

Сообщение NIckolay » 09 янв 2013, 22:06

Спасибо бьольшое за ответ. У меня получилось, но на выходе создается только один фаил. А нельзя ли сделать чтоб на выходе создовалось сразу несколько. И сразу хотелось бы уточнить, возможно ли работать с hdf файлами при помощи данной утилиты?

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: gdal_retile не строится пирамида

Сообщение Дмитрий Барышников » 09 янв 2013, 23:44

Вот поддерживаемые форматы: http://gdal.org/formats_list.html
Список конкретных форматов можно посмотреть командой gdalinfo --formats ну или gdaladdo --formats

Как через утилиты получить пирамиды в разных файлах я не нашел. Через API есть такая возможность, но это надо программировать.

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: gdal_retile не строится пирамида

Сообщение NIckolay » 10 янв 2013, 00:41

И снова спаибо за то что откликнулись, но боюсь что я наверное не правильно поставил вопрос, я имел ввиду, к примеру у меня есть изображение 1024x1204, и нужно чтоб посредством вызова gdaladdo у меня на выходе получилось несколько изображений, разрешением 512х512, 256х256, 128х128..... и т.д.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: gdal_retile не строится пирамида

Сообщение Дмитрий Барышников » 10 янв 2013, 12:39

Тогда воспользуйтесь gdal_translate http://gdal.org/gdal_translate.html и укажите выходной размер: опция outsize

[ Сообщение с мобильного устройства ]

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: gdal_retile не строится пирамида

Сообщение NIckolay » 11 янв 2013, 01:38

Но ведь на выходе получится одно изображение, а мне надо чтоб несколько, разных масштабов

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: gdal_retile не строится пирамида

Сообщение Denis Rykov » 11 янв 2013, 03:47

Ну так воспользуйтесь утилитой несколько раз, если растров много - напишите скрипт.

[ Сообщение с мобильного устройства ]
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

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

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: gdal_retile не строится пирамида

Сообщение NIckolay » 12 янв 2013, 23:25

Спасибо большое, всем кто откликнулся, действительно очень полезные советы, и я тоже подумывал над скриптом, но дело в том, что преподователь поставил задачу это выполнить в одной строке, а на счет скрипта он мне сказал примерно следующее, "можно, но зачем такие сложности если возможно только одной строкой", попадя в такую ситуацию, я хотел бы спросить это вообще реально, сохронять отдельный слой в отдельный фаил?
Последний раз редактировалось Максим Дубинин 13 янв 2013, 10:10, всего редактировалось 1 раз.
Причина: см. правила форума, п.2.2.1 http://gis-lab.info/qa/forum-rules.html

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: gdal_retile не строится пирамида

Сообщение Дмитрий Барышников » 13 янв 2013, 20:57

NIckolay писал(а):дело в том, что преподователь поставил задачу это выполнить в одной строке, а на счет скрипта он мне сказал примерно следующее, "можно, но зачем такие сложности если возможно только одной строкой", попадя в такую ситуацию, я хотел бы спросить это вообще реально, сохронять отдельный слой в отдельный фаил?
А преподаватель конкретно про GDAL говорил или про иные программы? Может какой ни будь ImageMagic такое может.

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: gdal_retile не строится пирамида

Сообщение NIckolay » 13 янв 2013, 21:24

Нет, конкретно GDAL, и даже сказал что нужно почитать про gdal_retile и gdaladdo. Да и хотелось бы у точнить, отдельный слой пирамиды это один из масштабов?

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

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 (следующий после 8) будет слишком размытым.
В принципе при помощи GDAL можно генерировать и другие уровни - не обязательно кратные 2-м.

Есть еще такое понятие, как тайлы - когда изображение режется на кусочки. Например, наш снимок 10 000 х 10 000 можно разделить на 4 части по 5 000 х 5 000 пикселей. Это будут тайлы. И если выводиться какой-то участок снимка, то можно грузить только один тайл. Но при этом, необходимость пирамид остается.

Возможно, преподаватель хотел, что бы одной командой были сгенерированы пирамиды для нескольких тайлов - тогда это делается через gdal_retile (http://www.gdal.org/gdal_retile.html) - опции levels и pyramidOnly.

NIckolay
Интересующийся
Сообщения: 25
Зарегистрирован: 09 янв 2013, 17:21
Репутация: 0

Re: gdal_retile не строится пирамида

Сообщение NIckolay » 14 янв 2013, 01:53

Не совсем, преподователь ясно сказал, что каждый слой пирамиды, должен сохраниться отдельным изображением. Возможно ли сделать это одной или несколькими командами но без сложных конструкций(каких либо скриптовых файлов и т.д.)?

[ Сообщение с мобильного устройства ]

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

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

Интересно узнать, чего же хотел преподаватель.

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot] и 2 гостя