Получение внешней границы полигонов

Решенные задачи, первая запись - описание решения.
Ответить
Александр Мурый
Гуру
Сообщения: 5171
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 779
Ваше звание: званий не имею
Откуда: Москва

Получение внешней границы полигонов

Сообщение Александр Мурый » 19 окт 2011, 21:41

По мотивам этой темы.

Дано: векторная карта (слой) с полигонами; полигоны должны быть правильно оцифрованы (у них должна быть одна общая граница), наличие "островов" вполне допустимо; наличие таблицы атрибутов необязательно.

Порядок действий найден в мэйл-листе GRASS.

Решение:
  • Добавим одинаковые категории полигонам (здесь, например, cat=1). Обычно категории (как и записи в атрибутивной таблице) относятся только к центроидам, здесь же добавить надо именно к самим полигонам.

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

    v.category in=poly out=poly_area_cats option=add cat=1 step=0 type=area
  • Извлечём в новую вект.карту полигоны с категорией 1 (значение "list" можно менять в зависимости от количества объектов, чтобы это число "покрывало" число полигонов):

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

    v.extract in=poly_area_cats out=poly_area_extract type=area new=1 list=1-999999
  • Удалим дублирующиеся центроиды, оставив только один полигон:

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

    v.dissolve in=poly_area_extract out=poly_bound
Результат:
polygons_ext_shape.png
polygons_ext_shape.png (18.41 КБ) 2569 просмотров
Дополнение: если центроиды исходной вект. карты имеют категории, то нужно перед первым шагом удалить их (сами центроиды), например, так:

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

g.copy vect=poly,poly_copy
v.edit poly_copy tool=delete type=centroid cats=0-9999999  
, и далее три указанных выше шага по порядку.

Подробности в мануалах:
http://grass.gis-lab.info/grass64/manua ... egory.html
http://grass.gis-lab.info/grass64/manua ... tract.html
http://grass.gis-lab.info/grass64/manua ... solve.html
Редактор материалов, модератор форума

Ответить

Вернуться в «Рецепты»

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость