#1 Thu 21 October 2021 16:12
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1670
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: 3947
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: 1670
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: 3947
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: 1670
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: 1670
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: 3947
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: 1670
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: 3947
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