19.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 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. 19.24):
19.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
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 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. 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>
19.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.
19.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 )
Display the list of layers with their license strings (usage rights) in a layout
Map 1
item. You need to fill the layers” Access metadata properties first.array_to_string( map_credits( 'Map 1', true ) )