21.2.4. L’Oggetto Etichetta

L’oggetto Etichetta è uno strumento per decorare la mappa con testi che aiutano a comprenderla; può essere il titolo, l’autore, le fonti dati o qualsiasi altra informazione….. Puoi aggiungere un’etichetta con lo strumento label Aggiungi Etichetta seguendo items creation instructions e manipolarla come esposto in Interagire con gli oggetti del layout.

Per impostazione predefinita, l’oggetto etichetta fornisce un testo predefinito che si può personalizzare usando il suo pannello Proprietà dell’oggetto. Oltre alle items common properties, questa opzione ha le seguenti funzionalità (vedi Fig. 21.24):

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

Fig. 21.24 Pannello Proprietà Oggetto Etichetta

21.2.4.1. Proprietà principali

Il gruppo Proprietà Principali è il posto dove specificare il testo dell’etichetta. Il testo può essere statico, dinamico con funzioni e variabili expression, e/o formattato con HTML. Le parti dinamiche di un’etichetta devono essere circondate da [% e %] per essere interpretate e valutate come tali.

  • Per usare le espressioni nelle etichette, puoi cliccare sul pulsante Inserisci/Modifica Espressione…, scrivere la tua formula come al solito e quando la finestra di dialogo viene applicata, QGIS aggiunge automaticamente i caratteri corrispondenti.

    Suggerimento

    Facendo clic sul pulsante Inserisci/Modifica Espressione… se non è stata fatta alcuna selezione nella casella di testo, la nuova espressione verrà aggiunta al testo esistente. Se vuoi modificare un’espressione esistente, devi prima selezionare la parte di interesse.

    Poiché le mappe sono di solito riempite con alcune informazioni testuali comuni (data, autore, titolo, numero di pagina, …), QGIS fornisce un accesso diretto alle espressioni o variabili corrispondenti: premi il pulsante Testo Dinamico per selezionarle e inserirle nella tua etichetta.

    Suggerimento

    Il menu superiore Aggiungi Oggetto ► Aggiungi Testo Dinamico ► può essere usato per creare un nuovo oggetto etichetta riempito con l’espressione predefinita selezionata.

    È possibile trasformare un’etichetta dinamica in statica: premi la freccia a discesa accanto al pulsante Inserisci/Modifica Espressione… e seleziona Converti in Testo Statico. Tutte le parti dinamiche del contenuto dell’etichetta saranno valutate e sostituite con i loro valori attuali. Puoi quindi modificare manualmente il testo risultante quando necessario.

  • Le etichette possono essere interpretate come codice HTML: seleziona checkbox Visualizza come HTML. Ora puoi inserire tag o stili HTML, URL, un’immagine cliccabile che rimanda a una pagina web, o qualcosa di più complesso…

Il codice seguente combina la restituzione dell’HTML con le espressioni, per un’etichettatura avanzata e produrrà Fig. 21.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. 21.25 Applicare un’etichetta con lo stile HTML

21.2.4.2. Aspetto

  • Definisci il carattere e lo stile del testo facendo clic sul pulsante Carattere. Nel menu Carattere dell’etichetta puoi utilizzare alcune delle opzioni per Formatting the label text.

  • Puoi specificare diversi margini orizzontali e verticali in mm. Questo è il margine dal bordo dell’oggetto dal layout. L’etichetta può essere posizionata al di fuori dei limiti dell’etichetta, ad esempio per allineare gli elementi dell’etichetta con altri elementi. In questo caso è necessario utilizzare valori negativi per il margine.

  • Utilizzare l’allineamento del testo è un altro modo per posizionare la tua etichetta. Può essere:

    • Sinistra, Centro, Destra o Giustifica per Allineamento orizzontale.

    • e In alto, Al centro, In basso per Allineamento verticale.

21.2.4.3. Usare le espressioni in un oggetto etichetta

Di seguito alcuni esempi di espressioni che puoi usare per popolare l’oggetto etichetta con informazioni interessanti - ricordati che il codice, o almeno la parte calcolata, dovrebbe essere circondato da [% e %] nel riquadro Proprietà Principali:

  • Visualizza un titolo con il valore corrente dell’elemento dell’atlante in «field1»:

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

    o, scritto nella sezione Proprietà Principali

    This is the map for [% "field1" %]
    
  • Aggiunge una paginazione per l’elemento dell’atlante in realizzazione (ad esempio, Page 1/10):

    concat( 'Page ', @atlas_featurenumber, '/', @atlas_totalfeatures )
    
  • Restituisce il nome degli aeroporti dell’attuale elemento region dell’atlante, in base ai loro attributi comuni:

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

    Oppure, se è impostata una relazione attributes:

    relation_aggregate( relation := 'airports_in_region_relation',
                        aggregate := 'concatenate',
                        expression := "NAME",
                        concatenator := ', '
                      )
    
  • Restituisce il nome degli aeroporti contenuti nell’attuale elemento region dell’atlante, in base alla loro relazione spaziale:

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

    OPPURE:

    array_to_string( array:= overlay_contains( layer := 'airports',
                                               expression := "NAME" ),
                     delimiter:= ', '
                   )
    
  • Restituisce la coordinata X inferiore dell’estensione dell’oggetto Mappa 1:

    x_min( map_get( item_variables( 'Map 1' ), 'map_extent' ) )
    
  • Recupera i nomi dei layer nell’oggetto Mappa 1 del layout corrente e forma un nome per riga:

    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
    )
    
  • Visualizza l’elenco dei layer con le relative stringhe di licenza (diritti di utilizzo) in un elemento del layout Map 1. È necessario riempire prima le proprietà Access metadata dei layer.

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