Страница 1 из 2

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

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

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

Добавлено: 14 мар 2014, 21:03
trir

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

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

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

Добавлено: 14 мар 2014, 21:38
Эльдар
не могли бы более подробно описать, как и где нужно ее прописать? Калькулятор полей не понимает этот код.

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

Добавлено: 15 мар 2014, 12:09
dab
Эльдар, указывайте, пожалуйста, версии используемого ПО и типы данных.
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())

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

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

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

Добавлено: 15 мар 2014, 14:41
dab
"Выделение выражением" это модуль какой то или что?
Так скрипт сработал?

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

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

Добавлено: 15 мар 2014, 18:11
dab
Просто на карте делаете нужный Вам слой активным и запускаете мой код без всяких изменений.

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

Добавлено: 15 мар 2014, 18:28
Эльдар
НЕ СРАБОТАЛ
Изображение

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

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

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

Добавлено: 15 мар 2014, 19:13
Эльдар
СРАБОТАЛО :D

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

Добавлено: 15 мар 2014, 21:48
Petruxin
Пытаюсь повторить. Не получается. (WinXP NextGis 2.2.0 bld5). Где подвох ? И если надо pyton обновить - то как?

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

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

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

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

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

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

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

Добавлено: 15 мар 2014, 22:05
Александр Мурый
Чисто в качестве предположения: а может быть, и нет в этом слое полигонов с тремя вершинами? :) Хотя на скриншоте прямо по центру заметил один треугольник.