Выделение по геометрии.

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Аватара пользователя
Эльдар
Участник
Сообщения: 61
Зарегистрирован: 11 сен 2013, 22:10
Репутация: 6
Откуда: Махачкала

Выделение по геометрии.

Сообщение Эльдар » 14 мар 2014, 20:14

Доброй ночи. Подскажите пожалуйста , как можно выделить объекты на полигональном слое, по количеству вершин полигона. Например выбрать все полигоны с 3 вершинами (треугольники).
Последний раз редактировалось Эльдар 17 мар 2014, 08:08, всего редактировалось 1 раз.
Подпись :)

trir
Гуру
Сообщения: 5360
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Выделение по геометрии.

Сообщение trir » 14 мар 2014, 21:03

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

select * from Tbl where NumPoints(ExteriorRing(fPolygon))=3

Аватара пользователя
Эльдар
Участник
Сообщения: 61
Зарегистрирован: 11 сен 2013, 22:10
Репутация: 6
Откуда: Махачкала

Re: Выделение по геометрии.

Сообщение Эльдар » 14 мар 2014, 21:38

не могли бы более подробно описать, как и где нужно ее прописать? Калькулятор полей не понимает этот код.
Подпись :)

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

Re: Выделение по геометрии.

Сообщение dab » 15 мар 2014, 12:09

Эльдар, указывайте, пожалуйста, версии используемого ПО и типы данных.
http://gis-lab.info/qa/forum-recommend.html
Так как подробностей нет, могу только посоветовать банальный скрипт Python. Для QGIS 2.0.1. Выполните его в консоли Python для активного слоя карты и получите выделенные полигоны с тремя вершинами.

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

l = qgis.utils.iface.activeLayer()
p = l.dataProvider()
for f in p.getFeatures(QgsFeatureRequest()):
    g = f.geometry()
    if len(g.asPolygon()) > 0 and len(g.asPolygon()[0]) == 4:
        l.select(f.id())

Аватара пользователя
Эльдар
Участник
Сообщения: 61
Зарегистрирован: 11 сен 2013, 22:10
Репутация: 6
Откуда: Махачкала

Re: Выделение по геометрии.

Сообщение Эльдар » 15 мар 2014, 14:35

Используемая ПО QGIS 2.0.2 Так вот, есть SHP с пространственными данными (площадные объекты), и мне необходимо сделать выбор объектов треугольной формы. объектов на карте более 50 000.
обычно для выбора я использую выделение выражением
Подпись :)

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

Re: Выделение по геометрии.

Сообщение dab » 15 мар 2014, 14:41

"Выделение выражением" это модуль какой то или что?
Так скрипт сработал?

Аватара пользователя
Эльдар
Участник
Сообщения: 61
Зарегистрирован: 11 сен 2013, 22:10
Репутация: 6
Откуда: Махачкала

Re: Выделение по геометрии.

Сообщение Эльдар » 15 мар 2014, 17:36

Выделение выражением, то есть выделить объекты удовлетворяющие условии А код почему то не хочет работать, к сведению с Консоль python ранее не работал :(
название SHP - object, а код
l = qgis.utils.iface.activeLayer(obgect)
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'obgect' is not defined
Подпись :)

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

Re: Выделение по геометрии.

Сообщение dab » 15 мар 2014, 18:11

Просто на карте делаете нужный Вам слой активным и запускаете мой код без всяких изменений.

Аватара пользователя
Эльдар
Участник
Сообщения: 61
Зарегистрирован: 11 сен 2013, 22:10
Репутация: 6
Откуда: Махачкала

Re: Выделение по геометрии.

Сообщение Эльдар » 15 мар 2014, 18:28

НЕ СРАБОТАЛ
Изображение
Подпись :)

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

Re: Выделение по геометрии.

Сообщение dab » 15 мар 2014, 18:38

Эльдар писал(а):НЕ СРАБОТАЛ
Это скрипт с циклом "for" - его нельзя просто построчно вводить в консоль, а нужно делать отступы для сток внутри цикла как положено в Python.
Короче - открываете в консоли редактор, открываете в редакторе файл tr.py, запускаете.
Вложения
tr.png
tr.png (105.89 КБ) 9949 просмотров
tr.py
(215 байт) 549 скачиваний

Аватара пользователя
Эльдар
Участник
Сообщения: 61
Зарегистрирован: 11 сен 2013, 22:10
Репутация: 6
Откуда: Махачкала

Re: Выделение по геометрии.

Сообщение Эльдар » 15 мар 2014, 19:13

СРАБОТАЛО :D
Подпись :)

Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Выделение по геометрии.

Сообщение Petruxin » 15 мар 2014, 21:48

Пытаюсь повторить. Не получается. (WinXP NextGis 2.2.0 bld5). Где подвох ? И если надо pyton обновить - то как?
Вложения
py.png
py.png (55.94 КБ) 9907 просмотров

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Выделение по геометрии.

Сообщение Александр Мурый » 15 мар 2014, 21:55

Petruxin писал(а):Пытаюсь повторить. Не получается. (WinXP NextGis 2.2.0 bld5). Где подвох ?
А если попробовать в питон-консоли выполнить так?

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

execfile(r'C:/Data/1/tr.py')
У меня на линуксе в QGIS 2.3-мастер работает нормально.
Редактор материалов, модератор форума

Petruxin
Гуру
Сообщения: 1695
Зарегистрирован: 14 июн 2011, 16:47
Репутация: 133
Ваше звание: Завсегдатай
Откуда: Череповец

Re: Выделение по геометрии.

Сообщение Petruxin » 15 мар 2014, 22:03

Неа. Видимо , как говориться: нЕжили богато с pytonом и не фиг начинать :D

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

Re: Выделение по геометрии.

Сообщение Александр Мурый » 15 мар 2014, 22:05

Чисто в качестве предположения: а может быть, и нет в этом слое полигонов с тремя вершинами? :) Хотя на скриншоте прямо по центру заметил один треугольник.
Редактор материалов, модератор форума

Ответить

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

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

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