QGIS e le etichette a fumetto

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


Se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!

SE IL POST VI È STATO UTILE CONTRIBUITE A MANTENERLO AGGIORNATO PAYPAL


2 pensieri su “QGIS e le etichette a fumetto

  1. 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!

    Piace a 1 persona

    1. 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"

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.