Pages: 1
- Sujet précédent - QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis - Sujet suivant
#1 Mon 24 October 2016 17:14
- jerome_m
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 28 Nov 2012
- Messages: 51
QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis
Bonjour à tous.
J'ai créé dans ma base PostGis une fonction prend en paramètre une table postgrès et un entier.
La fonction va modifier la géométrie de la couche en fonction de la valeur de l'entier et créé une deuxième table qui contiendra mon résultat.
Ex : ma_fonction(input_table,my_coef) => output_table
J'aimerai pouvoir exécuter cette fonction depuis Qgis. J'ai pensé à plusieurs pistes :
- en utilisant les virtual Layer (mais apparemment cela ne permet d'executer que du code sql lite "classique")
- en utilisant les actions sur les couches : executer du code python execute ma fonction.
Qu'en pensez vous ? Pour la deuxième solutions, cela me semble possible mais ma fonction SQL prend normalement une table Postgres en paramètre. Idéalement, j'aimerai que ma fonction depuis Qgis sur toute mes couches (postgres, shp, etc...) Cela vous semble t il possible ? (vu que dans le DB Manager, il est possible d'exécuter du SQL sur des shp, j'ai espoir...)
Merci d'avance pour vos conseils !
(pour info, je suis sous Qgis 2.16, posgresql 9.6 et postgis 2.3)
Hors ligne
#2 Mon 24 October 2016 20:40
- JD
- Membre
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis
Bonsoir,
En passant par la boîte de traitement et en créant un modèle vous pourrez faire ce que vous voulez.
Vous avez la possibilité d importer la table dans votre base de donnée puis exécuter ensuite votre requête.
Cordialement,
Hors ligne
#3 Tue 25 October 2016 08:49
- jerome_m
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 28 Nov 2012
- Messages: 51
Re: QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis
Merci, lejedi76 ! Je n'y avais pas pensé alors que ça parait évident !
Je vais tester deux solutions :
- un modèle via l'interface de traitement
- un script python avec une interface graphique
Par contre, cela serait vraiment pratique de pouvoir appeler ce genre de fonctions depuis le DB Manager !
Hors ligne
#4 Tue 25 October 2016 11:42
- magr
- Participant occasionnel
- Date d'inscription: 30 Mar 2016
- Messages: 32
Re: QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis
C'est possible dans DB manager, si la fonction renvoie une table ou un ensemble de de lignes et si input_table est bien dans PostgreSQL ; par exemple dans une fenêtre SQL :
Code:
SELECT * FROM ma_fonction(input_table,my_coef);
Tu peux ensuite charger le résultat dans QGIS en cochant "charger en tant que nouvelle couche"
Dernière modification par magr (Tue 25 October 2016 11:45)
Hors ligne
#5 Tue 25 October 2016 16:41
- jerome_m
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 28 Nov 2012
- Messages: 51
Re: QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis
Merci, je testerai ça dans le DB Manager !
Pour le moment, je n'avais testé que :
Code:
SELECT ma_fonction(input_table,my_coef);
Mais sans succès. D'ailleurs, j'appelai mes fonctions de postgrès ainsi mais c'est peut être plus propre de faire ta méthode (Select * from ...)
A voir...
Hors ligne
#6 Wed 26 October 2016 07:59
- magr
- Participant occasionnel
- Date d'inscription: 30 Mar 2016
- Messages: 32
Re: QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis
Cela dépend en fait du type de données que renvoie ta fonction...
Hors ligne
#7 Wed 26 October 2016 08:10
- jerome_m
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 28 Nov 2012
- Messages: 51
Re: QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis
Ha mais oui, c'est parceque ma fonction ne renvoie pas de données ! Elle fait un "CREATE TABLE"... C'est d'ailleurs pour cela que l'appel depuis le DB Manager ne fonctionnait pas !
Hors ligne
Pages: 1
- Sujet précédent - QGIS/PostGIS: Executer une fonction PostGis perso depuis Qgis - Sujet suivant