Страница 1 из 1

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

Добавлено: 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 КБ) 30526 просмотров
Дополнение: если центроиды исходной вект. карты имеют категории, то нужно перед первым шагом удалить их (сами центроиды), например, так:

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

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

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

Добавлено: 05 фев 2019, 10:27
Yuraz
Возник такой вопрос, скажите, где выполнить вот это "Добавим одинаковые категории полигонам"? И далее проделать действия.