Страница 1 из 1
Слить полигоны, имеющие общую точку в один
Добавлено: 26 июл 2012, 15:09
tanyshka
Здравствуйте! Задача вот какая: имеется полигональный шейп-файл! В нем куча полигонов и некоторые из них имеют между собой общую точку! Нужно сделать так, чтобы, те что имеют общую точку - стали одним полигоном... что-то на подобии функции merge в editor - для выделенных объектов. Но данных много и нужно это сделать в автоматическом режиме! Насколько это возможно и как?
Заранее спасибо!
Re: Слить полигоны, имеющие общую точку в один
Добавлено: 26 июл 2012, 19:19
Максим Дубинин
Arctoolbox
Dissolve
Re: Слить полигоны, имеющие общую точку в один
Добавлено: 26 июл 2012, 21:46
ggis
Максим Дубинин писал(а):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
Ограничение- для больших протяжных полигонов он не подойдет, поэтому их придется вручную объединять.
Исходные полигоны выглядят так:
Re: Слить полигоны, имеющие общую точку в один
Добавлено: 27 июл 2012, 15:41
tanyshka
Спасибо, это работает! только вот ограничение действительно есть((( подумаю еще.. просто руками нереально(
Re: Слить полигоны, имеющие общую точку в один
Добавлено: 30 июл 2012, 11:16
ggis
tanyshka писал(а):Спасибо, это работает! только вот ограничение действительно есть((( подумаю еще.. просто руками нереально(
Хотелось бы услышать точку зрения Гуру этого форума в вопросе решения, если таково имеется, данной задачи. Заранее большое спасибо.
Re: Слить полигоны, имеющие общую точку в один
Добавлено: 30 июл 2012, 11:59
tanyshka
Все, что мне удалось придумать это:
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 раз...
Если кто знает, возможно ли это? или я просто напридумывала тут))))
Re: Слить полигоны, имеющие общую точку в один
Добавлено: 30 июл 2012, 19:23
tanyshka
Как вариант, это можно сделать через ModelBuilder... Я думаю...
Re: Слить полигоны, имеющие общую точку в один
Добавлено: 13 авг 2012, 15:43
ggis