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 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 smile

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

lejedi76 a écrit:

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

kagou a écrit:

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 smile ):
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 smile Je vais appuyer votre rapport de bug wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB