Räumliche Abfragen ausführen (QGIS3)

Räumliche Abfragen sind das Herzstück vieler GIS-Analysen. Sie erlauben die Selektion von Objekten eines Layers in Abhängigkeit von der räumlichen Beziehung (überschneiden, beinhalten, berühren usw.) zu Objekten aus anderen Layern. In QGIS wird diese Funktionalität über die Verarbeitungswerkzeuge Nach Position selektieren und Nach Position extrahieren bereit gestellt.

Überblick über die Aufgabe

Wir werden mit 2 Layern der Stadt Melbourne in Australien arbeiten. Die Layer enthalten alle Pubs und Bars der Stadt sowie alle U-Bahn-Stationen. Unser Ziel ist es, alle Bars und Pubs in einem Umkreis von 500 Metern um eine U-Bahn-Station zu finden.

Weitere Fähigkeiten, die wir erlernen

  • Die Wahl der richtigen Projektion und die Reprojizierung von Vektordaten

  • Erstellung von Puffern

  • Die Arbeit mit dem Datenformat geopackage (.gpkg)

Beschaffung der Daten

Die Open-Data-Plattform der Stadt Melbourne bietet viele Datensätze über die Stadt an, die mit einem GIS verarbeitet werden können.

Download the Metro Train Stations with Accessibility Information dataset by Metro Trains Melbourne. Export the data in the Original format.

../../_images/data117.png

Download the Bars and pubs, with patron capacity dataset by City of Melbourne’s Census of Land Use and Employment (CLUE). Export the data as a CSV.

../../_images/data27.png

Der Einfachheit halber können wir eine Kopie der Datensätze unter folgenden Links herunterladen:

metro_stations_accessbility.zip

Bars_and_pubs__with_patron_capacity

Datenquelle: [CITYOFMELBOURNE]

Arbeitsablauf

  1. Wir suchen im QGIS-Browser den Datensatz metro_stations_accessbility.zip und erweitern ihn. Die Datei metro_stations_accessbility.shp ziehen wir in den Arbeitsbereich. Der neue Layer metro_stations_accessbility wird nun im Layer-Panel angezeigt.

../../_images/1137.png
  1. Der Datenlayer der Bars und Pubs liegt im CSV-Format vor. Um ihn in QGIS zu laden, wählen wir Layer ‣ Layer hinzufügen ‣ Getrennte Textdatei als Layer hinzufügen…. (Siehe Import von Tabellenblättern oder CSV-Dateien (QGIS3) für weitere Details zum Import von CSV-Dateien)

../../_images/2108.png
  1. In the Data Source Manager | Delimited Text dialog, browse and select the downloaded Bars_and_pubs__with_patron_capacity.csv file as File name. The X field and Y field columns should be auto selected to x coordinate and y coordinate respectively. Click Add.

../../_images/356.png

Bemerkung

QGIS saves the last-selected options for this dialog, so if you previously configured this dialog with other options, they may still be selected. Specifically, make sure the Record and Fields Options section has Number of header lines to discard option set to 0.

  1. Ein neuer Layer Bars_and_pubs__with_patron_capacity wird zum Layer-Panel hinzugefügt. Beide Eingabelayer sind im Koordinatenbezugssystem (KBS) EPSG:4326 WGS84. definiert. Um räumliche Analysen ausführen zu können, wird empfohlen, ein projiziertes Koordinatenbezugssystem (KBS) zu verwenden. Deshalb werden wir zunächst die Layer in ein geeignetes regionales KBS reprojizieren, welches Verzerrungen minimiert und uns erlaubt, mit Abstandseinheiten wie Metern anstelle geographischer Grade zu arbeiten. Dazu wählen wir Verarbeitung ‣ Werkzeugkiste.

../../_images/428.png
  1. Wir suchen das Werkzeug Vektoren allgemein ‣ Layer reprojizieren und starten es durch Doppelklick.

../../_images/526.png
  1. Wir wählen Bars_and_pubs__with_patron_capacity als Eingabelayer und betätigen die Schaltfläche KBS wählen neben Ziel KBS.

../../_images/626.png
  1. Bei einem projizierten Koordinatenbezugssystem für unsere Analyse sollte es sich um ein regionales KBS für das betreffende Gebiet handeln. Für Australien ist das Map Grid of Australia (MGA) 2020 ein UTM-basiertes Gittersystem, das für lokale und regionale Karten verwendet wird. Melbourne liegt in der UTM-Zone 55, sodass wir das KBS GDA 2020 / MGA zone 55 EPSG:7855` auswählen können.

../../_images/725.png

Bemerkung

Wenn man sich nicht sicher ist, welches lokale KBS für das Arbeitsgebiet passend ist, kann man das KBS mit einer UTM-Zone basierend auf dem geographischen Datum WGS84 verwenden. Die UTM-Zone des Arbeitsgebietes kann man mit Hilfe der website UTM Grid Zones of the World herausfinden.

  1. Als nächstes betätigen wir die Schaltfläche neben Reprojiziert und wählen Speichere in GeoPackage.... Geopackage ist das empfohlene offene Format für räumliche Daten und das Standardaustauschformat in QGIS3. Eine einzelne GeoPackage-Datei (.gpkg) kann mehrere Vektor- und Rasterlayer enthalten.

../../_images/825.png
  1. Wir nennen das GeoPackage spatialquery und betätigen die Schaltfläche Speichern.

../../_images/925.png
  1. Bei der Abfrage des Layernamens geben wir bars_and_pubs ein und bestätigen mit OK. Dann betätigen wir die Schaltfläche Starte, um den Layer zu reprojizieren.

../../_images/1032.png
  1. Das Fenster zeigt nach Ausführung des Algorithmus den Protokoll-Tab. Die Erstellung des Ausgabelayers bars_and_pubs wird hier angezeigt.

../../_images/1138.png
  1. Jetzt werden wir den Layer metro_stations_accessbility reprojizieren. Dazu wechseln wir im Fenster Layer reprojizieren zurück zum Tab Parameter. Wir wählen metro_stations_accessbility als Eingabelayer. Das Ziel KBS lassen wir unverändert. Dann betätigen wir die Schaltfläche neben Reprojiziert und wählen Speichere in GeoPackage.... Wir wählen dieselbe Ausgabedatei spatialquery. (Eine GeoPackage-Datei kann mehrere Layer enthalten, sodass wir auch den neuen Layer in derselben Datei speichern können.) Wir geben metro_stations als Layername ein und betätigen die Schaltfläche Starte.

../../_images/1233.png
  1. Zurück im QGIS-Hauptfenster sehen wir 2 neue Layer im Layer-Panel: bars_and_pubs und metro_stations. Die Sichtbarkeit der Ausgangslayer können wir ausschalten. Jetzt führen wir die räumliche Abfrage aus. Da wir die Bars und Pubs in einem Umkreis von 500 m um die U-Bahnstationen suchen, ist der erste Schritt die Erstellung eines Puffers um die U-Bahnstationen. Der Puffer repräsentiert unser Suchgebiet. Im Fenster Verarbeitungswerzeuge suchen wir Vektorgeometrie ‣ Puffer und starten den Algorithmus per Doppelklick.

../../_images/1331.png
  1. Im Dialogfenster Puffer wählen wir metro_stations als Eingabelayer. Wir setzen den Abstand auf 500 Meter. Die Ausgabe speichern wir unter Gepuffert im selben GeoPackage spatialquery und geben metro_stations_buffers als Layername an. Wir starten die Verarbeitung mit der Schaltfläche Starte.

../../_images/1429.png
  1. Wir sehen den neu hinzugefügten Layer metro_stations_buffers im Layer-Panel. Nun können wir ermitteln, welche Punkte des Layers bars_and_pubs innerhalb der Polygone des Layers metro_stations_puffer liegen. Unter Verarbeitungswerkzeuge suchen wir Vektorauswahl ‣ Nach Position extrahieren und starten den Algorithmus per Doppelklick.

../../_images/1524.png

Bemerkung

Nach Position extrahieren erstellt einen neuen Layer mit den passenden Objekten der räumlichen Abfrage. Wenn man Objekte nur auswählen möchte, genügt das Tool Nach Position selektieren.

  1. Im Dialogfenster Nach Position extrahieren wählen wir bars_and_pubs unter Objekte extrahieren aus. Unter Ort der Objekte wählen wir schneidet. Bei Durch Vergleich mit Objekte aus wählen wir metro_stations_puffer. Die Ausgabe speichern wir im GeoPackage spatialquery als Layer selected und betätigen dann die Schaltfläche Starte.

../../_images/1622.png
  1. Nach Abschluss der Verarbeitung wird der Layer selected im Layer-Panel angezeigt. Es ist zu beachten, dass dieser Layer nur die Punkte enthält, die innerhalb der Pufferpolygone liegen.

../../_images/1724.png
  1. Unsere Analyse ist abgeschlossen. Wir bemerken vielleicht, dass die Pufferpolygone oval sind. Das liegt daran, dass unser Projekt-KBS noch auf EPSG:4326 WGS84 eingestellt ist. Um die Ergebnisse besser zu visualisieren, können wir unter Projekt ‣ Eigenschaften ‣ KBS das KBS GDA 2020 / MGA zone 55 EPSG:7855 wählen, welches wir auch für die Analyse verwendet haben. Nachdem wir das KBS eingestellt haben, erscheinen die Puffer in ihrer korrekten Form.

../../_images/1821.png

If you want to give feedback or share your experience with this tutorial, please comment below. (requires GitHub account)