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

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

Fig. 18.23 Pannello Proprietà Oggetto Etichetta

18.2.4.1. Proprietà principali

Il gruppo Proprietà Principali è il luogo dove fornire il testo (può essere in HTML) o l’espressione per costruire l’etichetta. Le espressioni devono essere circondate da [% e %] per essere interpretate come tali.

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

  • Puoi anche usare espressioni: clicca sul pulsante :guilabel: Inserisci o Modifica un’Espressione…, scrivi la tua formula come al solito e quando la finestra di dialogo viene applicata, QGIS aggiunge automaticamente i caratteri rimanenti.

Nota

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

Puoi combinare la visualizzazione come HTML con le espressioni, portando a un’etichettatura avanzata. Il seguente codice avrà come risultato 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 Applicare un’etichetta con lo stile HTML

18.2.4.2. Aspetto

  • Definisci il Carattere cliccando sul pulsante Carattere o un Colore carattere spingendo il pulsante color widget

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

18.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 nella atuale 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
    )