Tabellen verbinden (QGIS3)¶
Nicht alle Datensätze, die wir nutzen wollen, liegen als räumliche Daten vor. Oftmals kommen die Daten als Tabellen oder Tabellenblatt. Man muss sie mit den schon vorliegenden räumlichen Daten verbinden, um sie für Analysen zu nutzen. Dieses Verbinden ist bekannt unter Table Join. Es wird mit Hilfe des Algorithmus Attribute nach Feldwert
ausgeführt.
Aufgabenübersicht¶
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.
Weitere Fähigkeiten, die wir erlernen¶
CSV-Datein ohne räumliche Information in QGIS einladen
Verwendung der DB-Verwaltung zur Ausführung von SQL-Abfragen zur Erstellung von zusammengefassten Statistiken
Beschaffung der Daten¶
Das US Census Bureau bietet TIGER/Line Shapedateien an. Wir können auf der FTP Seite eine Shapedatei der Teilgebiete der Bevölkerungszählung Kaliforniens herunterladen. Wir laden die Datei Census Tracts for California herunter.
American FactFinder ist ein Verzeichnis aller Daten der Bevölkerungszählungen der USA. Wir nutzen Advanced Search und suchen nach Topic - Basic Count/Estimate und Geographies - All Census Tracts in California, um eine angepasste CSV-Datei zu erstellen und herunterzuladen. Diese Anleitung nutzt die Daten TOTAL POPULATION | 2017 ACS 5-year estimates
.

Der Einfachheit halber, können wir eine Kopie beider Datensätze unter folgenden links herunterladen:
Datenquelle [TIGER] [USCENSUS]
Arbeitsablauf¶
Gehe im QGIS Browser zur Datei
tl_2018_06_tract.zip
und erweitere sie. Wähle die Dateitl_2018_06_tract.shp
und ziehe sie in den Arbeitsbereich.
Wir sehen, dass der Layer
tl_2018_06_tract
im Layer Bereich geladen wurde. Dieser Layer enthält die Grenzen der Teilgebiete der Bevölkerungszählung in Kalifornien. Klicke mit der rechten Maustaste auf den Layertl_2018_06_tract
und wähle Attributtabelle öffnen.
Wir sehen uns die Attribute des Layers an. Um eine Tabelle mit diesem Layer zu verbinden, benötigen wir ein eindeutiges gemeinsames Attribut für jedes Feature. In diesem Fall enthält das Feld
GEOID
eine eindeutige Kennung für jedes Teilgebiet. Es kann verwendet werden, um diesen Layer mit einem anderen Layer oder einer Tabelle zu verbinden, die dieselbe ID verwenden.
Wir entpacken die Datei
ACS_17_5YR_B01003.zip
und öffnen die CSV-DateiACS_17_5YR_B01003_with_ann.csv
in einem Texteditor. Wir bemerken, dass jede Zeile Informationen über ein Teilgebiet und dieselbe eindeutige ID wie im vorhergehenden Arbeitsschritt enthält. Wir sehen, das die ID im FeldGEO.id2
in der CSV-Datei hinterlegt ist. Wir sehen außerdem, dass die SpalteHD01_VD01
Einwohneranzahlen für alle Teilgebiete enthält.
Bevor wir die CSV-Datei importieren, müssen wir eine kleine Änderung vornehmen. Der QGIS CSV-Import erwartet, dass die erste Zeile einer Datei die Spaltenköpfe und alle anderen Zeilen die Daten dazu enthalten. Bei dieser Datei sind in der Zeile 2 weitere Spaltenköpfe enthalten. Wir löschen diese Zeile und speichern die Datei.
Jetzt können wir die CSV-Datei in QGIS importieren. Gehe zu
.
Klicke im Fenster Datenquellenverwaltung auf den Knopf … und wähle die CSV-Datei aus. Achte darauf unter Dateiformat den Punkt bei CSV (kommagetrennte Werte) zu setzen. Da wir eine Tabelle ohne geometrische Informationen importieren, müssen wir die Option Keine Geometrie (nur Attributtabelle) auswählen. Wir vergewissern uns, dass die Vorschau der Beispieldaten richtig ist und klicken auf Hinzufügen und anschließend auf Schließen.
Die CSV-Datei wird nun als Tabelle in QGIS importiert und erscheint als
ACS_17_5YR_B01003_with_ann
im Layer Bereich. Jetzt können wir die Verbindung mit der Tabelle herstellen. Gehe zu .
Zuerst müssen wir ein Einstellung der Werkzeugkiste ändern. Klicke auf den Knopf Optionen.
Setze unter dem Punkt Verarbeitung den Haken bei Benutze Dateinamen als Layernamen. Diese Option macht die Ausgabelayer der Verarbeitungswerkzeuge leichter und intuitiver nutzbar. Klicke auf OK.
Suche in den Verarbeitungswerkzeugen den Algorithmus und klicke zum Öffnen doppelt darauf.
Wir wählen im Dialogfenster Attribute nach Feldwert den Eintrag
tl_2018_06_tract
als Eingabelayer undGEOID
als Tabellenspalte. Als Eingabelayer 2 verwenden wirACS_17_5YR_B01003_with_ann
und als Tabellenfeld 2 das AttributGEO.id2
. Wir lassen die anderen Optionen unverändert und klicken zur Wahl der Ausgabedatei auf den Knopf … und dann aufSpeichere in GeoPackage...
.
Wir vergeben
joined.gpkg
als Name für das GeoPackage undjoined
als Name für den Ausgabelayer. Klicke auf Starte.
Nachdem die Verarbeitung abgeschlossen ist, vergewissern wir uns, dass der Algorithmus erfolgreich abgearbeitet wurde und klicken auf Schließen.
Wir sehen nun einen neuen Layer
joined
im Bereich Layer. Die Felder der CSV-Datei sind mit dem Layer der Teilgebiete der Bevölkerungszählung verbunden. Wir können die Verarbeitungswerkzeuge jetzt schließen. Klicke mit der rechten Maustaste auf den Layerjoined
und wähle Attributtabelle öffnen.
Wir sehen zusätzliche Felder einschließlich des Feldes
HD01_VD01
, das die Bevölkerungsschätzung enthält.
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.
Bemerkung
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 diving 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.