Кнопка запускающая алгоритм

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Аватара пользователя
Svility
Участник
Сообщения: 55
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 5
Откуда: 32637

Кнопка запускающая алгоритм

Сообщение Svility » 26 апр 2019, 21:06

Есть БД на PG, через менеджер бд в qgis выполняются запросы типа:

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

UPDATE "Public".buildings
SET fields1=CASE
	WHEN ST_AREA(geom::geography)>500 THEN 1
	WHEN ST_AREA(geom::geography)<500 THEN 0
END 
так как подобный запрос выполняется очень часто, возникла необходимость оформить его в виде кнопки (плагина) в qgis. Через Plugin Builder кнопку создать не проблема, но как ее заставить выполнять алгоритм, не через sql в бд, а через таблицу слоёв - мне пока не ясно. Я с Python не дружу, но полагаю что он не должен быть сложнее sql :?
Прошу помочь советом/примером.

Аватара пользователя
oldbay
Участник
Сообщения: 53
Зарегистрирован: 14 июл 2015, 11:46
Репутация: 19
Откуда: Санкт-Петербург
Контактная информация:

Re: Кнопка запускающая алгоритм

Сообщение oldbay » 27 апр 2019, 00:41

А если ваш sql запрос выполнить таки из python при помощи psycopg2 ?

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

import psycopg2

connString = "
        host='hostname' 
        port='5432'
        dbname='db_name'
        user='db_user'
        password='db_user_pass'"

SQL="""
UPDATE \"Public\".buildings
SET fields1=CASE
	WHEN ST_AREA(geom::geography)>500 THEN 1
	WHEN ST_AREA(geom::geography)<500 THEN 0
""" 
   
conn = psycopg2.connect(connString)
cur = conn.cursor()
cur.execute(SQL)
cur.commit()
cur.close()
conn.close()
Последний раз редактировалось oldbay 29 апр 2019, 20:36, всего редактировалось 1 раз.

Аватара пользователя
Svility
Участник
Сообщения: 55
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 5
Откуда: 32637

Re: Кнопка запускающая алгоритм

Сообщение Svility » 27 апр 2019, 08:23

oldbay писал(а):
27 апр 2019, 00:41
Я правильно понимаю что такой запрос должен срабатывать через "Консоль Python" в QGIS ?

nikost
Активный участник
Сообщения: 107
Зарегистрирован: 16 июл 2015, 15:21
Репутация: 35
Откуда: Санкт-Петербург

Re: Кнопка запускающая алгоритм

Сообщение nikost » 27 апр 2019, 15:57

А штатный калькулятор не?
IF ($area > 500, 1, 0)

Аватара пользователя
Svility
Участник
Сообщения: 55
Зарегистрирован: 24 окт 2017, 19:41
Репутация: 5
Откуда: 32637

Re: Кнопка запускающая алгоритм

Сообщение Svility » 28 апр 2019, 08:16

nikost писал(а):
27 апр 2019, 15:57
А штатный калькулятор не?
IF ($area > 500, 1, 0)
Вышеописанных строк тысячи, а штатный калькулятор имеет ограничения. Поэтому не подходит

Аватара пользователя
oldbay
Участник
Сообщения: 53
Зарегистрирован: 14 июл 2015, 11:46
Репутация: 19
Откуда: Санкт-Петербург
Контактная информация:

Re: Кнопка запускающая алгоритм

Сообщение oldbay » 28 апр 2019, 22:40

Svility писал(а):
27 апр 2019, 08:23
Я правильно понимаю что такой запрос должен срабатывать через "Консоль Python" в QGIS ?
Вот не скажу. Это простейший скрипт на python для выполнения вашего запроса. Он требует установки пакета psycopg2 (https://pypi.org/project/psycopg2/)

Ответить

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

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

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