Realizzare unioni tabellari (QGIS3)¶
Non tutti i dataset che utilizziamo nel nostro lavoro si presentano come degli shapefile o, comunque, in formato spaziale. I dati possono presentarsi in forma di tabella o all’interno di un foglio di calcolo (e.g. MS Excel) e potrebbe essere necessario unirli con i nostri dati spaziali per utilizzarli nelle nostre analisi. Questa operazione è conosciuta come Join/Unione Tabellare e questo esercizio mostrerà come realizzarla in QGIS.
Descrizione del compito¶
We will use a shapefile of census tracts for California and population data table from US Census Bureau to create a population density map for california.
Altri aspetti che avremo modo di apprendere nel corso dell’esercizio¶
Caricare file CSV che non contengono alcuna geometria in QGIS.
Usare il DB Manager per fare interrogazioni con SQL per calcoloare statistiche aggregate (a gruppi).
Ottenere i dati necessari.¶
US Census Bureau provides TIGER/Line Shapefiles. Potete visitare il sito FTP site e scaricare i confini amministrativi. Scarica Census Tracts for California .
Americal FactFinder è un archivio contenente tutti i dati relativi ai censimenti che si sono svolti negli Stati Uniti. Potete utilizzare la Advanced Search (ricerca avanzata) e interrogare per Topic - Total Population e Geographies - All Census Tracts in California per creare un CSV personalizzato e scaricarlo. In questo esercizio usiamo i dati TOTAL POPULATION | 2017 ACS 5-year estimates
.

Per comodità, potete scaricare direttamente una copia di entrambi i dataset dal seguente link:
Fonte Dati [TIGER] [USCENSUS]
Procedimento¶
Individuate il file appena scaricato
tl_2018_06_tract.zip
usando il browser di QGIS e fate doppio click sul filetl_2018_06_tract.shp
.
Si vedrà un nuovo layer
tl_2018_06_tract
caricato nel pannello: Layers. Rappresenta i limiti catastali in California. Tasto destro sutl_2018_06_tract
e selezionare Open Attribute Table (Apri tabella attributi).
Guardate la tabella attributi. Per unire una tabella a questa tabella degli attributi del livello, dobbiamo trovare una colonna con valori univoci in comune con la tabella da unire. In questo caso la colonna
GEOID
è unica e contiene gli ID delle aree, e può essere usata come collegamento ad un altra tabella con una colonna contenente gli stessi ID.
Estraete dal file
ACS_17_5YR_B01003.zip
il fileACS_17_5YR_B01003_with_ann.csv
ed apritelo con un editor di testo (blocco note, o meglio ancora un editor più avanzato come Notepad++). Noterete che questa tabella contiene informazioni aggiuntive che si possono unire usando una colonna con gli ID. Questa colonna si chiamaGEO.id2
nel file CSV. Noterete anche che la colonnaHD01_VD01
contiene il numero di abitanti all’interno dell’area.
Prima di importare questo file CSV dobbiamo fare una piccola modifica. QGIS si aspetta che la prima colonna contenta l’intestazione (nome) delle colonne, ed il resto delle righe i dati. Questo file contiene, nella riga 2, ulteriori etichette delle colonne. Questa riga va cancellata.
Adesso siamo pronti a importare il file CSV in QGIS. Andate su
.
Nella finestra Data Source Manager (Gestore delle sorgenti dati) cliccate il pulsante … e selezionate il file CSV. Assicuratevi di scegliere nella sezione File format (Formato file) il CSV (valori separati da virgole), oppure delimitatori personalizzati con il corretto carattere delimitatore (la virgola). Dal momento che abbiamo importato questo file come una tabella, dobbiamo specificare che il nostro file non contiene dati geometrici (coordinate). Selezionate l’opzione No geometry (solo tabella degli attributi). Fare quindi click su OK.
Il livello importato dal file CSV appare con il nome
ACS_17_5YR_B01003_with_ann
nel pannello Layers. Ora siamo pronti per eseguire l’unione tra tabelle. Andate su (Strumenti di processing).
Prima modifichiamo un’opzione del Processing Toolbox (Gestore processi). Cliccate il pulsante Options (opzioni).
Nella sezione Processing Options (Opzioni Processi) selezionate l’opzione Use filename as layer name (usa il nome del file come nome del layer). Quando usate degli strumenti dal Gestore dei Processi (Processing Toolbox), questa opzione farà si che i nomi dati ai risultati e aggiunti al pannella Layer sia più intuitivo. Cliccate OK.
Tornando nel Processing Toolbox (Gestore dei processi), cerca il modulo (unisci attributi secondo il valore del campo) e fai doppio click per aprirlo.
Nella finesetra Join Attributes by Field Values seleziona
tl_2018_06_tract
come Input layer (Layer di ingresso) eGEOID
come Table field (Campo tabella). SelezionareACS_17_5YR_B01003_with_ann
come Input layer 2 (Vettore in ingresso 2) eGEO.id2
come Table field 2 (Campo tabella 2). Lascia altre opzioni ai loro valori predefiniti e clicca il pulsante … per selezionare il file che sarà creato. SelezionaSave to GeoPackage...
(Salva come GeoPackage).
Nominare il file GeoPackage come
joined.gpkg
ed il layerjoined
. Clicca Run (esegui).
Verifica che il processo sia terminato senza problemi e clicca Close.
Vedrete il nuovo livello
joined
caricato nel pannello Layers . A questo punto la tabella attributi contiene le colonne delle due tabelle. Potete chiudere Processing Toolbox (Gestore dei Processi). Fate tasto detro sul livellojoined
e selezionate Open Attribute Table (Apri tabella attributi).
Vedrete una nuova serie di colonne, ad esempio la colonna
HD01_VD01
con il numero di residenti nell’area.
Now that we have the population data in the census tracts layer, we can style it to create a visualization of population density distribution. Select the
joined
layer and click the Open the Layer Styling Panel button.
In the Layer Styling panel, select
Graduated
from the drop-down menu. As we are looking to create a population density map, we want to assign different color to each census tract feature based on the population density. We have the population in the HD01_VD01 field, but we don’t have population density in any fields to select as the Value. Fortunately, QGIS allows us to input an expression here. Click Expression button.
Nota
When creating a thematic (choropleth) map such as this, it is important to normalize the values you are mapping. Mapping total counts per polygon is not correct. It is important to normalize the values dividing by the area. If you are displaying totals such as crime, you can normalize them by dividing by total population, thus mapping crime rate and not crime. Learn more
Enter the following expression to calculate the population density.
$area
calculates the area of the feature in square meters. We then convert it to square miles and calculate the population density with the formula Population/Area. Click OK.
"HD01_VD01"/ (0.386*$area/1e6)![]()
Back in the Layer Styling Panel, choose a color ramp of your choice and click Classify. You can adjust the class ranges to be more appropriate to the region.
The visualization feels a bit cluttered because of the polygon borders. Click on the dropdown next to Symbol. Select Simple fill and check Transparent stroke.
Now we have a nice looking information visualization of population density in California.