Страница 1 из 1
					
				Кнопка запускающая алгоритм
				Добавлено: 26 апр 2019, 21:06
				 Svility
				Есть БД на 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  
 
 
Прошу помочь советом/примером.
 
			
					
				Re: Кнопка запускающая алгоритм
				Добавлено: 27 апр 2019, 00:41
				 oldbay
				А если ваш 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()
 
			
					
				Re: Кнопка запускающая алгоритм
				Добавлено: 27 апр 2019, 08:23
				 Svility
				oldbay писал(а): ↑27 апр 2019, 00:41 
Я правильно понимаю что такой запрос должен срабатывать через "Консоль Python" в QGIS ?
 
			
					
				Re: Кнопка запускающая алгоритм
				Добавлено: 27 апр 2019, 15:57
				 nikost
				А штатный калькулятор не?
IF ($area > 500, 1, 0)
			 
			
					
				Re: Кнопка запускающая алгоритм
				Добавлено: 28 апр 2019, 08:16
				 Svility
				nikost писал(а): ↑27 апр 2019, 15:57А штатный калькулятор не?
IF ($area > 500, 1, 0)
 
Вышеописанных строк тысячи, а штатный калькулятор имеет ограничения. Поэтому не подходит
 
			
					
				Re: Кнопка запускающая алгоритм
				Добавлено: 28 апр 2019, 22:40
				 oldbay
				Svility писал(а): ↑27 апр 2019, 08:23Я правильно понимаю что такой запрос должен срабатывать через "Консоль Python" в QGIS ?
 
Вот не скажу. Это простейший скрипт на python для выполнения вашего запроса. Он требует установки пакета psycopg2 (
https://pypi.org/project/psycopg2/)