Выделение по геометрии.
- Эльдар
- Участник
- Сообщения: 61
- Зарегистрирован: 11 сен 2013, 22:10
- Репутация: 6
- Откуда: Махачкала
Выделение по геометрии.
Доброй ночи. Подскажите пожалуйста , как можно выделить объекты на полигональном слое, по количеству вершин полигона. Например выбрать все полигоны с 3 вершинами (треугольники).
Последний раз редактировалось Эльдар 17 мар 2014, 08:08, всего редактировалось 1 раз.
Подпись 

-
- Гуру
- Сообщения: 5360
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Выделение по геометрии.
Код: Выделить всё
select * from Tbl where NumPoints(ExteriorRing(fPolygon))=3
- Эльдар
- Участник
- Сообщения: 61
- Зарегистрирован: 11 сен 2013, 22:10
- Репутация: 6
- Откуда: Махачкала
Re: Выделение по геометрии.
не могли бы более подробно описать, как и где нужно ее прописать? Калькулятор полей не понимает этот код.
Подпись 

- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Выделение по геометрии.
Эльдар, указывайте, пожалуйста, версии используемого ПО и типы данных.
http://gis-lab.info/qa/forum-recommend.html
Так как подробностей нет, могу только посоветовать банальный скрипт Python. Для QGIS 2.0.1. Выполните его в консоли Python для активного слоя карты и получите выделенные полигоны с тремя вершинами.
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: Выделение по геометрии.
Используемая ПО QGIS 2.0.2 Так вот, есть SHP с пространственными данными (площадные объекты), и мне необходимо сделать выбор объектов треугольной формы. объектов на карте более 50 000.
обычно для выбора я использую выделение выражением
обычно для выбора я использую выделение выражением
Подпись 

- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Выделение по геометрии.
"Выделение выражением" это модуль какой то или что?
Так скрипт сработал?
Так скрипт сработал?
- Эльдар
- Участник
- Сообщения: 61
- Зарегистрирован: 11 сен 2013, 22:10
- Репутация: 6
- Откуда: Махачкала
Re: Выделение по геометрии.
Выделение выражением, то есть выделить объекты удовлетворяющие условии А код почему то не хочет работать, к сведению с Консоль 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

название 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: Выделение по геометрии.
Просто на карте делаете нужный Вам слой активным и запускаете мой код без всяких изменений.
- Эльдар
- Участник
- Сообщения: 61
- Зарегистрирован: 11 сен 2013, 22:10
- Репутация: 6
- Откуда: Махачкала
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Выделение по геометрии.
Это скрипт с циклом "for" - его нельзя просто построчно вводить в консоль, а нужно делать отступы для сток внутри цикла как положено в Python.Эльдар писал(а):НЕ СРАБОТАЛ
Короче - открываете в консоли редактор, открываете в редакторе файл tr.py, запускаете.
- Вложения
-
- tr.png (105.89 КБ) 9949 просмотров
-
tr.py
- (215 байт) 549 скачиваний
- Эльдар
- Участник
- Сообщения: 61
- Зарегистрирован: 11 сен 2013, 22:10
- Репутация: 6
- Откуда: Махачкала
-
- Гуру
- Сообщения: 1695
- Зарегистрирован: 14 июн 2011, 16:47
- Репутация: 133
- Ваше звание: Завсегдатай
- Откуда: Череповец
Re: Выделение по геометрии.
Пытаюсь повторить. Не получается. (WinXP NextGis 2.2.0 bld5). Где подвох ? И если надо pyton обновить - то как?
- Вложения
-
- py.png (55.94 КБ) 9907 просмотров
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Выделение по геометрии.
А если попробовать в питон-консоли выполнить так?Petruxin писал(а):Пытаюсь повторить. Не получается. (WinXP NextGis 2.2.0 bld5). Где подвох ?
Код: Выделить всё
execfile(r'C:/Data/1/tr.py')
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 1695
- Зарегистрирован: 14 июн 2011, 16:47
- Репутация: 133
- Ваше звание: Завсегдатай
- Откуда: Череповец
Re: Выделение по геометрии.
Неа. Видимо , как говориться: нЕжили богато с pytonом и не фиг начинать 

-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Выделение по геометрии.
Чисто в качестве предположения: а может быть, и нет в этом слое полигонов с тремя вершинами?
Хотя на скриншоте прямо по центру заметил один треугольник.

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