Сравнение двух слоёв по одному полю
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 30 сен 2010, 10:46
- Репутация: 0
Сравнение двух слоёв по одному полю
Доброе время суток! Уважаемые форумчане, помогите решить следующую задачку:
Необходимо сравнить два слоя (полигональный и точечный) по одному общему полю. Результатом данного сравнения должен быть слой, в которой будут скопированы точки не попавшие в полигоны. (пример полигоны и точки имеют общее поле "название административных районов региона", таких районов около 20, а точек несколько тысяч, визуально видно что некоторые точки лежат не в своем районе, но вручную перебирать очень долго и проводить эту процедуру нужно периодически). как это осуществить?? Заранее благодарю за помощь
Необходимо сравнить два слоя (полигональный и точечный) по одному общему полю. Результатом данного сравнения должен быть слой, в которой будут скопированы точки не попавшие в полигоны. (пример полигоны и точки имеют общее поле "название административных районов региона", таких районов около 20, а точек несколько тысяч, визуально видно что некоторые точки лежат не в своем районе, но вручную перебирать очень долго и проводить эту процедуру нужно периодически). как это осуществить?? Заранее благодарю за помощь
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Сравнение двух слоёв по одному полю
Исходя из предпосылки что Вы используете QGIS 2
Слой Т - точечный, слой П - полигональный
1. в свойствах слоя Т, закладка "Общие", "Подмножество объектов" установите подмножество по условию равенства "название административных района" конкретному району Р, то есть на Т слое должны отображаться только точки со значением атрибута "название ..." = Р
2. в слое П выделите этот район Р
3. модуль "Пространственные запросы": выбрать объекты в слое Т, где объект не пересекает объекты слоя П (x только выделенные объекты) - получите в результате выделенные точки с атрибутом Р, но не лежащие в районе Р
1-3 повторить для следующего района
Слой Т - точечный, слой П - полигональный
1. в свойствах слоя Т, закладка "Общие", "Подмножество объектов" установите подмножество по условию равенства "название административных района" конкретному району Р, то есть на Т слое должны отображаться только точки со значением атрибута "название ..." = Р
2. в слое П выделите этот район Р
3. модуль "Пространственные запросы": выбрать объекты в слое Т, где объект не пересекает объекты слоя П (x только выделенные объекты) - получите в результате выделенные точки с атрибутом Р, но не лежащие в районе Р
1-3 повторить для следующего района
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 30 сен 2010, 10:46
- Репутация: 0
Re: Сравнение двух слоёв по одному полю
Спасибо, это ручное решение (просто примет на административных районах), а хотелось бы все таки автомат...так как таких административных районов может быть гораздо больше, и каждый раз проводить такие процедуры то же не айс...
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Сравнение двух слоёв по одному полю
Скрипт на Pythonlesnik писал(а):а хотелось бы все таки автомат...
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 30 сен 2010, 10:46
- Репутация: 0
Re: Сравнение двух слоёв по одному полю
признаюсь честно (стыднооо) не знаю как
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Сравнение двух слоёв по одному полю
Стыдиться то нечего. Каждый своим делом должен заниматься, я так считаю.lesnik писал(а):признаюсь честно (стыднооо) не знаю как
Для реального скрипта нужен пример реальных данных. Иначе, обычно, "выливается" в нудную переписку вопрос-ответ... Времени жаль.
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 30 сен 2010, 10:46
- Репутация: 0
Re: Сравнение двух слоёв по одному полю
не вопрос (данные могу скинуть)
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: Сравнение двух слоёв по одному полю
На SQL делается всё в 1 запрос.lesnik писал(а):Спасибо, это ручное решение (просто примет на административных районах), а хотелось бы все таки автомат...так как таких административных районов может быть гораздо больше, и каждый раз проводить такие процедуры то же не айс...
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Сравнение двух слоёв по одному полю
Посмотрите ЛС в Вашем личном разделе.lesnik писал(а):не вопрос (данные могу скинуть)
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Сравнение двух слоёв по одному полю
Скрипт на Python для QGIS 2.
Имена слоёв и названия общих атрибутов можно изменять в строках
Имена слоёв и названия общих атрибутов можно изменять в строках
Код: Выделить всё
# Имена проверяемых векторных слоёв
layerPolygonName = u'UCH_LESNICHESTVO'
layerPointName = u'1468ppn'
# Имена одинаковых по значению атрибутов
fieldPolygonName = u'NAME'
fieldPointName = u'Name'
- Вложения
-
checkPoints.py.zip
- (980 байт) 399 скачиваний
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 30 сен 2010, 10:46
- Репутация: 0
Re: Сравнение двух слоёв по одному полю
спасибо большое
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя