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

QGIS связка с БД + интерактивность

Добавлено: 10 сен 2019, 12:05
tems-ya
Добрый день, друзья!

С Qgis сталкивался совсем поверхностно...
Подскажите, если кто в теме

1) Есть БД. В ней таблица. Например координаты и название точки.
Можно-ли заставить Qgis подключиться к БД, скачать данные и отобразить точки (вектора, полигоны) на карте?
Если можно то как?

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

2) Можно ли заставить Qgis выполнять запрограмированные действия при щелчке мышкой на объектах карты?

Все это делаю на МаpInfo на MapBasic.
Встал вопрос перехода на открытое бесплатное ПО(Qgis)... Пока даже не могу оценить его пригодность (идеологическую) для решения таких задачь :(

Слышал что Qgis==C++ и криво Piton. Это непугает, но нужны примеры и/или доки

Если все это возможно, помогите освоить технологию - сделать первые шаги.

Спасибо.

Re: QGIS связка с БД + интерактивность

Добавлено: 10 сен 2019, 16:18
wasposa
Могу порекомендовать "The PyQGIS Programmer’s Guide. Extending QGIS 3.x with Python 3"

Re: QGIS связка с БД + интерактивность

Добавлено: 10 сен 2019, 18:46
trir
п.1 Легко, если хранить геометрию как геометрию :D
http://wiki.gis-lab.info/w/%D0%9F%D1%80 ... 0%B8%D0%B9

Re: QGIS связка с БД + интерактивность

Добавлено: 11 сен 2019, 15:44
tems-ya
Спасибо, за ответы.

Был бы премного благодарен если бы кто мопог с книжкой по 3 версии или ссылкой на место где ее можно скачать, так как принято у нас. К сожалению быстро пока найти ее не удалось, удалось скачать только по 2 версии, да и то без плясок с бубеном не обошлось. 2 Версия сильно отличается, но всяко лучше чем ничего, особенно не старте. Пока курю ее.

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

С горем пополам с 10 попытки подключился к БД и скормил ей (selec * from xxx). Координаты точки у меня теперь, теоретически есть. Вопрос как отобразить ее на карте? Примерчик бы...

З.Ы. Слой карты из шейпа с трудом, но удалось загрузить тоже, а вот с атрибутами, как там менять цвета и прочее пока не справился, т.к. 3 версия, от описанной в книжке 2 версии, весьма существенно отличается + с питоном никогда до этого не приходилось иметь дело.

Re: QGIS связка с БД + интерактивность

Добавлено: 11 сен 2019, 17:00
trir
по этим данным нужно отобразить точку
надо просто создать точку в БД - это можно сделать через представление в БД, я так в приведённом примере из точек собираю линии, а можно из координат собирать точки

Re: QGIS связка с БД + интерактивность

Добавлено: 12 сен 2019, 08:49
tems-ya
:) Это другой подход.
В общем случае у нас нет БД. У нас есть файл (Exel, csv и т.д.) и надо создать карту shp например с одной или несколькими точками из этого файла.
Нет никаких БД, нет никаких гео-надстроек над ними. Надо руками создать карту. Не может быть чтобы такой мощный инструмент не мог это сделать - вопрос в том, как это реализовать из скриптов.

Re: QGIS связка с БД + интерактивность

Добавлено: 12 сен 2019, 11:08
trir
У нас есть файл (Exel, csv и т.д.) и надо создать карту shp например с одной или несколькими точками из этого файла.
не надо, просто сделай csv с wkt - в Excel'е это можно сделать формулами

Re: QGIS связка с БД + интерактивность

Добавлено: 12 сен 2019, 14:37
tems-ya
Ок, допустим.. сделаю. Точку нарисую, точнее, таким обоазом смогу импортировать на слой.

Вопрос, кака мне нарисовать на карте сектор с произвольным радиусом R, произвольным азимутом alfa и произвольной ширины с вершиной в точке с координатами LAT,LON (все значения задаются в переменных и могут меняться походу)?

Тоже в Exel формулами?

Re: QGIS связка с БД + интерактивность

Добавлено: 12 сен 2019, 15:28
trir
да, но задача сложнее чем ты думаешь, или проще...
Этот сектор нужен как оформление или полигон?

https://gis.stackexchange.com/questions ... using-qgis
viewtopic.php?f=25&t=20491

Re: QGIS связка с БД + интерактивность

Добавлено: 12 сен 2019, 16:52
tems-ya
Не совсем понял про оформление и полигон.
Моя хотелка простая (или сложная)

Есть сформированнная карта(или набор слоев) со всеми нужными нам объектами (как это сделать мне пока непонятно, ну допустим). Мышкой я кликаю по нужному объекту - в итоге на карте рисуется сектор, линия, символ, да что угоднго, что мне будет нужно, на основании тех данных которые хранятся в свойствах данного объекта.

Это что оформление или полигон я не знаю, склоняюсь к полигону.

З.Ы. Вот нашел, пока, кажется ближе всего (и понятнее) к тому, что требуется. Версия правда старая, ну хоть на уровне идею посмотреть, а то вообще вслепую.
http://gis-lab.info/docs/qgis/cookbook/

Re: QGIS связка с БД + интерактивность

Добавлено: 12 сен 2019, 16:56
tems-ya
Нужен аналог того, что я делал сдесь
viewtopic.php?t=18754
для MapIfo

Re: QGIS связка с БД + интерактивность

Добавлено: 13 сен 2019, 15:53
tems-ya
Какую-то точку удалось нарисовать так:

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

layer = QgsVectorLayer('Point?crs=epsg:4326', 'MyPoint' ,'memory')
pr = layer.dataProvider()
pt = QgsFeature()
point1 = QgsPointXY(20,20)

pt.setGeometry(QgsGeometry.fromPointXY(point1))
pr.addFeatures([pt])
layer.updateExtents()

QgsProject.instance().addMapLayer(layer)