Normalmente gli stili in QGIS sono impostati sfruttando esclusivamente gli strumenti messi a disposizione dall’interfaccia del software. Ma possono esserci dei casi in cui, per vari motivi, occorra formattare gli stili in maniera più complessa. Talvolta poter recuperare la formattazione da dei dati tabellari può essere la soluzione più indicata.

Con questo tutorial vedremo come recuperare passo passo le informazioni tabellari e con l’occasione utilizzeremo anche alcune funzioni più avanzate che saranno utili ad affrontare alcuni problemi particolari.

Esempio 1, punti di presa orientati

Esaminiamo un primo caso molto semplice. Ipotizziamo di avere una sequenza di punti di ripresa fotografica collocati su una mappa. Per una completa rappresentazione, sarebbe molto utile che fosse indicato graficamente anche l’orientamento del punto di vista.

Si procederà creando uno shape puntuale e associando ad ogni geometria due campi: name e angle.
Il campo name definirà l’identificativo del punto di ripresa, che potrebbe essere un codice oppure un numero progressivo.
Il campo angle, che è il campo più importante ai fini di questo esempio, indicherà l’angolo di rotazione di ogni punto.

Successivamente si procederà creando le geometrie sulla mappa a cui sarà associato uno stile di base. Vediamo il risultato:

Come si può vedere è stata impostata la struttura base degli elementi grafici, con l’etichetta identificativa del punto e con i coni di ripresa segnati ma non ancora orientati.

A questo punto dal pannello di gestione degli stili possiamo recuperare l’angolo di rotazione e assegnarlo ai punti sulla mappa.

Con questo risultato:

In questo modo, in maniera rapida ed efficace possiamo gestire la rotazione di un numero anche consistente di punti senza appesantire la struttura dei dati che rimane snella. Ricordo che il risultato è ottenuto lavorando con un unico shape a cui sono associati solo 2 campi. Anche eventuali aggiornamenti dei dati saranno implementabili con estrema semplicità.

Esempio 2, mappa dei centri urbani con punti dimensionati in base alla popolazione

Nel primo esempio abbiamo illustrato un caso semplice per comprendere la logica di base, ora proviamo ad affrontare un caso un po’ più complesso.

Immaginiamo di volere ottenere una rappresentazione cartografica dei Comuni della provincia di Latina in cui ad ogni comune corrisponda un punto sulla mappa la cui dimensione sia proporzionata alla popolazione residente.

Per svolgere questo esercizio ci possiamo avvalere dei dati messi a disposizione dall’Istat.

Utilizzeremo i limiti amministrativi dei Comuni a cui sarà associato in tabella il dato della popolazione residente. Per prima cosa carichiamo il dato sulla mappa, poi lavorando con il pannello degli stili mostriamo il centroide di ogni singolo poligono. Ricordo che ogni poligono e il suo relativo centroide corrispondono ad un Comune.
I dati Istat hanno una copertura nazionale, mentre noi vogliamo prendere in esame solo i comuni della provincia di Latina. Per questo motivo utilizzeremo un filtro rispetto al codice provincia (campo “COD_PRO’) con questo risultato:

"COD_PRO" IN ('59') 

La struttura di base è predisposta. Il passaggio successivo sarà quello di regolare la dimensione di ogni singolo punto associandolo al campo popolazione.

La soluzione più immediata quella di ripetere l’operazione fatta nel primo esempio e recuperare direttamente i dati dal campo popolazione. L’intenzione è corretta ma la resa non è ancora quella che ci aspettiamo:

Come era facile prevedere recuperando il campo popolazione che ha valori numerici dell’ordine di migliaia di unità la dimensione dei punti sarà esagerata per una corretta rappresentazione.
Per risolvere il problema utilizzeremo una semplice espressione all’interno del ‘Costruttore di espressioni

Applichiamo un fattore 0.1 per ridurre il valore del campo ‘Popolazione‘.

"Popolazione" * 0.10  

Abbiamo migliorato notevolmente la rappresentazione.
Ma dobbiamo ancora risolvere un problema:
come si può notare c’è una differenza molto marcata nella dimensione tra punti relativi ai comune di grande dimensione (es. Latina con 180.000 abitanti) e i comuni più piccoli che hanno una popolazione di poche centinaia di abitanti.
Per una resa ottimale dovremmo trovare un modo per vincolare la dimensione massima e minima dei punti. Per fare questo implementeremo l’espressione utilizzando la funzione clamp.

Lo scopo di questa funzione è per l’appunto quello di limitare un valore entro un intervallo determinato.

 
clamp(minimum,input,maximum)

minimum : Il valore minimo di input;
input: Il valore da restringere nell’intervallo;
maximum:Il valore massimo di input.

Nel nostro caso il valore di input sarà il campo ‘Popolazione‘ ridotto dal fattore 0.1 che sarà compreso in un intervallo minimo e massimo di valori pari a 1000 e 9000:

clamp( 1000,"Popolazione" * 0.10, 9000)   

A questo punto abbiamo una rappresentazione ottimale, con una corretta leggibilità degli elementi grafici.

Per completare l’esercizio aggiungiamo le etichette con l’indicazione della popolazione espressa in migliaia utilizzando la seguente espressione:

concat( round("Popolazione" * 0.001 ) , 'k')   

Grazie a questa espressione se un comune ha, ad esempio, una popolazione di 15278 abitanti, l’etichetta corrispondente restituirà un valore pari a 15k.
In questo modo abbiamo una lettura più snella del dato.
Vediamo nel dettaglio i termini dell’espressione:

round(value[,places=0])  

La funzione round serve ad arrotondare un numero secondo un valore di decimali definito dal parametro places. Se places è omesso, il numero è automaticamente arrotondato ad una cifra intera.

concat(string1,string2…)  

La funzione concat collega n stringhe di testo. Nel caso in oggetto servirà ad aggiungere l’unità di misura ‘k‘ al valore numerico.

Per ottenere il risultato finale dell’esercizio:

Considerazioni conclusive

con questo tutorial abbiamo visto come assegnare li stili a partire dai dati tabellari, inoltre abbiamo avuto l’occasione di esplorare alcune funzionalità più avanzate di QGIS.

Il vantaggio principali di questo metodo, sono la rapidità di utilizzo e l’estrema flessibilità. Una volta definite le espressioni potremo ottenere rapidamente risultati differenti semplicemente cambiando i parametri di controllo. Inoltre il dato di partenza è rimasto integro senza la necessità di alcuna modifica. Questo ultimo punto è molto importante per un flusso di lavoro più efficiente in caso di gestione di database molto grandi e di aggiornamenti di dati frequenti.

Tags: ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.