18.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. 18.23) :

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

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

18.2.4.1. Propriétés principales

Les Propriétés principales permettent de modifier le texte (il peut s’agir d’HTML) ou l’expression qui génère l’étiquette. Les expressions sont encadrées par [% et %] de manière à ce qu’elles soient interprétées.

  • Le texte saisi peut être interprété comme du code HTML si vous cochez la case checkbox Afficher en HTML. Vous pouvez ainsi insérer une URL, une image cliquable qui renvoie à une page web ou tout autre code plus complexe.

  • Vous pouvez aussi utiliser le bouton expressions : cliquez sur Insérer ou Editer une expression…, écrivez votre formule comme d’habitude et lorsque le dialogue est appliqué, QGIS ajoute automatiquement les caractères environnants.

Note

En cliquant sur le bouton Insérer ou éditer une expression… lorsqu’aucune sélection n’est faite dans la zone de texte, la nouvelle expression sera ajoutée au texte existant. Si vous souhaitez mettre à jour un texte existant, vous devez au préalable sélectionner la partie qui vous intéresse.

Vous pouvez combiner un rendu HTML avec des expressions et obtenir des étiquettes avancées. Le code suivant donnera l’image Fig. 18.24 :

<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. 18.24 Réaliser une étiquette avec du style HTML

18.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.

18.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 )
    
  • Renvoyez 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
    )