QGIS: Atlas con grafici dinamici

QGIS ha un potente compositore di stampe con cui è possibile realizzare layout di stampa in vari page size (A4, A3 ecc…) ed esportarli in vari formati jpg, PDF e SVG (geoTIFF, geoPDF) oltre alla possibilità di creare dei template, atlanti e tanto altro.

In questo articolo affronterò l’annoso problema dei grafici dinamici in un atlante ovvero la creazione di grafici a torta che si aggiornino al variare delle pagina. cioè del vettore di copertura.

Per definire un grafico in un atlas di QGIS è possibile utilizzare le ‘cornici HTML‘ mediante l’uso di CSS (Cascading Style Sheets, ovvero, fogli di stile a cascata) e del codice HTML come sorgente (sarà più chiaro nel seguito).

immagine-3
screenshot compositore di stampe – cornice HTML – CSS

Non parlerò di come realizzare un atlas (troverete altri articoli in questo blog) ma focalizzerò l’attenzione su come aggiungere due grafici a torta per la visualizzazione di alcune statistiche legate al vettore di copertura ( è il layer di riferimento per la generazione dell’atlas).

In breve: realizzerò un atlas a partire da un layer poligonale (comuni della provincia di Enna) la cui tabella degli attributi è cosi strutturata:

il vettore di copertura è il layer dei comuni: nel layout creerò due riquadri mappa definendo l’id oggetto (PROVINCIA nel primo riquadro per visualizzare tutti i comuni, ZOOM secondo riquadro per visualizzare solo il comune corrente):

immagine-6
layout stampa – riquadri mappa e regole

per ottenere la visualizzazione della figura di sopra occorre tematizzare il layer tramite tre regole (nell’ordine):

NB: questa sintassi è valida da QGIS 2.14 in poi!!!

la prima regola significa: visualizza/tematizza la feature (poligono = comune) quando il suo identificativo ($id) è uguale all’identificativo (@atlas_featureid) della feature visualizzata nell’atlas e (AND) fallo solo nel riquadro mappa (@map_id) di nome ‘ZOOM’;

la seconda regola significa: visualizza/tematizza le feature (tutti i comuni) quando il riquadro mappa (@map_id) è uguale al nome ‘PROVINCIA’;

la terza regola significa: visualizza/tematizza la feature (poligono = comune) quando il suo identificativo ($id) è uguale all’identificativo (@atlas_featureid) della feature visualizzata nell’atlas e (AND) fallo solo nel riquadro mappa (@map_id) di nome ‘PROVINCIA’;

NON preoccupatevi se non vedrete nulla nella map canvas, è normale!!!

ora aggiungiamo, tramite il riquadro HTML (vedi primo screenshot), il primo grafico a torta:

il codice HTML di sopra va copiato ed incollato in sorgente del riquadro:

immagine-8
codice HTML – riquadro

PS: il valore ‘0.26135’ è la somma di tutte le aree comunali espressa in EPSG 4326!!!

non preoccupatevi se NON vedete ancora nulla, occorre un altro passo, andate più in basso fino a:

immagine-9
foglio di stile utente – CSS

all’interno, incollate il seguente codice del file CSS che trovate qui.

Basta ora ‘aggiornare’, cioè cliccare su ‘aggiorna HTML’, comparirà il grafico a torta relativo alla feature corrente.

immagine-11
SCREENSHOT – grafico a torta

per il secondo grafico, relativo alla popolazione, utilizzare questo codice:

PS: il valore ‘169782’ è la somma di tutte le ‘popolazioni’ comunali!!!

NB: ogni volta che si aggiunge un riquadro HTML occorre sempre popolare ‘il foglio di stile utente’ con il codice CSS.


note finali: l’idea è nata leggendo un ottimo articolo (lo travate qui) di Mickael HOARAU @Oneil974.


dati e progetto EPSG 3004

Annunci

2 pensieri su “QGIS: Atlas con grafici dinamici

Rispondi

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

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. 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 )

Google+ photo

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

Connessione a %s...