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:
- la forma deve essere scritta in WKT, esempio
Polygon ((0 5, 10 5, 10 0, 0 0, 0 5))
; - 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); - 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

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

STEP 3: traslo il centroide di tutte le regioni nelle coordinate 0,0 con il seguente algoritmo: Trasla
:
le espressioni usate sono:
-x(centroid($geometry))
-y(centroid($geometry))
il risultato è:
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)
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++:
- tolgo la prima riga;
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
- QGIS : https://qgis.org/it/site/
- repository Tim : https://github.com/kartoza/QGIS-Legend-Patches
- PR Nyall : https://github.com/qgis/QGIS/pull/35863
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 !!!
Molte grazie Toto! Tanti auguri di Argentina!
________________________________
"Mi piace"Piace a 1 persona
Ciao e grazie Andrés, ricambio!
"Mi piace""Mi piace"