Дано: векторная карта (слой) с полигонами; полигоны должны быть правильно оцифрованы (у них должна быть одна общая граница), наличие "островов" вполне допустимо; наличие таблицы атрибутов необязательно.
Порядок действий найден в мэйл-листе 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
Дополнение: если центроиды исходной вект. карты имеют категории, то нужно перед первым шагом удалить их (сами центроиды), например, так:
Код: Выделить всё
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