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 21 October 2021 16:12

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1620

QGIS: calcul de surface sur 2 mises en page

Bonjour,

J'effectue un atlas sur deux mises en page en A3. Lorsque je veux calculer automatiquement la surface à imprimer, cela ne me calcule que la surface de la première mise en page, en fait là où se situe le calcul.
Voici l'expression :

[%'Surface :' || ' ' ||  replace( format_number( (@layout_pagewidth/1000),3),',','.')    ||'*' || (@layout_pageheight/1000) || '=' || replace( format_number( ((@layout_pagewidth  *  @layout_pageheight)/1000000),2),',','.') || '' || 'm²'%]


ce qui donne : Surface : 0.42*0.297=0.12m²

Or je voudrais que cela me calcule la surface des deux A3, ce qui doit faire 0.24 ou 0.25m².
Je précise que la surface du premier A3 est constante.
Comment faire à parvenir à ce résultat?
Merci.

Hors ligne

 

#2 Thu 21 October 2021 19:19

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3799

Re: QGIS: calcul de surface sur 2 mises en page

Bonjour,

ce qui donne : Surface : 0.42*0.297=0.12m²

Or je voudrais que cela me calcule la surface des deux A3, ce qui doit faire 0.24 ou 0.25m².
J


Je passe peut-être à côté d'une info capitale mais deux pages en A3. La surface imprimée ne serait-elle toujours pas 2 fois une page en A3? Le format du papier ne change pas donc pourquoi les surfaces varieraient? Et comme vous connaissez déjà le résultat attendu, je peine à comprendre pourquoi vous voulez la calculer.

Pour ce qui est de la formule, notez que layout_pagewidth et layout_pageheight renvoient les dimensions de la page en cours (cf docs) donc normal qu'une seule page soit prise en compte. Il y a bien layout_numpages qui renvoie le nombre de pages dans la mise en page, mais de toute manière, il est aussi connu dans ce cas-ci (2).

Hors ligne

 

#3 Thu 21 October 2021 20:20

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1620

Re: QGIS: calcul de surface sur 2 mises en page

Santanna

Et comme vous connaissez déjà le résultat attendu, je peine à comprendre pourquoi vous voulez la calculer.


Le 1er A3 est constant, le 2ème aussi, mais il peut y avoir un 3ème, un 4ème, un 5ème A3...

Hors ligne

 

#4 Thu 21 October 2021 21:47

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3799

Re: QGIS: calcul de surface sur 2 mises en page

mais il peut y avoir un 3ème, un 4ème, un 5ème A3...


Je me disais bien qu'il manquait une info. layout_numpages devrait donc aider.

Hors ligne

 

#5 Fri 22 October 2021 10:16

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1620

Re: QGIS: calcul de surface sur 2 mises en page

C'est bon Santanna, voici l'expression :

[%'Surface :' || ' ' ||  replace( format_number( (@layout_numpages*@layout_pagewidth/1000),3),',','.')    ||'*' || (@layout_numpages*@layout_pageheight/1000) || '=' || replace( format_number( ((@layout_numpages*@layout_pagewidth  *  @layout_pageheight)/1000000),2),',','.') || '' || 'm²'%]


Merci.

Hors ligne

 

#6 Fri 22 October 2021 10:32

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1620

Re: QGIS: calcul de surface sur 2 mises en page

Ce qui donne pour 2 A3 :

Surface : 0.840*0.594= 0.25m²

Hors ligne

 

#7 Fri 22 October 2021 10:51

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3799

Re: QGIS: calcul de surface sur 2 mises en page

De rien, mais je pense qu'il y a une erreur dans votre formule: vous multipliez deux fois par le nombre de pages soit nbpages*largeur*nbpages*hauteur au lieu de faire nbpages*largeur*hauteur (qui est la bonne formule utilisée côté résultat).
En outre, je pense que vous pouvez grandement simplifier la formule et la rendre facile à lire:
- vous n'avez pas besoin de concaténer deux strings, vous les écrivez collés, soit 'Surface : ' || replace(... Pareil avant le m2
- vous n'avez pas besoin du replace, format_number fait largement le job de conversion de la virgule en point si on lui dit d'utiliser une langue compatible, genre: format_number(maformuleàcalculer, 3, 'en')

Hors ligne

 

#8 Fri 22 October 2021 11:54

conejo
Participant assidu
Lieu: Lunel
Date d'inscription: 2 Dec 2005
Messages: 1620

Re: QGIS: calcul de surface sur 2 mises en page

Santanna, je n'ai pas mieux que ça

'Surface :' || ' ' || format_number( (@layout_numpages*@layout_pagewidth/1000),3,'en')  || '*'  || format_number((@layout_numpages*@layout_pageheight/1000),3,'en') || '=' || format_number (((@layout_numpages*@layout_pagewidth * @layout_pageheight)/1000000),2,'en') || '' || 'm²'


mais je pense qu'il y a une erreur dans votre formule


Avec ma formule le résultat pour 2 A3 est pourtant bien de 0.25m².

Hors ligne

 

#9 Fri 22 October 2021 12:24

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3799

Re: QGIS: calcul de surface sur 2 mises en page

En réalité, votre formule ne calcule pas tout; elle affiche. Vous indiquez les éléments à afficher de part et d'autre du '=' mais si vous prenez votre calculatrice et faites 0.84*0,594, je peux vous assurer que vous ne tombez pas sur 0.25. Et oui, 0.25 est bien le résultat de 2 A3.
Avec moins de parenthèses et sur plusieurs lignes

Code:

'Surface : ' ||
 format_number(@layout_pagewidth/1000, 3, 'en') || '*'  || -- le layout_numpages ici était de trop
 format_number(@layout_numpages * @layout_pageheight/1000, 3, 'en') || '=' ||
 format_number(@layout_numpages * @layout_pagewidth * @layout_pageheight)/1000000, 2, 'en') || 'm²' -- un layout_numpages, qu'on ne retrouve, à juste titre, pas ici, d'où le bon résultat

Hors ligne

 

Pied de page des forums

Powered by FluxBB