Страница 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
Эльдар
СРАБОТАЛО

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). Где подвох ?
А если попробовать в питон-консоли выполнить так?
У меня на линуксе в QGIS 2.3-мастер работает нормально.
Re: Выделение по геометрии.
Добавлено: 15 мар 2014, 22:03
Petruxin
Неа. Видимо , как говориться: нЕжили
богато с pytonом и не фиг начинать

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

Хотя на скриншоте прямо по центру заметил один треугольник.