Mappe demografiche ISTAT e Qgis3 (How-to)

  Gis data, Gis Tutorial

In questo post vi spiegheremo come realizzare delle mappe demografiche utilizzando gli open-data dei censimenti ISTAT e QGIS3.

Ingredienti per il tutorial:

Vi elenchiamo subito gli URL che vi serviranno

  1. https://www.istat.it/it/archivio/104317 (pagina delle Basi territoriali e variabili censuarie del sito web ISTAT)
  2. www.qgis.org, il software GIS opensource più diffuso al mondo. qui il tutorial per installarlo su MacOS

Indice

  1. Definizioni
    1. Base territoriale
    2. Variabili censuarie
  2. Download dei dati
    1. Vettori della base territoriale
    2. Variabili censuarie
  3. Import dati in QGIS
    1. Layer vettoriali geografici
    2. Import delle variabili censuarie
  4. Join tra variabili e basi territoriali
    1. Il campo chiave
    2. L’operazione “Join” in Qgis
    3. Errori comuni in questa procedura
  5. Le mappe demografiche
    1. Densità abitativa
    2. Analfabetismo
    3. Popolazione straniera

1. Definizioni:

Innanzitutto riportiamo la nota ISTAT sugli open-data, come si legge nel sito ufficiale:

Tutti i dati prodotti dall’Istituto nazionale di statistica sono rilasciati sotto licenza Creative Commons (CC BY 3.0 IT): è possibile riprodurre, distribuire, trasmettere e adattare liberamente dati e analisi dell’Istituto nazionale di statistica, anche a scopi commerciali, a condizione che venga citata la fonte.

1.1 Base territoriale

Per Base territoriale l’ISTAT intende un dato geografico di tipo vettoriale che descrive una delimitazione territoriale (amministrativa o demografica); in pratica si tratta dei dati vettoriali che delimitano i confini comunali o le sezioni di censimento.

1.2 Sezione di Censimento

(fonte: Metadati_PDF) “Le Sezioni di Censimento (SC) informatizzate sono, a partire dal 1991, lo strumento che risponde all’esigenza dei Comuni di predisporre i propri piani topografici per l’effettuazione dei censimenti generali […] ciascuna sezione di censimento è costituita da un solo corpo delimitato da una linea spezzata chiusa, formata, di norma, dalle linee che corrono lungo la mezzeria delle entità geografiche lineari che identificano del suo perimetro.”

Sezioni Censuarie

Sezioni censuarie nel comune di Trapani

1.3 Variabili censuarie

I dati dei censimenti sono numerosi sia per quantità che per tipologia, ad ogni elemento geografico vengono associate diversi indicatori: popolazione totale, maschi femmine, fasce d’età, i dati delle abitazioni ecc…

Per una questione di comodità nell’utilizzo dei dati non si fa riferimento al nome della variabile ma ad un suo codice identificativo. Nel censimento 2011 il codice “P1” è utilizzato per identificare il numero totale di popolazione residente, mentre ad esempio il valore che troviamo sotto il codice “P132” indica “Popolazione residente – totale maschi di 15 anni e più studenti”.

Un elenco completo delle definizioni delle variabili censuarie lo si trova in allegato con i file denominati dall’ISTAT: “Tracciato record” necessariamente diverso per ogni tavola di censimento che utilizziamo.

Tracciato record ISTAT

Esempio/stralcio del file Tracciato record per il censimento popolazione 2011

2 Download dei dati

2.1 Vettori della base territoriale

Come già anticipato troviamo tutto ciò che ci serve per preparare le mappe demografiche con i dati ISTAT in questa pagina del sito web ufficiale dell’Istituto https://www.istat.it/it/archivio/104317

Per prima cosa effettuiamo il download dei dati vettoriali che ci interessano. Nella sezione “Basi territoriali” espandendo la pagina troviamo una tabella contenente tutti i dati suddivisi per tipologia, anno e sistema di proiezione:

download basi territoriali ISTAT

Sezione per il download delle basi territoriali

Si può notare che vengono utilizzati dei codici numerici per le regioni, annotate il numero id della regione che vi interessa perché ci servirà per individuare i dati delle variabili censuarie.

Effettuiamo il download del file zip che ci serve, ad esempio in questo tutorial utilizziamo il file relativo alla regione Sicilia (Regione 19) nel sistema di riferimento WGS 84 UTM Zona 32n , che si identifica con EPSG:32632.

In genere per le mappe demografiche si utilizza come base territoriale il poligono in shapefile delle sezioni/limiti amministrativi, ma nella pagina trovate anche dati puntuali e/o dati in formati KMZ leggibili in software come Google Earth.

Scompattando il file .zip di questo tutorial (19-Sicilia, anno 2011, WGS84) otterremo un dataset così composto:

  1. un file *.xls contenente i nomi delle località, delle entità e altri dati tabellari a corredo
  2. uno shapefile completo di file *.dbf, *.shp, *.shx, *.prj da poter utilizzare con il software GIS che contiene i poligoni

2.2 Variabili censuarie

Analogamente con quanto fatto per la base territoriale occorre effettuare il download delle variabili censuarie. Le tabelle contenenti i dati delle variabili sono pubblicati in maniera separata rispetto alle geometrie.

Tabella per il download delle variabili censuarie

Nella sezione dedicata è possibile effettuare il download degli archivi compressi in formato .zip di tutti i censimenti. In questo tutorial ci occuperemo del Censimento della popolazione e delle abitazioni del 2011.

Una volta scaricato e decompresso l’archivio conterrà diverse cartelle con i dati aggregati per :

  1. “Aree di Censimento”
  2. “Aree Subcomunali”
  3. “Località”
  4. “Sezioni di censimento”

All’interno di ogni cartella ci saranno 20 file.csv con le variabili (uno per ogni regione) ed un file importantissimo chiamato: tracciato_2011_sezioni.csv. La codifica del numero di regione in questo modo:

id Nome Regione
R01 Piemonte
R02 Valle D’Aosta
R03 Lombardia
R04 Trentino Alto Adige
R05 Veneto
R06 Friuli Venezia Giulia
R07 Liguria
R08 Emilia Romagna
R09 Toscana
R10 Umbria
R11 Marche
R12 Lazio
R13 Abruzzo
R14 Molise
R15 Campania
R16 Puglia
R17 Basilicata
R18 Calabria
R19 Sicilia
R20 Sardegna

 

i file in formato .csv sono leggibili sia importandoli in un software per foglio di calcolo (es. Libre Office Calc, MS Excel) che direttamente in QGIS come file “testo delimitato”.

3 Import dei dati in QGIS

3.1 Layer vettoriali geografici

Avviamo QGIS e creiamo un nuovo progetto,aAgiamo sul comando dal menù Layer -> Aggiungi Layer -> Aggiungi layer vettoriale.

Andiamo ad impostare la sorgente della risorsa vettoriale con il file delle basi territoriali con estensione .shp, nel nostro caso useremo il file R19_11_WGS84.shp

Avendo importato il file nel progetto QGIS dobbiamo accertarci che il sistema di riferimento sia quello corretto, ovvero coincidente con il sistema di riferimento del dato. In questo caso EPSG 32632 – WGS84 UTM Fuso 32.

Alcuni lettori avranno già notato che i dati geografici dell’ISTAT non sono espressi nei due fusi della cartografia nazionale (UTM 32 per le longitudini a Ovest di Roma, e UTM 33 per le longitudini a Est di Roma). Questo probabilmente perché è necessità dell’Istituto di avere un’unico set di coordinate geografiche per gli elementi. Da un punto di vista strettamente geodetico in effetti è errato utilizzare ad esempio il fuso UTM 33 per le regioni meridionali, ma in caso di conversione (dal fuso 32 al fuso 33) anche con i metodi speditivi gli errori sono accettabili a livello teorico se effettuati all’interno dello stesso ellissoide (WGS84).

Dopo aver importato il dato risulta comodo sottoporre al vettore uno sfondo di immagine satellitare. Vi suggerisco questo tutorial se non sapete come fare a sovrapporre un servizio WMS.

Una cosa che consigliamo di fare immediatamente dopo aver importato un dato in qgis è quello di andar a dare una sbirciata alla tabella attributi.

Notiamo immediatamente che pur essendo per definizione quasi tutti gli attributi numerici dei numeri di tipo intero (codici identificativi), qgis interpreta spesso i dati in maniera poco corretta impostando numeri decimali laddove non necessario.

L’attributo di questo shapefile che utilizzeremo successivamente è SEZ2011 L’attributo PRO_COM contiene il codice istat del comune in cui sono inserite le sezioni.

Come prima cosa andiamo a fare una query di selezione ed estrazione delle località che ci interessano. Preleviamo dal sito ISTAT: https://www.istat.it/it/archivio/6789 il codice delle località interessate. Nel nostro caso prendiamo il comune di Catania, codice istat 87015.

Apriamo la tabella attributi e lanciamo il comando Seleziona con espressione  dopodiché impostiamo la seguente espressione:

“PRO_COM” = 87015

la stringa “PRO_COM” indica il field del codice istat dei comuni mentre il valore 87015 è proprio il codice istat del comune di Catania.

Verifichiamo graficamente se la selezione effettuata è corretta.

Per comodità, correttezza del lavoro, ma sopratutto per risparmiare risorse, salviamo la selezione come nuovo vettore con il comando: Layer -> Save as… ricordando di spuntare la chiamata “salva solo le geometrie selezionate” come nella seguente immagine.

3.2 Variabili censuarie

Le tabelle scaricate al paragrafo 2.2 sono in formato .csv e non contengono nessun tipo di informazione geografica se non il codice della località o della sezione ISTAT a cui sono riferite le variabili. Pertanto si tratta di tabelle attributi, senza nessun tipo di geometria associata. QGIS permette il trattamento di questi tipi di dati in quanto è pur sempre un software di gestione per basi di dati.

Il comando per importare una tabella in CSV è “Aggiungi layer da testo delimitato”: Layer -> Aggiungi Layer -> Testo Delimitato

Si aprirà un’apposita schermata che consente l’inserimento dei dati per interpretare i valori nel file CSV, nel nostro caso inseriamo questi parametri:

File format: “Custom delimiters -> Semicolon
Record and field options: “First record has field name”
Geometry definition: “No geometry”

Se le impostazioni sono corrette dovremmo vedere nell’ultimo box della finestra un’anteprima della tabella in modo corretto, con ogni elemento nella sua cella.

Clicchiamo sul pulsante Aggiungi (Add) e troveremo nell’elenco dei layer un nuovo elemento con il nome del file .csv che abbiamo aggiunto. Possiamo verificare ulteriormente la correttezza dell’import andando visualizzare la tabella attributi.

 

4. Join tra variabili e basi territoriali

Per poter collegare allo shapefile delle basi territoriali gli attributi provenienti dal file .csv contenente le variabili censuarie occorre effettuare una operazione di “Join” tra i due dataset; chi lavora con i database conosce bene questa operazione perché viene utilizzata spesso e volentieri.

In parole povere occorre collegare la tabella con gli indicatori con i poligoni delle sezioni; gli indicatori contengono i valori delle mappe demografiche e il layer delle sezioni contiene le geometrie istat.

4.1 Il campo chiave

Se abbiamo effettuato tutti i passaggi descritti in questo tutorial abbiamo un layer che contiene i poligoni delle sezioni censuarie che è stato nominato: Sezioni_ISTAT_Catania e un layer senza nessun tipo di geometria costituito dalla sola tabella attributi delle variabili censuarie della Regione 19 (Sicilia) dell’ISTAT denominato: “R19_indicatori_2011_sezioni”.

Andando a confrontare le tabelle attributi di entrambi i layer notiamo che esiste un campo (colonna) che contiene la stessa tipologia di informazioni, e tra le altre cose ha lo stesso nome: SEZ2011. Tale coincidenza non è affatto casuale, quando l’ISTAT ha progettato il lavoro ha giustamente pensato bene di fornire un campo univoco che identifica una sezione censuaria, avente lo stesso nome in tutte le basi di dati (territoriali e variabili censuarie).

Partendo da questa osservazione intuiamo già il concetto che sta alla base delle operazioni di “Join”, il campo SEZ2011 verrà utilizzato per collegare le due tabelle. Nel nostro caso dovremmo far si che in ogni riga associata ad un poligono di una sezione censuaria, vi siano inglobate anche le variabili censuarie; per far questo occorre cercare le righe che hanno lo stesso codice SEZ2011.

4.2 L’operazione “Join” in Qgis

L’operazione di “Join” in qualunque sistema informativo prevede che esista un campo “chiave” ovvero una colonna delle tabelle che contenga la stessa tipologia di dati e che può essere utilizzata per collegarle tra di loro.

Non esaminiamo in questo posto tutte le tipologie di Join (abbiamo già scritto abbastanza 😅) e vi illustriamo subito i passaggi da fare.

  1. Con doppio click sul layer vettoriale apriamo il pannello delle proprietà e successivamente andiamo sulla scheda “Join”. Attenzione dobbiamo fare questa operazione sul layer vettoriale dei poligoni con le sezioni di censimento (destinazione del collegamento).
  2. Agiamo sul pulsante ➕ per aprire la maschera con le impostazioni del “Join”
  3. Impostiamo i seguenti parametri:
    1. Join Layer: “R19_indicatori_2011_sezioni” (ovvero il layer costituito dalla sola tabella attributi proveniente dal file .csv)
    2. Join Field: “SEZ2011”. Questo è il campo “chiave” della tabella da aggiungere
    3. Join Target: “SEZ2011”. Questo è il campo chiave del vettore geometrico in cui confluiranno i dati
    4.  Selezioniamo “Cache join layer in virtual memory”; lo facciamo per risparmiare risorse in quanto salveremo tutto successivamente in un nuovo file.
    5. Accendiamo e selezioniamo solamente alcuni campi della tabella da aggiungere: ad esempio P1, P2 (teniamo sott’occhio il file “tracciato record” scaricato assieme alla tabella, v. par 2.2).
    6. Assegniamo un prefisso ai campi aggiunti, in questo caso metteremo “cpa_” cpa sta per Censimento Popolazione e Attività, vi suggeriamo di mettere pochi caratteri seguiti sempre un carattere come underscore “_” per una migliore lettura dei nomi dei campi. Poiché il nome dei campi verrà troncato prefissi troppo lunghi possono far perdere il nome del campo rendendo difficile se non impossibile proseguire con le elaborazioni GIS.
  4. Chiudiamo tutto e diamo un’occhiata alla tabella attributi; se tutto è andato bene noteremo aggiunti (sulla dx) dei campi che iniziano con “cpa_” e i nomi dei campi della tabella come in figura
  5. Salviamo il vettore in un nuovo shapefile e automaticamente avremo un dato con tutti i campi aggiunti

4.3 Errori comuni in questa procedura

Riceviamo spesso richieste di consulenza che riguardano errori nella fase di Join tra tabelle; possiamo elencare qui i principali errori che (principianti e non) vengono commessi comunemente:

  1. Errata interpretazione e comprensione di quale sia il vettore “Target” del Join e scambio con il vettore di Input: il vettore Target è quello in cui deve essere attivata la procedura descritta al paragrafo 4.2 mentre il vettore di input è quello che contiene i dati tabellari da aggiungere.
  2. Errore dovuto alla non coerenza tipologica tra i campi chiave: i due campi dei due layer devono essere della stessa tipologia (testo/testo, numero intero/numero intero, data/data ecc…); ci sono strumenti in grado di poter fare join con campi chiave non coerenti ma non ne parliamo a questi livelli…
  3. Nomi dei campi aggiunti troppo lunghi; uno dei problemi di qgis è che non gestisce bene i nomi dei campi troppo lunghi, se non impostiamo un prefisso ai nomi dei campi, Qgis userà come prefisso il nome del file Input che in genere provocherà dei nomi dei campi aggiunti troppo lunghi, i quali essendo troncati perderanno quasi sicuramente il loro nome originale. Suggeriamo pertanto di agire sempre sulla casella “prefisso personalizzato” o “custom filed name prefix” ed inserendo 2-3 caratteri seguiti dal trattino basso per non avere problemi.

5. Le mappe demografiche Istat

Finalmente siamo arrivati alla fase creativa di tutto questo processo, se avete seguito passo passo tutti i paragrafi precedenti ci dovremmo ritrovare con un progetto QGIS contenente un file di poligoni delle sezioni censuarie ISTAT della città di Catania contenente anche alcune variabili censuarie come in figura:

Avendo aggiunto con l’operazione Join le variabili censuarie (v. paragrafo 4.2), possiamo agire sugli stili di visualizzazione per poter rappresentare queste variabili nel modo più opportuno.

Vengono illustrati a titolo esemplificativo solo 3 di tutte le mappe demografiche realizzabili con i dati istat pubblicati, il metodo per interpretare le variabili censuarie dipende dal tipo di analisi territoriale che dobbiamo fare.

5.1 Densità abitativa

Una delle più classiche delle analisi demografiche è la mappa della densità abitativa, che rappresenta il rapporto tra abitanti totali di una regione e la sua area. Nel nostro caso abbiamo la variabile censuaria “P1” che contiene il numero totale degli abitanti del censimento ISTAT 2011 e dalla geometria del layer possiamo ricavare agevolmente l’estensione di ogni sezione.

Apriamo le proprietà del vettore e andiamo nella scheda relativa alla simbologia.

  1. Impostiamo la tipologia di simbologia “Graduata”
  2. Anziché selezionare una colonna andiamo a specificare una funzione cliccando sull’icona apposita
  3. per calcolare il numero di abitanti per chilometro quadrato (ricordiamo che 1 Kmq = 10^6 mq) inseriamo questa formula:
      ("cpa_P1" *1000000) /  $area

    la sintassi prevede che i valori tra doppie virgolette indicano i nomi dei campi (Fields) mentre i nomi preceduti da $ stanno ad indicare proprietà intrinseche del layer come l’area. Trovate le specifiche dei comandi e dei campi sfogliando l’editor, vi invito a farlo per imparare.

  4. Controlliamo che la tipologia di simbolo sia con riempimento colorato continuo senza linee di contorno.
  5. Impostiamo un set di colore per la graduazione

Prima di procedere con la classificazione degli intervalli è sempre bene dare un’occhiata ai valori ed alla sua distribuzione. Avviando la maschera “Histogram” in questo caso notiamo che la maggior parte dei valori è inferiore a 10’000 e quindi ha poco senso utilizzare intervalli uguali dal minimo al massimo.

Istogramma dei valori con classificazione per intervalli uguali

Se invece avviamo una classificazione per intervalli “Naturali” otteniamo una distribuzione dei risultati di più facile lettura come si evince dal relativo istogramma

Istogramma dei valori classificato per intervalli naturali

Impostiamo pertanto una classificazione in 10 classi ad intervalli naturali ed otteniamo una rappresentazione simile:

Ecco una visualizzazione delle mappe demografiche istat per cui il valore rappresenta la densità abitativa come numero di abitanti per kmq.

5.2 Analfabetismo

E’ forse una delle più strane mappe demografiche istat che possiamo realizzare, in questa mappa evidenzieremo la presenza di popolazione analfabeta, censita con la variabile “P52” del Censimento Popolazione e Abitazioni ISTAT 2011. Seguendo le procedure descritte ai paragrafi precedenti abbiamo ottenuto uno shapefile contenente le geometrie delle sezioni censuarie con gli attributi provenienti dalle variabili del censimento.

Agiamo sugli stili di visualizzazione dello shapefile (Proprietà Layer -> Simbologia) e impostiamo:

  1. Visualizzazione di tipo graduato
  2. Colonna (Campo) con la formula
     (  "cpa_P52"  /  $area  )  *  1000000
  3. Modo di classificazione “Natural Breaks (Jenks)”
  4. Numero di classi 5

 

Aggiungiamo “manualmente” cliccando su ➕ una classe con valore minimo e massimo pari a “0” e per essa impostiamo una opacità del 0% in modo da renderla trasparente. Questo perché vogliamo togliere dalla mappa le sezioni prive di abitanti analfabeti.

Il risultato è una mappa che esprime il numero di abitanti censiti come “analfabeti” ogni kmq per ogni sezione ISTAT.

 

5.3 Presenza di popolazione straniera

La popolazione straniera ed apolide censita con il Censimento ISTAT 2011 è inserita nelle variabili di censimento che iniziano con il prefisso “ST”. In questo caso utilizzeremo semplicemente il valore aggregato di tutta la popolazione straniera ed apolide inserito nella variabile “ST1”.

Analogamente a quanto fatto nel paragrafo precedente impostiamo il seguente stile di visualizzazione:

  1. Visualizzazione di tipo graduato
  2. Colonna (Campo) con la formula
     (  "cpa_ST1"  /  $area  )  *  1000000
  3. Modo di classificazione “Natural Breaks (Jenks)”
  4. Numero di classi 10

Aggiungiamo manualmente una classificazione con min e max = 0 con opacità = 0%, in modo da rimuovere dalla mappa le sezioni con valore 0 o NULL.

Il risultato è una mappa che esprime il numero di abitanti censiti come “stranieri o apolidi” ogni kmq per ogni sezione ISTAT.

Print Friendly, PDF & Email