19.2.4. Étiquette

Les objets de type Étiquette vous permettent d’ajouter du texte à vos cartes et d’améliorer leur compréhension ; il peut s’agir du titre, de l’auteur, des sources des données ou toutes autres informations… Vous pouvez ajouter une étiquette avec l’outil label Ajouter une étiquette en suivant les instructions de création d’objets que vous pourrez ensuite manipuler comme expliqué dans Interaction avec les objets de la mise en page.

Par défaut, l’élément de label fournit un texte par défaut que vous pouvez personnaliser en utilisant son panneau Propriétés de l’élément. Outre le panneau items common properties, cette fonctionnalité possède les fonctionnalités suivantes (voir Fig. 19.24) :

../../../../_images/label_mainproperties.png

Fig. 19.24 Panneau Propriétés d’une étiquette

19.2.4.1. Propriétés principales

Le texte de l’étiquette est à renseigner dans la section Propriétés générales. Le texte peut être statique, dynamique à l’aide des fonctions d”expressions et de variables, et/ou formaté avec du HTML. Les parties dynamiques de l’étiquette doivent être placées entre [% et %] afin qu’elles puissent être interprétées et évaluées comme telles.

  • Pour utiliser les expressions dans les étiquettes, vous pouvez cliquer sur le bouton Insérer/Éditer une expression, rédiger votre formule comme d’habitude et valider la fenêtre; QGIS ajoutera automatiquement les caractères d’interprétation autour du texte saisi.

    Indication

    Cliquer sur Insérer/Éditer une expression lorsqu’aucun texte n’est sélectionné dans la zone de texte de l’étiquette rajoutera la nouvelle expression au texte existant. Si vous souhaitez modifier tout ou partie d’une expression déjà saisie, il faudra sélectionner la partie qui vous intéresse avant d’appuyer sur le bouton.

    Pour faciliter l’ajout de certaines informations régulièrement présentes sur les cartes (date, auteur, titre, numéro de page, …), QGIS fournit une liste d’expressions et variables correspondant à celles-ci. Pour rapidement les insérer dans votre mise en page, appuyez sur le bouton Texte dynamique et sélectionnez l’entrée de votre choix.

    Astuce

    Le menu Ajouter élément ► Ajouter du texte dynamique ► peut être utilisé pour créer une nouvelle étiquette, pré-remplie à l’aide d’une expression spécifique.

    Pour basculer l’étiquette dynamique en étiquette statique, appuyez sur la flèche de liste déroulante à côté du bouton Insérer/Éditer une expression… et sélectionnez Convertir en statique. Toutes les composantes dynamiques du contenu de l’étiquette seront évaluées et remplacées par leur valeur actuelle. Vous pouvez ensuite ajuster le texte en sortie, à votre guise.

  • Les étiquettes peuvent être interprétées comme du code HTML en cochant l’option checkbox Rendre comme du HTML. Vous pouvez alors insérer des tags ou styles HTML, des hyperliens, une image cliquable menant à une page web, ou d’autres choses plus complexes…

Le code suivant réalise un étiquetage avancé, combinant expressions et rendu HTML, afin de générer Fig. 19.25 :

<html>
 <head>
   <style>
      /* Define some custom styles, with attribute-based size */
      name {color:red; font-size: [% ID %]px; font-family: Verdana; text-shadow: grey 1px 0 10px;}
      use {color:blue;}
   </style>
 </head>

 <body>
   <!-- Information to display -->
   <u>Feature Information</u>
   <ul style="list-style-type:disc">
     <li>Feature Id: [% ID %]</li>
     <li>Airport: <name>[% NAME %]</name></li>
     <li>Main use: <use>[% USE %]</use></li>
   </ul>
   Last check: [% concat( format_date( "control_date", 'yyyy-MM-dd'), ' by <b><i>', @user_full_name, '</i></b>' ) %]

   <!-- Insert an image -->
   <p align=center><img src="path/to/logos/qgis-logo-made-with-color.svg" alt="QGIS icon" style="width:80px;height:50px;"</p>
 </body>
</html>
../../../../_images/label_htmlexpression.png

Fig. 19.25 Réaliser une étiquette avec du style HTML

19.2.4.2. Apparence

  • Définissez la Police en cliquant sur le bouton Police… ou une Couleur de police en sélectionnant une couleur via l”outil de sélection de couleur.

  • Vous pouvez spécifier des marges horizontales et verticales différentes, en mm. Il s’agit de la marge à partir des bords de l’objet étiquette. Le texte peut être positionné en dehors de ses limites par exemple lors d’un alignement avec d’autres objets. Dans ce cas, utilisez des valeurs négatives pour les marges.

  • Utiliser les paramètres d’alignement est une autre façon de positionner votre étiquette. Il est possible de le faire de différentes manières :

    • Gauche, Centré, Droite ou Justifié pour l”Alignement horizontal

    • et Haut, Centré, Bas pour l”Alignement vertical.

19.2.4.3. Explorer les expressions dans un objet Étiquette

Voici quelques exemples d’expressions que vous pouvez utiliser pour ajouter des informations intéressantes à vos objets étiquette - rappelez-vous que le code, ou du moins la partie interprétée, doit être encadrée par [% et %] dans les Propriétés principales :

  • Afficher un titre avec la valeur de l’attribut « field1 » de l’entité d’atlas en cours :

    'This is the map for ' || "field1"
    

    ou, écrit dans la section des Propriétés principales :

    This is the map for [% "field1" %]
    
  • Ajouter une pagination pour l’entité d’atlas (par exemple, Page 1/10) :

    concat( 'Page ', @atlas_featurenumber, '/', @atlas_totalfeatures )
    
  • Renvoyer le nom des aéroports de la région actuelle de l’atlas, en fonction de leurs attributs communs :

    aggregate( layer := 'airports',
               aggregate := 'concatenate',
               expression := "NAME",
               filter := fk_regionId = attribute( @atlas_feature, 'ID' ),
               concatenator := ', '
             )
    

    Ou, si une relation attributaire est définie :

    relation_aggregate( relation := 'airports_in_region_relation',
                        aggregate := 'concatenate',
                        expression := "NAME",
                        concatenator := ', '
                      )
    
  • Renvoyer le nom des aéroports contenus dans l’entité actuelle de la région de l’atlas, en fonction de leur relation spatiale :

    aggregate( layer := 'airports',
               aggregate := 'concatenate',
               expression := "NAME",
               filter := contains( geometry( @parent ), $geometry ),
               concatenator := ', '
             )
    

    OU:

    array_to_string( array:= overlay_contains( layer := 'airports',
                                               expression := "NAME" ),
                     delimiter:= ', '
                   )
    
  • Afficher la coordonnée X inférieure de l’emprise de l’objet carte Map 1 :

    x_min( map_get( item_variables( 'Map 1' ), 'map_extent' ) )
    
  • Renvoyer les noms des couches actuelles de l’objet carte Map 1 et les afficher un par ligne :

    array_to_string(
     array_foreach(
      map_get( item_variables( 'Map 1' ), 'map_layers' ), -- retrieve the layers list
      layer_property( @element, 'name' ) -- retrieve each layer name
     ),
     '\n' -- converts the list to string separated by breaklines
    )
    
  • Afficher la liste des couches avec leur licence associée (droits d’usage) dans l’élément carte Map 1 de la mise en page. Il faudrait au préalable avoir renseigné les métadonnées d’accès dans les propriétés des couches.

    array_to_string( map_credits( 'Map 1', true ) )