#1 Tue 24 March 2026 16:59
QGIS: Tableau de synthese dans l Atlas
Bonjour,
J'ai inséré une table attributaire dans la mise en page d'un atlas.
Ma couche de couverture "enveloppe_urbaine"
Ma couche de données "Terrains densifiables"
Je souhaite faire apparaitre dans le tableau :
- 2 champs ("vocation" et "type")
- 3 données agrégées (surface, nombre de logements, nombre de terrains)
Ces trois données doivent correspondre au croisement des objets de ma table "Terrains densifiables" localisés à l’intérieur de l'entité courante de l'atlas
J'ai essayé plusieurs formules qui ne donnent pas les réponses que j'attends :
1/ avec la couche "Terrains densifiables" en sélectionnant les attributs suivants :
- champ "vocation"
- champ "densification"
- pour les données agrégées (prenons l'exemple du nombre de logements dont le champ se nomme Nbre_log) :
Code:
aggregate( layer:='ma_couche_Terrains densifiables_avec la suite de chiffres et lettes ', aggregate:='sum', expression:="Nbre_log", filter:=contains( @atlas_geometry,@geometry ))
- j'ai bien coché : "ne montrer que les entité intersectant l'entité atlas" et "supprimer les lignes en double de la table"
Les sommes des 3 colonnes ne correspondent pas à la somme des objets qui intersectent l'entité atlas, cf capture d'écran methode_1 : https://geoscope.fr/nextcloud/index.php … yddSejqzKx
2/ en ajoutant au filtre mes 2 champs pour que ne soient sommés que les objets qui répondent au 2 critères "
Code:
aggregate( layer:=Terrains_densifiables_1c5b1e2b_be89_44c0_979f_9ba22a8f3eff', aggregate:='sum', expression:="Nbre_log", filter:= "Vocation" || "Type" and contains( @atlas_geometry,@geometry ))
Cela ne marche pas non plus :-(
J'ai encore de gros progrès à faire pour écrire correctement des expressions... aussi, quelqu'un peut-il me dépatouiller ? (dire que c'est si facile à faire avec libre office et les tables dynamique!).
Merci.
Géoscope
Hors ligne
#2 Hier 01:16
- vxTedxv
- Participant occasionnel
- Date d'inscription: 26 Jan 2011
- Messages: 34
Re: QGIS: Tableau de synthese dans l Atlas
Dans votre première expression, ça ne distingue pas la densification. Quand il calcule votre aggrégation il trouve un résultat de 3 logements, tout confondu et applique la somme des superficies des terrains de ces 3 premiers logements : 4002,75 = 825,27+1369,84+1807,64
Dans votre 2e expression, la syntaxe du filtre parait incorrecte : le symbole || sert à concaténer du texte. Ex : 'pas' || 'bien' = 'pasbien'
Je ne suis pas certain mais je pense qu'il faut additionner deux formules "aggregate"
Espérant que ces éléments vous aideront.
Hors ligne
#3 Aujourd'hui 09:15
Re: QGIS: Tableau de synthese dans l Atlas
Bonjour,
Dans votre 2e expression, la syntaxe du filtre parait incorrecte : le symbole || sert à concaténer du texte. Ex : 'pas' || 'bien' = 'pasbien'
Je ne suis pas certain mais je pense qu'il faut additionner deux formules "aggregate"
Et comment on additionne ?
Je pense ne pas être loin, mais soit les sommes correspondent aux objets inclus dans l'emprise de l'entité atlas mais sans détailler par mon champ "Type" (et en ne prenant en compte que les objets qui ont le même nombre de logements (1))
Code:
aggregate(
layer:='macouche',
aggregate:='sum',
expression:="Nbre_log",
filter:= intersects( @atlas_geometry,@geometry ),
order_by:="Type"
)Soit la somme est bien détaillée en fonction de mon champ "Type" (mais en ne prenant toujours que les objecte qui ont 1 seul logement), mais prend tous les objets et pas seulement ceux inclus dans l'emprise de l'entité atlas malgré l'intégration de cette notion
Code:
aggregate(
'macouche',
'sum',
"Nbre_log",
"Type" = attribute(@parent, 'Type'),
intersects( @atlas_geometry,@geometry ) ,
order_by:="Type"
)Géoscope
Hors ligne
#4 Aujourd'hui 10:39
Re: QGIS: Tableau de synthese dans l Atlas
J'y suis arrivée :
Code:
layer:='ma_couche',
aggregate:='sum',
expression:="Nbre_log",
filter:= intersects( @atlas_geometry,@geometry )
and "Type" = attribute(@parent, 'Type'),
order_by:="Type"
)Maintenant, pour la somme des superficies, je voudrais seulement 2 chiffres après la virgule. Malgré l'utilisation de round, cela ne marche pas
Code:
aggregate(
layer:='ma_couche',
aggregate:='sum',
expression:=round($area/10000,2),
filter:= intersects( @atlas_geometry,@geometry )
and "Type" = attribute(@parent, 'Type'),
order_by:="Type"
)Géoscope
Hors ligne


