Пересечение объектов
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 09 июл 2015, 09:01
- Репутация: 0
Пересечение объектов
Здравствуйте! Прошу помощи: есть 2 шейпа с полигональными объектами. Необходимо сделать выборку полигонов исходного слоя таким образом, чтоб перекрытие составляло от 50 до 100 % с полигонами сравнения.
Желательно, чтобы еще можно было узнать процент каждого перекрытия.
Приложил картинку для наглядности.
1 Полигон должен попасть в выборку, так как суммарное пересечение с тремя полигонами сравнения >50%
2 Полигон НЕ должен попасть в выборку, так как не имеет пересечений.
3 Полигон должен попасть в выборку, так как полностью входит в полигон сравнения
4 Полигон НЕ должен попасть в выборку, так как пересечение с полигоном сравнения <50%
5 Полигон НЕ должен попасть в выборку, так как суммарное пересечение с двумя полигонами сравнения <50%
Спасибо!
Желательно, чтобы еще можно было узнать процент каждого перекрытия.
Приложил картинку для наглядности.
1 Полигон должен попасть в выборку, так как суммарное пересечение с тремя полигонами сравнения >50%
2 Полигон НЕ должен попасть в выборку, так как не имеет пересечений.
3 Полигон должен попасть в выборку, так как полностью входит в полигон сравнения
4 Полигон НЕ должен попасть в выборку, так как пересечение с полигоном сравнения <50%
5 Полигон НЕ должен попасть в выборку, так как суммарное пересечение с двумя полигонами сравнения <50%
Спасибо!
- Вложения
-
- 1.jpg (112.22 КБ) 10271 просмотр
-
- Гуру
- Сообщения: 5355
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Пересечение объектов
Как то так...
Код: Выделить всё
select * from
(select * , sum(tbl1.geom.STIntersection(tbl2.geom)/tbl1.geom.STArea) as sum1
from tbl1, tbl2
where tbl1.geom.STIntersects(tbl2.geom)
group by tbl1.id) as t3
where sum1>0.5
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 09 июл 2015, 09:01
- Репутация: 0
Re: Пересечение объектов
Спасибо за ответ!
Однако, я не умею писать SQL запросы. Хотелось бы уточнить:
tbl1 и tbl2 - это сравниваемые шейпы?
Если да то в Select By Atributes я из ниспадающего списка выбираю tbl1, select * from tbl1 where: прописывается автоматически, а какие места мне нужно поменять в вашем коде дальше?
Шейпы для удобства назвал tbl1 и tbl2.
Однако, я не умею писать SQL запросы. Хотелось бы уточнить:
tbl1 и tbl2 - это сравниваемые шейпы?
Если да то в Select By Atributes я из ниспадающего списка выбираю tbl1, select * from tbl1 where: прописывается автоматически, а какие места мне нужно поменять в вашем коде дальше?
Шейпы для удобства назвал tbl1 и tbl2.
-
- Гуру
- Сообщения: 5355
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Пересечение объектов
подозреваю этот инструмент не позволяет это сделать, я привёл код для MS SQL Server
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 09 июл 2015, 09:01
- Репутация: 0
Re: Пересечение объектов
Может тогда есть другие варианты?
Например, http://resources.arcgis.com/ru/help/mai ... 0044000000 .
Если бы кто помог написать код в Python был бы очень благодарен. Шейпы назвал tbl1 и tbl2 для удобства.
Например, http://resources.arcgis.com/ru/help/mai ... 0044000000 .
Если бы кто помог написать код в Python был бы очень благодарен. Шейпы назвал tbl1 и tbl2 для удобства.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Пересечение объектов
Tabulate Intersection - это не совсем то, он предназначен для классифицированных данных и вычисляет статистику по классам, а не по отдельным объектам. Можно сделать обычный Intersect с сохранением в атрибутах результата площади и ID исходного объекта, а затем в калькуляторе посчитать отношение площади результата к исходной. Потом через Join по ID выбрать объекты из исходного слоя.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 09 июл 2015, 09:01
- Репутация: 0
Re: Пересечение объектов
Спасибо! А делать через Python? Не подскажете код?
Подозреваю, что начало примерно такое: arcpy.Intersect_analysis(["tbl1","tbl2"], "Intersect_output",
А как заставить выводить площадь и ID ?
Подозреваю, что начало примерно такое: arcpy.Intersect_analysis(["tbl1","tbl2"], "Intersect_output",
А как заставить выводить площадь и ID ?
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Пересечение объектов
FID он по умолчанию присоединяет, как и все остальные атрибуты (параметр join_attributes='ALL'). А площадь нужно предварительно скопировать из служебного атрибута SHAPE_Area в обычный атрибут - например, калькулятором или с помощью UpdateCursor в arcpy.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 09 июл 2015, 09:01
- Репутация: 0
Re: Пересечение объектов
Прописал в Python
arcpy.Intersect_analysis(["tbl1","tbl2"],"C:\Users\Arkady\Documents\123.gdb","ALL")
Ошибка
Executing: Intersect "tbl1 #;tbl2 #" C:\Users\Arkady\Documents\951.shp ALL # INPUT
Start Time: Thu Jul 09 14:57:01 2015
WARNING 000117: Warning empty output generated.
Не подскажете, в чем проблема?
arcpy.Intersect_analysis(["tbl1","tbl2"],"C:\Users\Arkady\Documents\123.gdb","ALL")
Ошибка
Executing: Intersect "tbl1 #;tbl2 #" C:\Users\Arkady\Documents\951.shp ALL # INPUT
Start Time: Thu Jul 09 14:57:01 2015
WARNING 000117: Warning empty output generated.
Не подскажете, в чем проблема?
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Пересечение объектов
Это не ошибка, а предупреждение, что в результате пересечения получен пустой набор данных.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 09 июл 2015, 09:01
- Репутация: 0
Re: Пересечение объектов
Но полигоны ТОЧНО пересекаются =(. Мне посоветовали воспользоваться следующей схемой: Clip-> Field Geometry -> Создать Field с отношением площадей к исходным * 100%. Это сработало! Но теперь как определить какой именно полигон с каким пересекаются? У шейпов нет атрибутов связанных друг с другом... То есть они связаны толшько пространственным положением. Как можно привязать полигоны из одного слоя к полигонам из другого по их пересечению?
Спасибо за ответы!
Спасибо за ответы!
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 09 июл 2015, 09:01
- Репутация: 0
Re: Пересечение объектов
Вопрос закрыт. Спасибо всем откликнувшимся! Если кому понадобится что-то подобное то используя все выше написанное и вот это:
http://oldforum.dataplus.ru/forum/forum ... p?TID=9792
Все у вас получится.
Еще раз спасибо!
http://oldforum.dataplus.ru/forum/forum ... p?TID=9792
Все у вас получится.
Еще раз спасибо!
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Пересечение объектов
Рад, что всё получилось.avserikov89 писал(а):Вопрос закрыт. Спасибо всем откликнувшимся!
Странно. А проекция шейпов одинаковая? Какая версия ArcGIS?avserikov89 писал(а):Но полигоны ТОЧНО пересекаются =(.
Вообще ArcGIS - штука глючная, иногда происходят странные вещи.
Есть инструмент Spatial Join.avserikov89 писал(а):Как можно привязать полигоны из одного слоя к полигонам из другого по их пересечению
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость