Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

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 Tue 12 January 2021 11:24

Benoît595
Participant actif
Lieu: Douai
Date d'inscription: 17 Feb 2020
Messages: 52

QGIS 3.14: expression aggregate

bonjour,
Je suis sous Qgis 3.14, je cherche à utiliser l'expression ci dessous dans la calculatrice de champ pour remplir un champ texte. L'objectif est de remplir le champ d'une couche de polygone qui recouvre plusieurs parcelles avec la liste des parcelles situées à l'intérieur.

aggregate('couche_polygone','array_agg', "parcelle"), filter:=intersects(centroid(geometry(@parent)), $geometry))

si dans la calculatrice de champ j'ai bien un aperçu du résultat qui semble correct, l'exécution renvoie un résultat null

où est mon erreur?
merci d'avance

Hors ligne

 

#2 Tue 12 January 2021 13:38

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS 3.14: expression aggregate

Bonjour,

quel type de champs avez-vous choisi de créer ?
Je pense que le mieux serait d'utiliser un champs string et d'utiliser la fonction array_to_string

Hors ligne

 

#3 Tue 12 January 2021 15:02

Benoît595
Participant actif
Lieu: Douai
Date d'inscription: 17 Feb 2020
Messages: 52

Re: QGIS 3.14: expression aggregate

merci pour l'aide, j'essayais de créer un champ texte et array_to_string manquait dans mon expression. Elle ne répond cependant pas complètement à mon objectif

Hors ligne

 

#4 Tue 12 January 2021 15:06

Benoît595
Participant actif
Lieu: Douai
Date d'inscription: 17 Feb 2020
Messages: 52

Re: QGIS 3.14: expression aggregate

j'avais inversé deux éléments, voici l'expression qui me convient:
array_to_string(aggregate('couche_polygone','array_agg', "parcelle", filter:=intersects(geometry(@parent), centroid($geometry))),' ; ','')

merci beaucoup

Hors ligne

 

#5 Tue 12 January 2021 15:13

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS 3.14: expression aggregate

Bonjour,
La parenthèse après "parcelle" est une erreur de saisie?
array_agg renvoie un array donc vous ne pourrez pas le stocker dans un champ texte, sans conversion préalable, comme suggéré par JD.
Pourquoi pas juste 'concatenate' comme opérateur? Ça évite cette double "écriture" (vers array puis vers texte)

Hors ligne

 

#6 Tue 12 January 2021 16:40

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: QGIS 3.14: expression aggregate

SANTANNA a écrit:

'concatenate'


C'est effectivement la solution optimale dans ce cas-ci.

Hors ligne

 

#7 Wed 13 January 2021 09:40

Benoît595
Participant actif
Lieu: Douai
Date d'inscription: 17 Feb 2020
Messages: 52

Re: QGIS 3.14: expression aggregate

merci pour votre aide.
Je ne vois pas comment utiliser concatenate ici

Hors ligne

 

#8 Wed 13 January 2021 10:34

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS 3.14: expression aggregate

Bonjour,
En remplacement d'array_agg dans votre formule, à moins que je ne comprenne pas la question.
Il y a un exemple dans l'aide

Hors ligne

 

#9 Wed 13 January 2021 11:49

Benoît595
Participant actif
Lieu: Douai
Date d'inscription: 17 Feb 2020
Messages: 52

Re: QGIS 3.14: expression aggregate

Bonjour,
merci pour la précision.
L'expression est donc bien plus simple, fonctionne très bien et donne ceci :
aggregate('couche_polygone','concatenate', "parcelle", filter:=intersects(geometry(@parent), centroid($geometry)),concatenator:=' ; ')

Merci beaucoup pour l'aide!

Hors ligne

 

#10 Wed 13 January 2021 14:41

Benoît595
Participant actif
Lieu: Douai
Date d'inscription: 17 Feb 2020
Messages: 52

Re: QGIS 3.14: expression aggregate

cette expression fonctionne aussi pour l'intersection de 2 polygones :
aggregate('couche_polygone','concatenate', "parcelle", filter:=intersects(geometry(@parent), $geometry),concatenator:=' ; ')

C'est vraiment très pratique

Dernière modification par Benoît595 (Wed 13 January 2021 14:44)

Hors ligne

 

#11 Tue 16 November 2021 16:43

Loomis64
Participant occasionnel
Date d'inscription: 17 Nov 2017
Messages: 13

Re: QGIS 3.14: expression aggregate

Bonjour,

J'ai créé une discussion qui concerne ce sujet et je n'ai pas réussi à faire marcher cette commande, en l'adaptant à mon cas.

J'ai une couche 'Commune' , avec un champ "nom". Je veux que lorsque je créé un polygone dans ma couche 'Projet', mon champ 'ville' se remplisse automatiquement en fonction de la position du polygone dans l'espace et donc de la ville. Ce polygone sera toujours dans un polygone d'une ville, jamais à cheval sur deux villes.

Merci par avance !

Hors ligne

 

#12 Wed 17 November 2021 18:32

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS 3.14: expression aggregate

Bonjour,
Veuillez indiquez la formule utilisée, autrement difficile de voir où votre mise en application coince.

Hors ligne

 

Pied de page des forums

Powered by FluxBB