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

GEODATA DAYS 2024

#1 Sun 07 May 2023 18:46

Yunali
Participant occasionnel
Date d'inscription: 24 Mar 2020
Messages: 34

QGIS/Atlas: Ajouter grand texte mise en page

Bonjour,

Je réalise un atlas de plus de 100 pages sur QGIS 3.28.
J'aimerais intégrer à chaque page un texte lié à la carte (changeant donc à chaque nouvelle page de l'atlas).
Il s'agit de textes descriptifs de plusieurs lignes (environ 1400 caractères max).

Je cherche comment intégrer ces textes de manière automatique à l'atlas.

J'ai tenté 2 options qui ne sont pas concluantes :

Option 1 : intégrer ces textes dans la table attributaire de la couche de couverture de l'atlas, puis ajouter une zone de texte sur la mise en page et la remplir via une expression, en indiquant le champ qui contient le texte. Malheureusement le texte est tronqué dès les premières phrases et n'apparait pas en entier, alors qu'il apparaissait bien en entier dans la cellule de la table attributaire (en créant le champ, j'ai indiqué une longueur de 1400 caractères).

Option 2 : insérer la table attributaire de la couche dans la mise en page. Cette fois-ci ça marche, le texte n'est pas tronqué, mais le tableau est trop grand car il attend, au mieux, la fin d'une phrase pour passer à la ligne, et impossible de le redimensionner. Le tableau a le temps de sortir 3 fois de la page. Il faudrait l'équivalent du paramètre "renvoyer automatiquement à la ligne" d'Excel, pour dimensionner le tableau comme souhaité puis que QGIS adapte le texte en fonction, et non l'inverse.

J'ai donc écarté ces 2 options.

Connaitriez-vous d'autres solutions pour afficher ces grands textes dynamiques dans l'atlas ?

Merci par avance !

Hors ligne

 

#2 Mon 08 May 2023 10:21

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

Re: QGIS/Atlas: Ajouter grand texte mise en page

Bonjour,

Option 1


Votre zone de texte est-elle suffisamment grande pour accueillir tout le texte?

Option 2


Avez-vous joué avec les paramètres d'apparence de l'objet table, et notamment la dernière ?

Hors ligne

 

#3 Mon 08 May 2023 10:39

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 412

Re: QGIS/Atlas: Ajouter grand texte mise en page

Bonjour,

L'option 1 semble bien fonctionner pour moi.
Vous utilisez quel format de fichier ? J'ai testé avec un geopackage.

Cependant, j'ai le souci du retour à la ligne que vous indiquez.
Pour le régler j'ai utilisé la fonction wordwrap() qui permet de découper une chaîne de caractère avec des retours à la ligne selon une longueur max ou min par ligne.
Il faut que les mots de la chaîne de caractères ne soient pas plus longs que la longueur max de la ligne, sinon le mot ne sera pas affiché en entier si votre zone de texte est ajustée à la longueur max indiquée.

edit : j'ai réussi dans une zone de texte à pouvoir découper les mots trop longs à la longueur max souhaitée, à l'aide de l'expression suivante :

Code:

--variable pour définir la longueur max souhaitées
with_variable('longueur',70,
    -- découpe à la longueur max
    wordwrap(
         -- concaténation des élements de l'array dans une string avec une espace en séparation
         array_to_string(
             -- arry pour chaque mot du champ "texte"
             array_foreach(
                string_to_array( "texte",' '),
                -- si le mot a une longueur inférieure ou égale à la longueur souhaitée
                if( length(@element)<=@longueur,
                    -- on conserve la chaine
                    @element,
                    -- sinon on découpe en chaines de x car séparées par une espace
                    array_to_string(
                        -- utilisation d'une variable car on imbrique deux array_foreach donc @element ne peut pas faire appel à la valeur du premier array_foreach. On prend donc sa valeur dans la variable t
                        with_variable('t',@element,
                            -- pour chaque mot plus long que la longueur max
                            array_foreach(
                                -- on le découpe en autant de chaines que nécessaire de longueur max
                                generate_series(1, ceil(length(@t)/@longueur)), 
                                substr(@t, (@element - 1) * @longueur + 1, @longueur)
                            )
                        ),
                        ' '
                    )
                )
            ),
            ' '
        ),
    @longueur
    )
)

Dernière modification par p.jeremie (Mon 08 May 2023 11:08)

Hors ligne

 

#4 Tue 09 May 2023 12:09

Yunali
Participant occasionnel
Date d'inscription: 24 Mar 2020
Messages: 34

Re: QGIS/Atlas: Ajouter grand texte mise en page

Bonjour,

Merci pour vos retours rapides !

Santanna : non pas de soucis de taille de zone de texte, (je l'avais justement étendue de manière exagérée pour être sûre que ce ne soit pas ça).
Pour les options de la table attributaire, oui j'ai testé les différentes options. ("Activer le retour à la ligne après" ne convient pas car il faudrait que je retravaille chacun de mes 40 textes ; et j'ai testé les 2 options du paramètres "texte trop grand" mais rien n'a bougé...).

Jeremie : je viens de tester avec un geopackage, et ça marche ! (J'ai réexporté mon fichier d'origine qui était un shapefile, c'est bien le shp qui a du coincer).
Et du coup pas de problème de retour à la ligne, c'était avec la table attributaire que ça me posait soucis.

Ouf, un grand merci !

Hors ligne

 

#5 Tue 09 May 2023 13:07

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Re: QGIS/Atlas: Ajouter grand texte mise en page

coucou

le shp à une limite de 250 caractères !!!!!

Vincent

Hors ligne

 

Pied de page des forums

Powered by FluxBB