Come realizzare patch Legend per QGIS 3.14

In QGIS 3.14 ci saranno tonnellate di nuove feature, tra queste le Legend Patch shapes ovvero delle forme personalizzate dei simboli da utilizzare come oggetti nelle legende.

In questo blog post vedremo come realizzare le 20 regioni italiane e utilizzarle come oggetti per la legenda.

Questi oggetti, per essere utilizzati e creati a partire da QGIS, devono avere tre caratteristiche:

  1. la forma deve essere scritta in WKT, esempio Polygon ((0 5, 10 5, 10 0, 0 0, 0 5));
  2. l’origine delle coordinate deve essere 0,0 e coordinate piccole per esempio <100 (questo per evitare coordinate con numeri troppo grandi che farebbero facilmente raggiungere i 255 caratteri);
  3. devono essere raccolte in file xml;

STEP 1: Importo lo shapefile Regioni ISTAT:

STEP 2: semplifico la geometria e tolgo le aree piccole non utili

semplifico

Trasforma da parti multiple in parti singole e successivamente cerco le aree piccole e le elimino:

elimino le aree piccole con $area < 1000000000

STEP 3: traslo il centroide di tutte le regioni nelle coordinate 0,0 con il seguente algoritmo: Trasla:

le espressioni usate sono:

  1. -x(centroid($geometry))
  2. -y(centroid($geometry))

il risultato è:

tutte le regioni sono sovrapposte

STEP 4: scalo le geometrie, in x e y, di 0.0001 in modo da creare forme piccole e coordinate piccole (<100), usando affine transform

STEP 4: aggiungo un campo testuale alla tabella attributi e la chiamo WKT e la popolo con l’espressione: geom_to_wkt( $geometry,0)

formato WKT

tabella attributi:

tabella attributi

STEP 5: esporto in CSV e trasformo il file in xml.

il formato letto da QGIS è xml:

<!DOCTYPE qgis_style>
<qgis_style version="2">
  <symbols/>
  <colorramps/>
  <textformats/>
  <labelsettings/>
  <legendpatchshapes>
    <legendpatchshape name="Basilicata">
      <definition type="2" wkt="Polygon ((-2 7, 7 0, 3 -6, -2 -6, -6 4, -2 7))" preserveAspect="1"/>
    </legendpatchshape>
    <legendpatchshape name="Calabria">
      <definition type="2" wkt="Polygon ((1 11, 1 6, 6 4, 7 -1, -4 -14, -4 -6, -1 -3, -2 -1, -3 2, -5 4, -5 6, -6 8, -6 8, 1 11))" preserveAspect="1"/>
    </legendpatchshape>
    <legendpatchshape name="Puglia">
      <definition type="2" wkt="Polygon ((12 -2, 11 -3, 16 -6, 17 -8, 16 -12, 13 -10, 13 -9, 12 -7, 11 -7, 2 -6, -6 1, -12 1, -15 6, -13 10, -6 10, -6 5, 12 -2),(0 -2, 0 -2, 0 -2, 0 -2, 0 -2))" preserveAspect="1"/>
    </legendpatchshape>
    <legendpatchshape name="Sicilia">
      <definition type="2" wkt="Polygon ((12 8, 8 -1, 10 -6, 9 -7, 9 -10, 8 -10, -16 2, -13 6, -4 4, 12 8))" preserveAspect="1"/>
    </legendpatchshape>
  </legendpatchshapes>
</qgis_style>

a partire dal file CSV:

DEN_REG,wkt
Abruzzo,"Polygon ((3 3, 8 -1, 5 -5, -2 -5, -7 -2, -3 7, 0 8, 1 5, 2 4, 2 3, 3 3, 3 3, 3 3, 3 3, 3 3))"
Basilicata,"Polygon ((-2 7, 7 0, 3 -6, -2 -6, -6 4, -2 7))"
Calabria,"Polygon ((1 11, 1 6, 6 4, 7 -1, -4 -14, -4 -6, -1 -3, -2 -1, -3 2, -5 4, -5 6, -6 8, -6 8, 1 11))"
Campania,"Polygon ((-6 -1, -9 5, 1 7, 6 2, 4 0, 8 -9, 4 -9, 0 -3, -4 -4, -6 -1))"
Emilia-Romagna,"Polygon ((-9 6, 9 5, 13 -7, 8 -9, 3 -3, -1 -5, -13 -2, -14 4, -9 6),(9 -8, 9 -8, 9 -8, 9 -8, 9 -8))"
Friuli Venezia Giulia,"Polygon ((4 -4, 4 -4, 3 -5, 0 -5, -5 -2, -3 6, 4 5, 2 2, 7 -5, 4 -4))"
Lazio,"Polygon ((-4 -3, -11 4, -8 9, -2 4, 4 8, 5 2, 2 1, 11 -5, 9 -8, 3 -8, 2 -7, -1 -6, -2 -4, -3 -3, -4 -3),(-1 -3, -1 -3, -1 -3, -1 -3, -1 -3),(-2 -1, -2 -1, -2 -1, -2 -1, -2 -1))"
Liguria,"Polygon ((-1 0, 0 0, -1 0, -1 -1, -2 -2, -4 -4, -8 -6, -3 2, 3 4, 12 -2, 3 1, 3 1, 2 1, 2 1, 0 0, -1 0))"
Lombardia,"Polygon ((4 11, 7 9, 6 2, 8 2, 7 -3, 10 -5, 11 -5, 11 -6, 12 -6, 12 -6, 13 -7, 13 -7, 13 -7, -2 -5, -3 -10, -4 -10, -10 -5, -7 -3, -9 3, -8 6, -7 2, -6 2, -4 10, 3 7, 4 11),(-4 -10, -4 -10, -4 -10, -4 -10, -4 -10),(-4 -10, -4 -10, -4 -10, -4 -10, -4 -10))"
Marche,"Polygon ((-4 7, 4 3, 6 -4, 2 -7, -1 -5, -3 1, -8 3, -4 7),(-6 3, -6 3, -6 3, -6 3, -6 3))"
Molise,"Polygon ((2 4, 4 3, 4 -2, -4 -4, -5 0, 2 4))"
Piemonte,"Polygon ((4 16, 7 4, 5 2, 10 -5, -5 -10, -8 -7, -7 -4, -10 1, -6 5, 0 6, 4 16),(6 0, 6 0, 6 0, 6 0),(7 0, 7 0, 7 0, 7 0))"
Puglia,"Polygon ((12 -2, 11 -3, 16 -6, 17 -8, 16 -12, 13 -10, 13 -9, 12 -7, 11 -7, 2 -6, -6 1, -12 1, -15 6, -13 10, -6 10, -6 5, 12 -2),(0 -2, 0 -2, 0 -2, 0 -2, 0 -2))"
Sardegna,"Polygon ((-6 -12, -4 -2, -5 -2, -7 10, -4 8, 2 13, 2 13, 2 13, 2 12, 3 12, 3 11, 4 12, 4 10, 4 11, 5 10, 4 9, 4 9, 4 9, 4 9, 5 9, 5 9, 5 9, 5 9, 5 9, 5 9, 6 8, 7 5, 5 -9, -2 -13, -6 -12))"
Sicilia,"Polygon ((12 8, 8 -1, 10 -6, 9 -7, 9 -10, 8 -10, -16 2, -13 6, -4 4, 12 8))"
Toscana,"Polygon ((0 -11, 1 -11, 1 -10, -3 -7, -3 -6, -5 -6, -11 11, -2 7, 2 9, 5 5, 8 4, 9 4, 10 3, 4 -11, 1 -12, 0 -11),(-5 8, -5 8, -5 8, -5 8, -5 8))"
Trentino-Alto Adige,"Polygon ((7 7, 9 3, 4 1, 5 -3, -1 -8, -6 -7, -6 4, 7 7))"
Umbria,"Polygon ((-2 7, 6 -1, 0 -6, -5 -1, -2 7))"
Valle d'Aosta,"Polygon ((2 3, 4 -1, -2 -3, -4 1, 2 3))"
Veneto,"Polygon ((4 12, 4 4, 9 1, 4 -2, 5 -7, 4 -9, -3 -8, -10 0, -2 4, -1 10, 4 12))"

devo ottenere il file xml; apro il file csv in Notepad++:

  1. tolgo la prima riga;
  2. ctrl+h per avviare il trova e sostituisci:

ottenendo:

che è il corpo del file xml, occorre aggiungere la parte iniziale e finale:

<!DOCTYPE qgis_style>
<qgis_style version="2">
  <symbols/>
  <colorramps/>
  <textformats/>
  <labelsettings/>
  <legendpatchshapes>
...corpo
  </legendpatchshapes>
</qgis_style>

e salvare in xml.

Download : qui trovate il file, pronto per essere importato in QGIS.

STEP 6: importarlo in QGIS

STEP 7: come usarlo nella legenda

NOTE FINALI: è possibile aggiungere anche una forma alla volta, aggiungere etichette ed altro ancora. Qui un repository (curato da Tim Sutton) che raccoglierà le varie forme create dagli utenti e se avrà successo le ritroveremo direttamente nel core di QGIS.


Riferimenti

Ringraziamenti

Download file xml regioni
Download file xml province


EDIT:


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


Pubblicità

2 pensieri su “Come realizzare patch Legend per QGIS 3.14

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 )

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.