Сравнение двух слоёв по одному полю

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
lesnik
Новоприбывший
Сообщения: 6
Зарегистрирован: 30 сен 2010, 10:46
Репутация: 0

Сравнение двух слоёв по одному полю

Сообщение lesnik » 31 окт 2013, 05:11

Доброе время суток! Уважаемые форумчане, помогите решить следующую задачку:
Необходимо сравнить два слоя (полигональный и точечный) по одному общему полю. Результатом данного сравнения должен быть слой, в которой будут скопированы точки не попавшие в полигоны. (пример полигоны и точки имеют общее поле "название административных районов региона", таких районов около 20, а точек несколько тысяч, визуально видно что некоторые точки лежат не в своем районе, но вручную перебирать очень долго и проводить эту процедуру нужно периодически). как это осуществить?? Заранее благодарю за помощь

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Сравнение двух слоёв по одному полю

Сообщение dab » 31 окт 2013, 06:29

Исходя из предпосылки что Вы используете QGIS 2
Слой Т - точечный, слой П - полигональный
1. в свойствах слоя Т, закладка "Общие", "Подмножество объектов" установите подмножество по условию равенства "название административных района" конкретному району Р, то есть на Т слое должны отображаться только точки со значением атрибута "название ..." = Р
2. в слое П выделите этот район Р
3. модуль "Пространственные запросы": выбрать объекты в слое Т, где объект не пересекает объекты слоя П (x только выделенные объекты) - получите в результате выделенные точки с атрибутом Р, но не лежащие в районе Р

1-3 повторить для следующего района

lesnik
Новоприбывший
Сообщения: 6
Зарегистрирован: 30 сен 2010, 10:46
Репутация: 0

Re: Сравнение двух слоёв по одному полю

Сообщение lesnik » 31 окт 2013, 07:02

Спасибо, это ручное решение (просто примет на административных районах), а хотелось бы все таки автомат...так как таких административных районов может быть гораздо больше, и каждый раз проводить такие процедуры то же не айс...

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Сравнение двух слоёв по одному полю

Сообщение dab » 31 окт 2013, 07:07

lesnik писал(а):а хотелось бы все таки автомат...
Скрипт на Python

lesnik
Новоприбывший
Сообщения: 6
Зарегистрирован: 30 сен 2010, 10:46
Репутация: 0

Re: Сравнение двух слоёв по одному полю

Сообщение lesnik » 31 окт 2013, 07:38

признаюсь честно (стыднооо) не знаю как

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Сравнение двух слоёв по одному полю

Сообщение dab » 31 окт 2013, 08:16

lesnik писал(а):признаюсь честно (стыднооо) не знаю как
Стыдиться то нечего. Каждый своим делом должен заниматься, я так считаю.
Для реального скрипта нужен пример реальных данных. Иначе, обычно, "выливается" в нудную переписку вопрос-ответ... Времени жаль.

lesnik
Новоприбывший
Сообщения: 6
Зарегистрирован: 30 сен 2010, 10:46
Репутация: 0

Re: Сравнение двух слоёв по одному полю

Сообщение lesnik » 31 окт 2013, 08:45

не вопрос (данные могу скинуть)

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Сравнение двух слоёв по одному полю

Сообщение rhot » 31 окт 2013, 12:17

lesnik писал(а):Спасибо, это ручное решение (просто примет на административных районах), а хотелось бы все таки автомат...так как таких административных районов может быть гораздо больше, и каждый раз проводить такие процедуры то же не айс...
На SQL делается всё в 1 запрос.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Сравнение двух слоёв по одному полю

Сообщение dab » 05 ноя 2013, 05:34

lesnik писал(а):не вопрос (данные могу скинуть)
Посмотрите ЛС в Вашем личном разделе.

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Сравнение двух слоёв по одному полю

Сообщение dab » 07 ноя 2013, 09:57

Скрипт на Python для QGIS 2.
Имена слоёв и названия общих атрибутов можно изменять в строках

Код: Выделить всё

# Имена проверяемых векторных слоёв
layerPolygonName    = u'UCH_LESNICHESTVO'
layerPointName      = u'1468ppn'

# Имена одинаковых по значению атрибутов
fieldPolygonName    = u'NAME'
fieldPointName      = u'Name'
Вложения
checkPoints.py.zip
(980 байт) 399 скачиваний

lesnik
Новоприбывший
Сообщения: 6
Зарегистрирован: 30 сен 2010, 10:46
Репутация: 0

Re: Сравнение двух слоёв по одному полю

Сообщение lesnik » 07 ноя 2013, 10:15

спасибо большое

Ответить

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

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

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