Una visualizzazione in forma grafica permette di rappresentare e comprendere meglio grandi quantità di dati. Quando si ha a che fare con dati spaziali, le cosiddette heatmap (mappe di calore) si rivelano essere un’ottima soluzione che permette di realizzare analisi molto interessanti. In questo breve tutorial, vi spiegheremo cos’è una heatmap e come realizzarla passo dopo passo in QGIS.

Che cos’è una heatmap?

Prima ancora di aprire QGIS, è importante capire che cosa vogliamo realizzare. Per citare Wikipedia, una heatmap è una “tecnica per la visualizzazione di dati che mostra l’intensità di un determinato fenomeno sotto forma di colore. La variazione di colore, in termini di intensità o cromia, andrà a rappresentare la distribuzione del fenomeno nello spazio[1] Cosa faremo quindi? Coloreremo letteralmente una regione spaziale in base all’intensità del fenomeno che vogliamo rappresentare.

L’esempio più immediato e già familiare ai più è l’utilizzo di una heatmap per raffigurare proprio ciò dal quale questa tecnica prende il nome: la temperatura. In questo caso, anche la scelta cromatica non è lasciata al caso. Come possiamo vedere nell’immagine sottostante (che riproduce la temperatura media annuale), le regioni globali con temperature più calde sono colorate di rosso, per quelle più fredde viene invece adoperato il blu e tutte le sue sfumature, fino ad arrivare al bianco.

Annual Mean Temperature

Fig 1. – Temperatura media annuale – Fonte immagine: Wikimedia Commons

Nel dettaglio

Di cosa abbiamo quindi bisogno per arrivare ad un risultato di questo genere? Le informazioni minime necessarie sono due:

  1. il parametro che misura il fenomeno che vogliamo rappresentare;
  2. la localizzazione della misurazione del parametro, quindi, nel caso più semplice e comune, una coppia di coordinate o direttamente la geometria di un punto nello spazio.

Prendiamo, ad esempio, il dataset che utilizzeremo per la nostra heatmap e che raffigurerà la densità di distribuzione dei centri abitati sul territorio italiano (il campione contiene i dati di 2124 centri).

Ogni record mette a disposizione le seguenti informazioni (vedi anche esempio in figura 2):

  • Nome della città
  • Nome della città in ASCII
  • Latitudine
  • Longitudine
  • Nazione
  • Sigla nazione ISO2
  • Sigla nazione ISO3
  • Regione amministrativa
  • Tipologia di capitale (ovviamente nel caso si tratti di una capitale)
  • Popolazione
Heatmap Record Example

Fig. 2 – Esempio record dataset

A questo punto, abbiamo a disposizione le coordinate per localizzare le singole città e sappiamo già che il fenomeno che vogliamo rappresentare è la presenza stessa del centro abitato. Spostiamoci, quindi, su QGIS per poter dare una forma e soprattutto un colore a quanto detto fino ad ora.

Import dei dati

Il dataset che abbiamo scelto per la nostra heatmap è gratuitamente reperibile qui [2] in formato CSV. Fortunatamente QGIS ci permette di importare un layer direttamente da questo formato, selezionando dal menu Layer > Add Layer > Add Delimited Text Layer (Figura 3).

QGIS Add Layer from CSV

Fig.3 – Aggiungi Layer

Dalla finestra di dialogo selezioniamo il nome del file da importare, il nome del layer che verrà creato e le colonne del dataset che rappresentano le coordinate del punto geometrico insieme al sistema di riferimento da utilizzare. (Figura 4)

QGIS CSV Import

Fig. 4 – Import CSV

Aggiungiamo anche una mappa di base per poter vedere la posizione dei centri abitati: utilizziamo, quindi, il Browser sulla sinistra per aggiungere il layer di google satellite. (Figure 5 e 6)

Fig. 5 – Mappa Google Satellite

Fig. 6 – Layer Browser

Adesso possiamo vedere come vengono visualizzati i punti dei centri abitati di tutto il mondo. Per realizzare la nostra heatmap, però, abbiamo deciso di limitarci al territorio italiano: di conseguenza, andremo ad applicare un filtro sul layer in modo tale da considerare solo quei record la cui sigla nazionale ISO2 corrisponde a ‘IT’. (Figure 7 e 8)

Fig. 7 – Filtri Layer

Fig. 8 – Query filtro

Un’ultima accortezza da prendere, e che ci tornerà utile in seguito, riguarda la modifica del sistema di riferimento utilizzato e la conseguente riproiezione della mappa e delle geometrie. Selezioniamo, quindi, l’EPSG:3857 per l’intero progetto di QGIS (toolbar in basso a destra – figura 9). In questo modo, quando realizzeremo la heatmap potremo utilizzare direttamente le Map Units come unità di misura che troveremo impostata a metri.

QGIS EPSG change

Fig. 9 – Toolbar con selettore EPSG

Il risultato che vedremo sulla mappa sarà quello mostrato nella Figura 10. Per poter in seguito fare un confronto fra la disposizione dei punti e la heatmap che genereremo, duplichiamo il nostro layer con i punti dei centri abitati e procediamo poi con la trasformazione dei punti in heatmap.

Punti Centri Abitati Italia

Fig. 10 – Centri abitati

Heatmap

I parametri che dovremo stabilire per visualizzare la nostra heatmap sono:

  1. i colori da utilizzare, o meglio, il gradiente di colori e la sua distribuzione in percentuale, il cosiddetto Color Ramp;
  2. il raggio di influenza del singolo punto rispetto alla sua posizione;
  3. il valore massimo per “peso” (vedi punto successivo) del singolo punto;
  4. il valore da utilizzare che rappresenta la misurazione del fenomeno che vogliamo visualizzare.

Apriamo la finestra delle proprietà del nostro layer duplicato (click destro del mouse sul nome del layer > Proprietà) e selezioniamo la voce Symbology. (Figura 11)

QGIS Layer Properties

Fig. 11 – Symbology

Nel primo dropdown menu selezioniamo proprio la voce “Heatmap” al posto del valore di default Single symbol: in questo modo appariranno tutti i campi da riempire con i valori sopracitati e di cui abbiamo bisogno.

Iniziamo dal Color Ramp, in questo caso possiamo partire da un gradiente di colore preimpostato ed apportare solo una lieve modifica. Possiamo, ad esempio, utilizzare un gradiente con il rosso come colore caratterizzante una densità maggiore, fino a sfumare verso il bianco per rappresentare l’assenza di centri abitati. (Figura 12)

QGIS Color Ramp Selector

Fig. 12 – Color Ramp

Per modificare il gradiente selezionato, clicchiamo direttamente sulla barra colorata per aprire la finestra di dialogo. È possibile personalizzare il gradiente selezionato, i colori che lo compongono, la loro intensità, la loro distribuzione sulla percentuale totale del gradiente, etc. Selezioniamo il marker del colore bianco finale e impostiamo l’opacità allo 0% (Figura 13). In questo modo faremo sì che lì dove c’è totale assenza di centri abitati, il layer risulterà completamente trasparente così da permetterci di visualizzare la mappa satellitare sottostante.

QGIS gradient opacity

Fig. 13 – Opacità marker

Per stabilire il raggio di influenza, selezioniamo Map Units come unità di misura così da poter ragionare in metri, visto e considerato il sistema di riferimento impostato precedentemente. Dal momento che per visualizzare a schermo l’intero “stivale” abbiamo bisogno di utilizzare una scala abbastanza ampia, anche per il raggio di influenza dei singoli centri abitati ha senso usare un valore abbastanza elevato per poter creare una heatmap ben visibile da grande “altezza”. Impostiamo quindi il valore di 20.000 metri (20km).

Passiamo ora al valore che quantificherà l’influenza di ogni singolo punto e associamo ad esso un peso proporzionale alla variabile che descrive il fenomeno che la nostra heatmap deve rappresentare. Nel nostro esempio, la questione è semplicissima: volendo visualizzare la densità geografica dei centri abitati, il valore di misurazione di cui abbiamo bisogno è in realtà la presenza stessa del punto che rappresenta il centro abitato. Di conseguenza, non abbiamo bisogno di specificare né un valore massimo consentito (Maximum value), né una specifica colonna del dataset (Weight points by).

In ultima istanza, possiamo scegliere un livello di qualità del rendering grafico della nostra heatmap. Maggiore è la qualità, maggiore sarà il tempo impiegato da QGIS (e dalla vostra CPU) per realizzare la heatmap.

Selezioniamo Apply e otterremo questo risultato. (Figura 14)

Centri abitati italia heatmap

Fig. 14 – Heatmap

Le tonalità di rosso evidenziano le aree in cui è presente il maggior numero di centri abitati. Le aree, invece, meno popolate assumono una colorazione che tende a sfumare verso il bianco.
A conferma della validità e qualità grafica della nostra heatmap, possiamo sovrapporre il layer contenente le geometrie dei punti per verificare come nelle aree evidenziate in rosso la quantità di punti presenti sia effettivamente maggiore.

Fonti

[1] Heat Map – Wikipedia

[2] Dataset Centri Abitati – Kaggle.com