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 2026

Suivez en direct les table-ronde et conférences !

#1 Tue 24 March 2026 16:59

Elise
Participant assidu
Lieu: Argentat (19)
Date d'inscription: 16 Oct 2005
Messages: 616
Site web

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

Elise
Participant assidu
Lieu: Argentat (19)
Date d'inscription: 16 Oct 2005
Messages: 616
Site web

Re: QGIS: Tableau de synthese dans l Atlas

Bonjour,

vxTedxv a écrit:

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

Elise
Participant assidu
Lieu: Argentat (19)
Date d'inscription: 16 Oct 2005
Messages: 616
Site web

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

 

Pied de page des forums

Copyright Association GeoRezo