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.

../../_images/data13.png

Der Einfachheit halber, können wir eine Kopie beider Datensätze unter folgenden links herunterladen:

tl_2018_06_tract.zip

ACS_17_5YR_B01003.zip

Datenquelle [TIGER] [USCENSUS]

Arbeitsablauf

  1. Gehe im QGIS Browser zur Datei tl_2018_06_tract.zip und erweitere sie. Wähle die Datei tl_2018_06_tract.shp und ziehe sie in den Arbeitsbereich.

../../_images/1104.png
  1. 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 Layer tl_2018_06_tract und wähle Attributtabelle öffnen.

../../_images/259.png
  1. 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.

../../_images/337.png
  1. Wir entpacken die Datei ACS_17_5YR_B01003.zip und öffnen die CSV-Datei ACS_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 Feld GEO.id2 in der CSV-Datei hinterlegt ist. Wir sehen außerdem, dass die Spalte HD01_VD01 Einwohneranzahlen für alle Teilgebiete enthält.

../../_images/421.png
  1. 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.

../../_images/521.png
  1. Jetzt können wir die CSV-Datei in QGIS importieren. Gehe zu Layer ‣ Layer hinzufügen ‣ Textdatei als Layer importieren….

../../_images/621.png
  1. 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.

../../_images/720.png
  1. 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 Verarbeitung ‣ Werkzeugkiste.

../../_images/820.png
  1. Zuerst müssen wir ein Einstellung der Werkzeugkiste ändern. Klicke auf den Knopf Optionen.

../../_images/920.png
  1. 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.

../../_images/1020.png
  1. Suche in den Verarbeitungswerkzeugen den Algorithmus Vektoren allgemein ‣ Attribute nach Feldwert und klicke zum Öffnen doppelt darauf.

../../_images/1124.png
  1. Wir wählen im Dialogfenster Attribute nach Feldwert den Eintrag tl_2018_06_tract als Eingabelayer und GEOID als Tabellenspalte. Als Eingabelayer 2 verwenden wir ACS_17_5YR_B01003_with_ann und als Tabellenfeld 2 das Attribut GEO.id2. Wir lassen die anderen Optionen unverändert und klicken zur Wahl der Ausgabedatei auf den Knopf und dann auf Speichere in GeoPackage....

../../_images/1221.png
  1. Wir vergeben joined.gpkg als Name für das GeoPackage und joined als Name für den Ausgabelayer. Klicke auf Starte.

../../_images/1320.png
  1. Nachdem die Verarbeitung abgeschlossen ist, vergewissern wir uns, dass der Algorithmus erfolgreich abgearbeitet wurde und klicken auf Schließen.

../../_images/1419.png
  1. 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 Layer joined und wähle Attributtabelle öffnen.

../../_images/1518.png
  1. Wir sehen zusätzliche Felder einschließlich des Feldes HD01_VD01, das die Bevölkerungsschätzung enthält.

../../_images/1617.png
  1. 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.

../../_images/1718.png
  1. 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.

../../_images/1816.png

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

  1. 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)
../../_images/1914.png
  1. 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.

../../_images/2010.png
  1. 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.

../../_images/2116.png
  1. Now we have a nice looking information visualization of population density in California.

../../_images/2213.png
comments powered by Disqus