Слить полигоны, имеющие общую точку в один
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 30 ноя 2009, 11:03
- Репутация: 0
Слить полигоны, имеющие общую точку в один
Здравствуйте! Задача вот какая: имеется полигональный шейп-файл! В нем куча полигонов и некоторые из них имеют между собой общую точку! Нужно сделать так, чтобы, те что имеют общую точку - стали одним полигоном... что-то на подобии функции merge в editor - для выделенных объектов. Но данных много и нужно это сделать в автоматическом режиме! Насколько это возможно и как?
Заранее спасибо!
Заранее спасибо!
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Слить полигоны, имеющие общую точку в один
Arctoolbox
Dissolve
Dissolve
пристегивайтесь, турбулентность прямо по курсу
-
- Завсегдатай
- Сообщения: 302
- Зарегистрирован: 31 окт 2008, 10:39
- Репутация: 2
Re: Слить полигоны, имеющие общую точку в один
А если нет поля по которому можно применить Dissolve? Тогда только немного облегчить ручной режим таким образом:Максим Дубинин писал(а):Arctoolbox
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. Воспользоваться инструментом
указав поле (порядковый номер) по которому надо делать DissolveМаксим Дубинин писал(а):Arctoolbox Dissolve
Ограничение- для больших протяжных полигонов он не подойдет, поэтому их придется вручную объединять.
Исходные полигоны выглядят так:
- Вложения
-
- pol.png (45.6 КБ) 7320 просмотров
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 30 ноя 2009, 11:03
- Репутация: 0
Re: Слить полигоны, имеющие общую точку в один
Спасибо, это работает! только вот ограничение действительно есть((( подумаю еще.. просто руками нереально(
-
- Завсегдатай
- Сообщения: 302
- Зарегистрирован: 31 окт 2008, 10:39
- Репутация: 2
Re: Слить полигоны, имеющие общую точку в один
Хотелось бы услышать точку зрения Гуру этого форума в вопросе решения, если таково имеется, данной задачи. Заранее большое спасибо.tanyshka писал(а):Спасибо, это работает! только вот ограничение действительно есть((( подумаю еще.. просто руками нереально(
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 30 ноя 2009, 11:03
- Репутация: 0
Re: Слить полигоны, имеющие общую точку в один
Все, что мне удалось придумать это:
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 раз...
Если кто знает, возможно ли это? или я просто напридумывала тут))))
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 раз...
Если кто знает, возможно ли это? или я просто напридумывала тут))))
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 30 ноя 2009, 11:03
- Репутация: 0
Re: Слить полигоны, имеющие общую точку в один
Как вариант, это можно сделать через ModelBuilder... Я думаю...
-
- Завсегдатай
- Сообщения: 302
- Зарегистрирован: 31 окт 2008, 10:39
- Репутация: 2
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 30 гостей