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

Les inscriptions sont ouvertes !

#1 Wed 19 March 2025 11:08

andri
Juste Inscrit !
Date d'inscription: 19 Mar 2025
Messages: 3

QGIS: Fonction aggregate ?

Bonjour à tous!

Je suis nouveau sur le forum, étant un newvie de qgis , je viens de m'atteller à la fonction 'Aggregate' , mon souci? quand j'arrive enfin à bien rédiger le code correspondant à la fonction en question , qgis m'envoi l'erreur : Aucun agrégat

Mes couches sont de type polygones: Un fichier shp 'Communes et un Fichier 'shp' 'Parcelles'
Ce que je souhaiterais faire c'est : Faire apparaitre dans un nouveau champ de la couche commune la liste des numéros de parcelles recouvrant la commune
voici l'état du code en question:

Code:

aggregate( 
layer:= 'mdg_admbnda_adm4_BNGRC_OCHA_20181031_c3815c63_1ba4_4f06_bc36_6faf9cb5f873',
aggregate:= concatenate,
expression:=   'ADM4_EN'  ,
filter:= overlay_intersects(geometry(@parent), $geometry),
concatenator:= ' , ')

Est ce que quelqu'un peut m'aider à resoudre ce probleme svp
Merci à Tous!

Hors ligne

 

#2 Wed 19 March 2025 11:15

Miniopterine
Participant assidu
Date d'inscription: 29 Nov 2005
Messages: 280

Re: QGIS: Fonction aggregate ?

Bonjour,

Il me semble que comme l'expression doit renvoyer un champ, il faudrait écrire expression:="ADM4_EN"

Hors ligne

 

#3 Wed 19 March 2025 13:11

LPlante
Participant occasionnel
Date d'inscription: 17 Nov 2021
Messages: 47

Re: QGIS: Fonction aggregate ?

Egalement l'outil entre simple cote   aggregate:= 'concatenate',

Hors ligne

 

#4 Wed 19 March 2025 14:30

andri
Juste Inscrit !
Date d'inscription: 19 Mar 2025
Messages: 3

Re: QGIS: Fonction aggregate ?

J'ai lu et rectifié l'expression selon les réponses de Miniopterine et LPlante mais sans aucun résultat, svp

Code:

array_distinct(array_agg
(aggregate('permis_agg_new_83ef0f23_8625_4c4c_b4d6_b1a92c0cbeca',concatenate,
array_to_string ("numero"),
overlay_intersects(geometry(@parent), $geometry)
)
)
)

J'espère que vous pourriez m'aider 
A tous
Bonne continuation

Hors ligne

 

#5 Thu 20 March 2025 05:58

Julien81
Participant assidu
Lieu: Giroussens
Date d'inscription: 14 Jan 2019
Messages: 188

Re: QGIS: Fonction aggregate ?

Bonjour, petite question :
"Ce que je souhaiterais faire c'est : Faire apparaitre dans un nouveau champ de la couche commune la liste des numéros de parcelles recouvrant la commune" -->pour quoi faire?
Une seconde aussi car le parcellaire étant géométriquement toujours un peu capricieux et volumineux, pour se passer d'une requête spatiale n'y a t'il pas éventuellement un champ dans vos deux couche permettant d'identifier la commune (insee_com ou autre)? Si ce n'est pas le cas ça vaut le coup de le créer et ce peut être rapide à renseigner si vous avez bien les attributs dans parcelle. Avec ça vous pourriez déclarer une relation parent - enfant ça vous éviterait de créer un champ avec une expression compliquée mais vous pourriez voir dans la table des communes toutes les parcelles associées à chaque.
Bonne journée

Hors ligne

 

#6 Thu 20 March 2025 09:32

andri
Juste Inscrit !
Date d'inscription: 19 Mar 2025
Messages: 3

Re: QGIS: Fonction aggregate ?

Julien81 a écrit:

Bonjour, petite question :
"Ce que je souhaiterais faire c'est : Faire apparaitre dans un nouveau champ de la couche commune la liste des numéros de parcelles recouvrant la commune" -->pour quoi faire?
Une seconde aussi car le parcellaire étant géométriquement toujours un peu capricieux et volumineux, pour se passer d'une requête spatiale n'y a t'il pas éventuellement un champ dans vos deux couche permettant d'identifier la commune (insee_com ou autre)? Si ce n'est pas le cas ça vaut le coup de le créer et ce peut être rapide à renseigner si vous avez bien les attributs dans parcelle. Avec ça vous pourriez déclarer une relation parent - enfant ça vous éviterait de créer un champ avec une expression compliquée mais vous pourriez voir dans la table des communes toutes les parcelles associées à chaque.
Bonne journée


Merci beaucoup mais En fait je connais ndéjà la manip de relations/jointures, mais ayant consulté sur le net que la fonction'Aggregat' marche très bien aussi , C'est ce que je voudrais essayer
Mon problème c'est que je n'arrive pas à appliquer cette fonction 'Aggregate' , qui me fait défaut c'est cette fonction ne marche pas , Je suis sous qgis 'Maidenhead'

donc dans l'attente de vous tous , Merci VIVEMENT!!!

Hors ligne

 

#7 Thu 20 March 2025 12:09

arginet
Participant actif
Lieu: Lyon
Date d'inscription: 23 Feb 2017
Messages: 55

Re: QGIS: Fonction aggregate ?

Bonjour andri,
Je vois que dans l'aide de la fonction que l'agrégat doit être spécifié en tant que chaine de caractère, donc entre guillemets simples, comme vous l'indique LPlante. C'est pour cela que QGIS vous renvoie l'erreur "Aucun agrégat".
Par ailleurs, avez-vous vu que la fonction overlay_intersects() permet de renvoyer directement un tableau de valeurs des géométries intersectées ?
Ainsi, vous pouvez simplifier votre expression et obtenir de meilleures performances avec une expression du type :

Code:

 array_to_string( 
    overlay_intersects(
        layer:='parcelles',
        expression:="code_parcelle"),
    ', ')

Hors ligne

 

#8 Fri 21 March 2025 10:17

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

Re: QGIS: Fonction aggregate ?

Bonjour,
C'est sur que overlay_intersects est fait pour ça.
Et pour revenir sur votre code initial avec aggregate, outre les corrections déjà suggérées, je rajouterais que l'expression de filtre n'est pas correct: ce n'est pas overlay_intersects qui est à utiliser mais intersects, tout court (cf les exemples de la fonction). Et je suis étonné que QGIS ne remonte pas l'erreur de passer une géométrie en argument quand il faut une couche.

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo