#1 Fri 19 May 2017 07:50
- kagou
- Participant occasionnel
- Date d'inscription: 7 Apr 2010
- Messages: 27
QGIS: Aide pour création d'une fonction en python
Bonjour, j'ai besoin d'aide pour me créer une fonction en python sous QGIS 2.18.7
J'ai 2 couches :
Armoire (CODE, Nom etc.)
Lampes (CODE,NUMERO,PUISSANCE etc.)
Nota : CODE est un STRING
Je souhaite créer un champ virtuel (sur la couche Armoire) mis à jour automatiquement afin de compter le nombre de lampes qui y sont raccordées.
Le but étant que lors de l'affichage des informations sur une armoire, j'ai un décompte des lampes qui lui sont rattachées.
La fonction dirait ceci :
Retourne moi/Compte moi le nombre de lampes (de la couche Lampes) ayant le même CODE que l'armoire
D'avance merci
Dernière modification par kagou (Fri 19 May 2017 08:13)
Hors ligne
#2 Fri 19 May 2017 08:08
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: Aide pour création d'une fonction en python
Bonjour,
Quelle version de qgis avez vous ? A partir de la 2.18, il existe une fonction native (aggregate_relation) qui le fait.
Il faut définir votre relation entre vos deux couches dans les propriétés du projet en prenant votre champs CODE, et ensuite utiliser la fonction.
Code:
aggregate_relation( relation:='ma_relation', aggregate := 'count' )
Dernière modification par lejedi76 (Fri 19 May 2017 08:57)
Hors ligne
#3 Fri 19 May 2017 08:33
- kagou
- Participant occasionnel
- Date d'inscription: 7 Apr 2010
- Messages: 27
Re: QGIS: Aide pour création d'une fonction en python
Bonjour,
Quelle version de qgis avez vous ? A partir de la 2.18, il existe une fonction native (aggregate_relation) qui le fait.
Il faut définir votre relation entre vos deux couches dans les propriétés du projet en prenant votre champs CODE, et ensuite utiliser la fonction.Code:
aggregate_relation( relation:='ma_relation', calculation := 'count' )
Je découvre la fonction. Etes vous certain de votre syntaxe ?
pas plutôt un truc du style :
Code:
relation_aggregate( 'ARMOIREETLAMPES','count',"CODE")
Alors là je sais qu'il compte bien. Si je l'affecte à un champ fixe c'est bon les valeurs sont bien comptées. SI je l'affecte à un champ virtuel j'obtiens 'NULL' ... Bug ?
Dernière modification par kagou (Fri 19 May 2017 08:58)
Hors ligne
#4 Fri 19 May 2017 09:06
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: Aide pour création d'une fonction en python
Je découvre la fonction. Etes vous certain de votre syntaxe ?
pas plutôt un truc du style :Code:
relation_aggregate( 'ARMOIREETLAMPES','count',"CODE")Alors là je sais qu'il compte bien. Si je l'affecte à un champ fixe c'est bon les valeurs sont bien comptées. SI je l'affecte à un champ virtuel j'obtiens 'NULL' ... Bug ?
Oui, effectivement il faut préciser, le champs de calculation, je viens d'arriver au taffe (dans les transports sans 3g c'est pas évident ):
C'est d'ailleurs étrange pour un aggregat count
Vous pourriez mettre n'importe quoi dans le champs calculation que ca marcherait.
Code:
relation_aggregate( 'ARMOIREETLAMPES','count','mes super tomates')
doit aussi fonctionner
Et oui pour le champs virtuel, il s'agit d'un bug que j'ai déjà remonté (j'avais oublié) :
https://issues.qgis.org/issues/15930
Cordialement,
Dernière modification par lejedi76 (Fri 19 May 2017 09:09)
Hors ligne
#5 Fri 19 May 2017 09:10
- kagou
- Participant occasionnel
- Date d'inscription: 7 Apr 2010
- Messages: 27
Re: QGIS: Aide pour création d'une fonction en python
Un très grand merci pour votre aide Je vais appuyer votre rapport de bug
Hors ligne