QGIS + v.generalize, проблемы при сглаживании полигонов

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
JeSS
Интересующийся
Сообщения: 18
Зарегистрирован: 01 фев 2015, 17:02
Репутация: 0

QGIS + v.generalize, проблемы при сглаживании полигонов

Сообщение JeSS » 04 апр 2015, 16:45

Здравствуйте, собственно, было необходимо сгладить полигоны, полученные ранее векторизацией растра. В итоге большинство полигонов сгладилось, однако некоторые так и остались угловатыми. Сглаживание выполнялось командой v.generalize, алгоритм: snakes method for line smoothing. Отсюда вопрос: как сгладить абсолютно все полигоны? и как сгладить кольца внутри полигонов?
Вложения
EZzsF7hYjTo.jpg
EZzsF7hYjTo.jpg (40.06 КБ) 6081 просмотр

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: проблемы при сглаживании полигонов

Сообщение Александр Мурый » 04 апр 2015, 20:41

Вообще, принято прямо указывать, в каком ПО вы работаете (причём с версией).

Модуль <v.generalize> был использован через QGIS или прямо в GRASS?
Какие значения параметров "alpha" и "beta" вы использовали для метода "snakes"?

Модуль делает проверку на нарушение топологии векторных объектов и, если есть риск таких нарушений, то в этом месте не сглаживается. Кстати, об этом должно было быть написано в "выхлопе" модуля.

Как вы видели, там есть несколько алгоритмов сглаживания кроме "snakes", причём для разных случаев и задач алгоритм подбирается часто чисто экспериментально. Важный параметр - порог (threshold), иногда для адекватного результата нужно упрощать и сглаживать последовательно несколько раз с увеличением порога.

P.S. Можете выложить кусок данных с вашей картинки в векторе?
Редактор материалов, модератор форума

JeSS
Интересующийся
Сообщения: 18
Зарегистрирован: 01 фев 2015, 17:02
Репутация: 0

Re: проблемы при сглаживании полигонов

Сообщение JeSS » 05 апр 2015, 19:36

QGIS 2.6.1.

Модуль использовался через QGIS, значения "alpha" и "beta" не менял, соответственно 1 и 1.

прикрепил архив с шейп-файлом.
Вложения
HVOI.rar
(49.02 КБ) 288 скачиваний

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: QGIS + v.generalize, проблемы при сглаживании полигонов

Сообщение Александр Мурый » 07 апр 2015, 21:41

Поигрался с данными, вот результат в шейпе:
hvoi_gener.zip
(103.79 КБ) 249 скачиваний
Вывод: с такими вот "зубчатыми" полигонами, полученными из растров, можно иногда бороться путём перегона их в полилинии, сглаживанием и затем конвертацией назад в полигоны.
gr.png
gr.png (58.76 КБ) 5915 просмотров
Использованные команды (при работе в "чистой" GRASS, не через QGIS):

Код: Выделить всё

v.type in=hvoi out=hvoi_lines type=boundary,line
v.category in=hvoi_lines out=hvoi_lines_cats
v.generalize -c in=hvoi_lines_cats out=hvoi_lines_cats_gener method=chaiken threshold=50
v.type in=hvoi_lines_cats_gener out=hvoi_lines_cats_gener_areas type=line,boundary
Параметры генерализации можно менять по вкусу, но для таких полигонов лучше использовать только следующие методы: chaiken (самый простой и быстрый), hermite (быстрый, но результат "на любителя") или snakes (самый тормозной из 3-х алгоритмов). Остальные алгоритмы сглаживания для данного случая не очень подходят.

Кстати, можно ещё сначала упростить геометрию (через <v.clean> с опцией "prune" или через <v.generalize>, "douglas").

P.S. Планирую дописать черновик по генерализации векторов в GRASS, добавить туда вышеизложенное.
Редактор материалов, модератор форума

Ответить

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

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

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