Pages: 1
- Sujet précédent - QGIS : Récupérer ID de couche pour get_feature (couche, champ, valeur) - Sujet suivant
#1 Wed 12 August 2015 17:17
- jerome_m
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 28 Nov 2012
- Messages: 51
QGIS : Récupérer ID de couche pour get_feature (couche, champ, valeur)
Bonjour à tous,
Petit problème avec l'utilisation des fonctions dans Qgis :
J'ai deux couches contenant des polygones.
Je veux rajouter un champs booléen dans la table attributaire de la première couche. Il sera à TRUE si l'entité intersecte une autre entité de la deuxième couche.
J'utilise donc la fonction suivante :
intersects(
$geometry,
geometry(
getFeature(
'layer',
'colonne',
'valeur')
)
)
Mon problème vient de la récupération du nom de la deuxième couche. J'utilise la fonction getFeature qui prend en paramètre 'layer'... Mais comment récupérer simplement ce nom ?
En bidouillant avec l'API python, j'ai réussi à obtenir un id pour chaque couche du type 'nom_dateCréation'.
#récupération des couches actives
mycanvas = qgis.utils.iface.mapCanvas()
allLayers = mycanvas.layers()
#affichage dans la console du nom des couches récupérées
for i in allLayers:
print i.originalName() +' ' + i.name()
#affichage de l'id de la couche souhaitée
for i in allLayers:
if i.name()=='my_layer':
id=i.id()
print id
#on obtiens : my_layer20150812154136133
Si l'on met cet id dans le getFeature, cela fonctionne, mais j'aimerais àvoir une méthode me permettant de récupérer cet id sans passer par du code python.
Merci d'avance !
Hors ligne
#2 Wed 12 August 2015 17:52
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3941
Re: QGIS : Récupérer ID de couche pour get_feature (couche, champ, valeur)
Bonjour,
Avec getFeature, tu peux juste utiliser le nom de la couche telle qu'il apparaît dans la liste de couches. Pas besoin d'aller chercher l'identifiant unique de la couche.
Hors ligne
#3 Thu 13 August 2015 09:26
- jerome_m
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 28 Nov 2012
- Messages: 51
Re: QGIS : Récupérer ID de couche pour get_feature (couche, champ, valeur)
Merci beaucoup Santanna ! J'étais persuadé que ça ne fonctionnait pas avec juste le nom. Du coup, c'est beaucoup plus simple !
Bonne journée !
Hors ligne
#4 Mon 31 August 2015 16:55
- jerome_m
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 28 Nov 2012
- Messages: 51
Re: QGIS : Récupérer ID de couche pour get_feature (couche, champ, valeur)
J'ai encore un problème avec mon script...
Je crée un modele sous QGis (avec le modeleur graphique). Comme précisé au dessus, je travaille sur une couche et je veux lui rajouter un champs booléen si sa géométrie intersecte la géométrie d'une autre couche.
Pour cela j'utilise la fonction "Field Calculator" avec la fonction suivante :
intersects( $geometry, geometry(getFeature('layer','colonne','valeur') ) )
Le problème vient maintenant que ma couche d'intersection n'est pas dans mon projet (car crée en amont par mon modèle) et l'intersection ne fonctionne donc pas... J'aimerai utiliser une autre méthode mais je manque d'idée !
Quelqu'un aurait une idée pour m'aider ?
Merci d'avance
Hors ligne
#5 Wed 02 September 2015 10:30
- jerome_m
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 28 Nov 2012
- Messages: 51
Re: QGIS : Récupérer ID de couche pour get_feature (couche, champ, valeur)
Résolu en faisant une jointure spatiale entre mes deux couches (join by location) puis en créant un champs booleen dans ma nouvelle couche qui est à 1 si un champs join n'est pas nul.
Ainsi, pas besoin de faire référence à une autre couche dans la formule du Field Calculator !
Hors ligne
Pages: 1
- Sujet précédent - QGIS : Récupérer ID de couche pour get_feature (couche, champ, valeur) - Sujet suivant