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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 22 September 2016 10:31

amarciniak
Juste Inscrit !
Date d'inscription: 22 Sep 2016
Messages: 4

QGIS 2.14.4: Python - requêtes spatiales sur virtual layer

Bonjour,

Je développe un plugin sur Qgis en rapport avec le cadastre et je rencontre un problème avec les requêtes spatiales.

Je sais que l'on peut exécuter des requêtes spatiales depuis le plugin "extension de requêtes spatiales", ou bien depuis DB manager.
Actuellement, dans DB manager, je peux voir toutes les couches virtuelles de mon projet en sélectionnant "Virtual layers", et exécuter les requêtes qui m’intéressent (par exemple : quelles sont les parcelles sur lesquelles on trouve de l'éclairage public).

Mon but est de pouvoir exécuter ces requêtes qui concernent les couches virtuelles directement dans mon code Python, mais je ne sais pas comment faire.

Je sais me connecter à ma base SQLite et lancer des requêtes dessus, mais les couches virtuelles n'en font pas partie.
Existe t-il un moyen de se "connecter" aux couches virtuelles pour pouvoir exécuter des requêtes dessus ?

Cordialement.

Hors ligne

 

#2 Thu 22 September 2016 14:27

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS 2.14.4: Python - requêtes spatiales sur virtual layer

Bonjour,

tu trouveras sur le compte github de l'auteur de la documentation qui explique comment faire (partie provider syntax et exemple).
Rien de bien sorcier à première vue mais n'hésite pas si tu as besoin.

https://github.com/mhugo/qgis_vlayers

Cordialement,

Dernière modification par lejedi76 (Thu 22 September 2016 14:28)

Hors ligne

 

#3 Mon 26 September 2016 11:39

amarciniak
Juste Inscrit !
Date d'inscription: 22 Sep 2016
Messages: 4

Re: QGIS 2.14.4: Python - requêtes spatiales sur virtual layer

Bonjour,

Merci pour ta réponse. J'ai regardé la documentation et je comprends comment créer mes requêtes, par contre je ne sais pas comment
exécuter ces dernières, ou récupérer leur résultat.

Si je reprends cet exemple :

Code:

l = QgsVectorLayer( "?query=SELECT a,b FROM tab", "myvlayer", "virtual" )

Comment savoir ce que renvoie la requête définie sur l, afin de pouvoir afficher le résultat sous forme de texte ?


Cordialement,

Hors ligne

 

#4 Mon 26 September 2016 23:52

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS 2.14.4: Python - requêtes spatiales sur virtual layer

Bonsoir,
Je ne comprends pas bien ta question.
Sur l exemple que tu me donnes, le layer généré a deux colonnes a et b. Après, il s'agit d un qgsvectorlayer donc tu le parcours normalement :

Code:

for feat in l.getFeatures():
  Print '{} -{}'.format(feat['a'],feat['b'])

Explique-moi ce que tu veux faire et donne moi un exemple concret car je suis pas sûr de comprendre.

Bonne soirée

Hors ligne

 

#5 Tue 27 September 2016 11:02

amarciniak
Juste Inscrit !
Date d'inscription: 22 Sep 2016
Messages: 4

Re: QGIS 2.14.4: Python - requêtes spatiales sur virtual layer

Bonjour, merci pour ta réponse, elle correspond exactement à ce que je voulais faire (pouvoir afficher les champs a et b dans ce cas précis).

Je n'avais pas compris comment parcourir le qgsvectorlayer après l'avoir défini, j'avais mal formulé ma question.

Cela résout mon problème, merci beaucoup.

Cordialement,

Hors ligne

 

Pied de page des forums

Powered by FluxBB