Слить полигоны, имеющие общую точку в один

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
tanyshka
Интересующийся
Сообщения: 16
Зарегистрирован: 30 ноя 2009, 11:03
Репутация: 0

Слить полигоны, имеющие общую точку в один

Сообщение tanyshka » 26 июл 2012, 15:09

Здравствуйте! Задача вот какая: имеется полигональный шейп-файл! В нем куча полигонов и некоторые из них имеют между собой общую точку! Нужно сделать так, чтобы, те что имеют общую точку - стали одним полигоном... что-то на подобии функции merge в editor - для выделенных объектов. Но данных много и нужно это сделать в автоматическом режиме! Насколько это возможно и как?
Заранее спасибо!

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9038
Зарегистрирован: 06 окт 2003, 20:20
Статьи: 231
Проекты: 12/6
Репутация: 713
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Слить полигоны, имеющие общую точку в один

Сообщение Максим Дубинин » 26 июл 2012, 19:19

Arctoolbox
Dissolve
пристегивайтесь, турбулентность прямо по курсу

ggis
Завсегдатай
Сообщения: 302
Зарегистрирован: 31 окт 2008, 10:39
Репутация: 2

Re: Слить полигоны, имеющие общую точку в один

Сообщение ggis » 26 июл 2012, 21:46

Максим Дубинин писал(а):Arctoolbox
Dissolve
А если нет поля по которому можно применить Dissolve? Тогда только немного облегчить ручной режим таким образом:
1. Сделать точки из полигонов (Data Management Tools-Features-Feature Vertices To Points).
2. Сделать слой дубликатов точек c помощью бесплатного Typeconvert-(https://sites.google.com/site/xbbster/typeconvert).
3. Слоем дубликатов точек выделить полигоны на которые они попадают и сохранить в отдельный слой (Select By Location).
4. Проставить порядковый номер для точек дубликатов.
5. Присвоить порядковые номера из слоя точек дубликатов слою полигонов который мы сохранили в отдельный слой Analysis Tools-Overlay-Spatial Join (по местоположению)
6. Воспользоваться инструментом
Максим Дубинин писал(а):Arctoolbox Dissolve
указав поле (порядковый номер) по которому надо делать Dissolve
Ограничение- для больших протяжных полигонов он не подойдет, поэтому их придется вручную объединять.
Исходные полигоны выглядят так:
Вложения
pol.png
pol.png (45.6 КБ) 3617 просмотров

tanyshka
Интересующийся
Сообщения: 16
Зарегистрирован: 30 ноя 2009, 11:03
Репутация: 0

Re: Слить полигоны, имеющие общую точку в один

Сообщение tanyshka » 27 июл 2012, 15:41

Спасибо, это работает! только вот ограничение действительно есть((( подумаю еще.. просто руками нереально(

ggis
Завсегдатай
Сообщения: 302
Зарегистрирован: 31 окт 2008, 10:39
Репутация: 2

Re: Слить полигоны, имеющие общую точку в один

Сообщение ggis » 30 июл 2012, 11:16

tanyshka писал(а):Спасибо, это работает! только вот ограничение действительно есть((( подумаю еще.. просто руками нереально(
Хотелось бы услышать точку зрения Гуру этого форума в вопросе решения, если таково имеется, данной задачи. Заранее большое спасибо.

tanyshka
Интересующийся
Сообщения: 16
Зарегистрирован: 30 ноя 2009, 11:03
Репутация: 0

Re: Слить полигоны, имеющие общую точку в один

Сообщение tanyshka » 30 июл 2012, 11:59

Все, что мне удалось придумать это:
P.S. Правда, это не очень похоже на автоматическую обработку(((

Значит так...
1. по точкам, которые имеют уже порядковые номера - создаем буфер в 1 метр (вполне достаточно)
2. потом - делаем не Analysis Tools-Overlay-Spatial Join, а правой кнопкой на слой полигонов - Joins and Relates - Joins - join data from another layer based on spatial location - выбираем слой буфера, где прописаны наши порядковые номера и выбираем функцию - минимум
3. потом делаем dissolve по результату - используя поле минимального порядкового номера, получаем новый слой
4. потом повторяем операцию №2, но уже для буфера нашего - в общем присваиваем нашему буферу минимальные порядковые номера из результа dissolve
5. потом по результату dissolve - повторяем операцию №2 и №3 (только уже по новому нашему буферу)
6. потом операция №4... и так до бесконечности..
Таким образом получается цикл - в результате которого с каждым шагом таким присоединяется по одному полигону в каждую цепочку.. и количество шагов зависит от длины этой цепочки((
Скорее всего этот цикл можно загнать в скрипт... правда я не умею(((

Просто можно наверное посмотреть - как будут выглядеть на языке программирования эти функции: Joins and Relates - Joins - join data from another layer based on spatial location И dissolve... только где это смотреть??? а потом их скопировать, подредактировать и сохранить... получится минипрограммка, которая сама будет делать, а не человек одно и то же по 10 - 50 раз...
Если кто знает, возможно ли это? или я просто напридумывала тут))))

tanyshka
Интересующийся
Сообщения: 16
Зарегистрирован: 30 ноя 2009, 11:03
Репутация: 0

Re: Слить полигоны, имеющие общую точку в один

Сообщение tanyshka » 30 июл 2012, 19:23

Как вариант, это можно сделать через ModelBuilder... Я думаю...

ggis
Завсегдатай
Сообщения: 302
Зарегистрирован: 31 окт 2008, 10:39
Репутация: 2

Re: Слить полигоны, имеющие общую точку в один

Сообщение ggis » 13 авг 2012, 15:43


Ответить

Вернуться в «ArcGIS»

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

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