In questo breve blog post vedremo come realizzare delle etichette che si ispirano ai fumetti, con nuvoletta e linea di richiamo.
L’idea mi è stata suggerita da un utente di questo blog, Alberto Grava (grazie mille) e a fine post metterò una sua soluzione usando solo le espressioni di QGIS.
Nello screenshot di sopra ho semplicemente tematizzato tramite categorie e usato gli stessi colori per la nuvoletta tramite la variabile @symbol_color.
Step 1 : categorizzo

per categorizzare utilizzo l’attributo DEN_REG.
Step 2 : etichetto

per etichettare utilizzo l’attributo DEN_REG.
Step 3 : sfondo all’etichetta

usando la variabile @symbol_color.
Step 4 : linee di richiamo
come linea di richiamo utilizzo la freccia modificata.
Infine, per spostare la posizione delle etichette, basta selezionare lo strumento Muovi della barra delle etichette e selezionare un campo Univoco della tabella attributi (necessario per i dati ausiliari).

inoltre è possibile ‘giocare con i punti di ancoraggio:

Usando solo le espressioni nel Geometry Generator:
CASE
WHEN with_variable('orientation', degrees(azimuth(centroid($geometry), make_point( "auxiliary_storage_labeling_positionx" ,
"auxiliary_storage_labeling_positiony" ))), (@orientation >= 0 and @orientation < 45) or (@orientation >=315))
THEN
make_triangle( centroid($geometry), make_point( "auxiliary_storage_labeling_positionx" - (@map_scale * 2/1500) ,
"auxiliary_storage_labeling_positiony" ),
make_point( "auxiliary_storage_labeling_positionx" + (@map_scale * 2/1500) ,
"auxiliary_storage_labeling_positiony")
)
WHEN with_variable('orientation', degrees(azimuth(centroid($geometry), make_point( "auxiliary_storage_labeling_positionx" ,
"auxiliary_storage_labeling_positiony" ))), @orientation >= 45 and @orientation < 135)
THEN
make_triangle( centroid($geometry), make_point( "auxiliary_storage_labeling_positionx" ,
"auxiliary_storage_labeling_positiony" - (@map_scale * 1/1500) ),
make_point( "auxiliary_storage_labeling_positionx" ,
"auxiliary_storage_labeling_positiony" + (@map_scale * 1/1500))
)
WHEN with_variable('orientation', degrees(azimuth(centroid($geometry), make_point( "auxiliary_storage_labeling_positionx" ,
"auxiliary_storage_labeling_positiony" ))), @orientation >= 135 and @orientation < 225)
THEN
make_triangle( centroid($geometry), make_point( "auxiliary_storage_labeling_positionx" - (@map_scale * 2/1500),
"auxiliary_storage_labeling_positiony" ),
make_point( "auxiliary_storage_labeling_positionx" + (@map_scale * 2/1500) ,
"auxiliary_storage_labeling_positiony")
)
WHEN with_variable('orientation', degrees(azimuth(centroid($geometry), make_point( "auxiliary_storage_labeling_positionx" ,
"auxiliary_storage_labeling_positiony" ))), @orientation >= 225 and @orientation < 315)
THEN
make_triangle( centroid($geometry), make_point( "auxiliary_storage_labeling_positionx" ,
"auxiliary_storage_labeling_positiony" - (@map_scale * 1/1500) ),
make_point( "auxiliary_storage_labeling_positionx",
"auxiliary_storage_labeling_positiony" + (@map_scale * 1/1500))
)
END
crea solo la linea di richiamo.
Ringraziamenti:
- Alberto Grava
- Amedeo Fadini
Riferimenti
- QGIS : https://qgis.org/it/site/
- QGIS.it : http://qgis.it/
Se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!
la mia (e di amedeo) soluzione appare molto come: complicazione affari semplici 🙂
ma quando è stata pensata è apparsa come l’unica soluzione…non ci sarei mai arrivato allo stile freccia del callout. Grande Salvatore! grazie!
"Mi piace"Piace a 1 persona
Secondo me l’espressione è molto interessante, forse non sarà usata in questo caso ma dimostra come è possibile utilizzare, con ingegno, le espressioni di QGIS.
Nuovamente grazie.
"Mi piace""Mi piace"