Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#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

smilounet
Participant occasionnel
Date d'inscription: 7 Feb 2018
Messages: 17
Site web

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: 3799

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

 

Pied de page des forums

Powered by FluxBB