Pages: 1
- Sujet précédent - QGIS 2.14.4: Python - requêtes spatiales sur virtual layer - Sujet suivant
#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
Pages: 1
- Sujet précédent - QGIS 2.14.4: Python - requêtes spatiales sur virtual layer - Sujet suivant