Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#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
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

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: 29

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: 29

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

 

Pied de page des forums

Powered by FluxBB