#1 Thu 22 March 2018 20:01
- cyne
- Juste Inscrit !
- Date d'inscription: 30 Jan 2014
- Messages: 6
QGIS: affichage surface totale dans mise en page
Bonjour,
Je souhaite afficher la surface totale en ha de plusieurs polygones constituant un territoire dans une mise en page.
lorsque je tente d'insérer l'expression sum (surface-calcul) dans le champ texte de la mise en page je vois mon expression mais pas mon résultat en ha alors qu'il s'affiche bien dans l'aperçu...
auriez-vous une idée pour résoudre mon problème ?
merci de votre aide
Hors ligne
#2 Fri 23 March 2018 09:47
Re: QGIS: affichage surface totale dans mise en page
Bonjour,
Une solution possible (il y a peu être plus facile/rapide) :
1- Tu utilises GroupStat pour produire la somme des surfaces de l'ensemble de tes polygones.
2- enregistrer le résultat dans un fichier CSV (menu Data>Save All to CSV File)
3- ajouter ce CSV dans le projet (ajouter couche de texte délimité, sans géométrie)
4- Dans le composeur, ajouter une table d'attribut (la table d'attribut du fichier CSV créé contenant la superficie totale des polygones).
Bonne journée
Hors ligne
#3 Fri 23 March 2018 11:55
- cyne
- Juste Inscrit !
- Date d'inscription: 30 Jan 2014
- Messages: 6
Re: QGIS: affichage surface totale dans mise en page
une solution a été trouvée en insérant une fonction
Code:
S. totale calculée: [% round(sommechamps('territoire','surface_calcule'),2)%] ha
Voici la fonction
Code:
from qgis.core import * from qgis.gui import * @qgsfunction(args='auto', group='Custom') def sommechamps(layername, fieldname, feature, parent): layer = QgsMapLayerRegistry.instance().mapLayersByName(layername)[0] return sum(feature[fieldname] for feature in layer.getFeatures())
Merci de votre aide
Dernière modification par cyne (Fri 23 March 2018 12:41)
Hors ligne
#4 Fri 23 March 2018 12:35
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3947
Re: QGIS: affichage surface totale dans mise en page
Bonjour,
Serait-il possible que vous partagiez aussi la fonction? ça aiderait, je pense, les autres à ne pas la recréer ou se demander pourquoi l'expression ne marche pas.
Cela dit, les fonctions d'agrégat par défaut de QGIS >=2.16 font aussi l'affaire:
Code:
aggregate('macouche', 'sum', "monchamp")
Hors ligne
#5 Mon 26 March 2018 07:07
- John85
- Participant occasionnel
- Date d'inscription: 30 Jun 2017
- Messages: 11
Re: QGIS: affichage surface totale dans mise en page
Bonsoir,
beaucoup plus simple que d'insérer le code python :
round(aggregate('macouche', 'sum', "monchamp"),2)
Cordialement
Hors ligne