#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 ?
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