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