21.2.4. Het item Label

Het item Label is een gereedschap dat helpt bij het decoreren van uw kaart met teksten die zouden kunnen helpen hem beter te begrijpen; het kan de titel, auteur, gegevensbron of enige andere informatie zijn. U kunt een label toevoegen met het gereedschap label Label toevoegen door de instructies voor het maken van items te volgen en het op dezelfde manier te bewerken als is besproken in Werken met items voor lay-out.

Standaard verschaft het item Label een standaard tekst die u kunt aanpassen met behulp van zijn paneel Item-eigenschappen. Naast de algemene eigenschappen voor items, heeft dit object de volgende functionaliteiten (zie Fig. 21.24):

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

Fig. 21.24 Paneel Label Item-eigenschappen

21.2.4.1. Algemene eigenschappen

De groep Algemene eigenschappen is de plaats om de tekst van het label op te geven. De tekst kan statisch, dynamisch met expressie-functies en variabelen zijn, en/of opgemaakt met HTML. Dynamische delen van een label moeten worden omsloten door [% en %] om als zodanig geïnterpreteerd en geëvalueerd te kunnen worden.

  • U kunt, om expressies in labels te gebruiken, klikken op de knop Een expressie invoegen of bewerken…, schrijf uw formule zoals gewoonlijk en als het dialoogvenster wordt toegepast, voegt QGIS automatisch de omsluitende tekens toe.

    Hint

    Klikken op de knop Een expressie invoegen of bewerken… als geen selectie is gemaakt in het tekstvak zal de nieuwe expressie toevoegen aan de bestaande tekst. Wanneer u een bestaande expressie wilt aanpassen, moet u eerst het betreffende deel selecteren.

    Omdat kaarten gewoonlijk zijn gevuld met enige veel voorkomende tekstinformatie (datum, auteur, titel, paginanummer, …), verschaft QGIS een directe toegang tot de overeenkomende expressies of variabelen: druk op de knop Dynamische tekst om ze te selecteren en in te voegen in uw label.

    Tip

    Het bovenste menu Item toevoegen ► Dynamische tekst toevoegen ► kan worden gebruikt om een nieuw item label te maken dat is gevuld met de geselecteerde vooraf gedefinieerde expressie.

    Het is mogelijk om van een dynamisch label een statisch te maken: druk op het keuzepijltje naast de knop Een expressie invoegen of bewerken… en selecteer Naar statische tekst converteren. Alle dynamische delen van de inhoud van het label zullen worden geëvalueerd en vervangen door hun huidige waarden. U kunt dan handmatig de resulterende tekst bewerken als dat nodig is.

  • Labels kunnen worden geïnterpreteerd als HTML-code: selecteer checkbox Renderen als HTML. U kunt nu HTML-tags of stijlen invoegen, URL, een aan te klikken afbeelding die linkt naar een webpagina, of iets complexer…

De volgende code combineert het renderen als HTML met expressies, voor een geavanceerd labelen en zal Fig. 21.25 uitvoeren:

<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. 21.25 Niveau van een label opwaarderen met opmaak in HTML

21.2.4.2. Uiterlijk

  • Definieer lettertype en stijl van de tekst door te klikken op de knop Lettertype. In het menu Label lettertype kunt u enkele opties gebruiken voor Labeltekst opmaken.

  • U kunt de verschillende horizontale en verticale marges specificeren in mm. Dat is de marge vanaf de rand van het item van afdruklay-out. Het label kan worden geplaatst buiten de begrenzingen van het label, bijv. om items label uit te lijnen met andere items. In dat geval dient u negatieve waarden voor de marge te gebruiken.

  • Gebruiken van uitlijning is een andere manier om uw label te plaatsen. Het kan zijn:

    • Links, Centreren, Rechts of Uitvullen voor Horizontale uitlijning

    • en Boven, Centraal midden, Onder voor Verticale uitlijning.

21.2.4.3. Expressies verkennen in een item Label

Hieronder staan enkele voorbeelden van expressies die u kunt gebruiken om het label te vullen met interessante informatie - onthoud dat de code, of ten minste het berekende gedeelte, zou moeten zijn omsloten door [% en %] in de groep Algemene eigenschappen:

  • Een titel weergeven met de huidige waarde van “field1” van het huidige object van Atlas:

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

    of, zoals geschreven in het gedeelte Algemene eigenschappen:

    This is the map for [% "field1" %]
    
  • Paginanummering toevoegen voor verwerkte objecten van Atlas (bijv, Pagina 1/10):

    concat( 'Page ', @atlas_featurenumber, '/', @atlas_totalfeatures )
    
  • Geef de naam terug van de airports van het huidige object region van atlas, gebaseerd op hun gemeenschappelijke attributen:

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

    Of, indien een attributenrelatie is ingesteld:

    relation_aggregate( relation := 'airports_in_region_relation',
                        aggregate := 'concatenate',
                        expression := "NAME",
                        concatenator := ', '
                      )
    
  • Geef de naam terug van de airports van het huidige object region van atlas, gebaseerd op hun ruimtelijke relatie:

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

    OF:

    array_to_string( array:= overlay_contains( layer := 'airports',
                                               expression := "NAME" ),
                     delimiter:= ', '
                   )
    
  • Geef de laagste X-coördinaat terug van het bereik van het item Kaart 1:

    x_min( map_get( item_variables( 'Map 1' ), 'map_extent' ) )
    
  • Haal de namen op van de lagen in de huidige lay-out van het item Kaart 1, en maak die op met één naam per regel:

    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
    )
    
  • De lijst van lagen met hun tekenreeksen voor licentie weergeven (gebruiksrechten) in een item voor lay-out Kaart 1. U moet eerst de eigenschappen van de laag Toegang metadata vullen.

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