Nächster Nachbar Analyse (QGIS3)¶
GIS ist sehr nützlich, um räumliche Beziehungen zwischen Features zu analysieren. Eine solcher Analysen ist die Ermittlung welche Features am nächsten zu einem anderen gegebenen Feature liegen. Es gibt mehrere Wege, solch eine Analyse in QGIS durchzuführen. In dieser Anleitung erkunden wir die Tools Abstand zum nächsten Knoten und Distanzmatrix, um die Nächster Nachbar Analyse durchzuführen.
Aufgabenübersicht¶
Zur gegebenen Lage aller bekannten signifikanten Erdbeben, finden wir den nächsten bewohnten Ort.
Weitere Fähigkeiten, die wir erlernen.¶
Benutzung des Geometriegenerators um dynamisch Linien aus einem Mehrfachpunktlayer zu erzeugen.
Beschaffung der Daten¶
Als Layer der bedeutenden Erdbeben verwenden wir die Daten Significant Earthquake Database des nationalen geophysikalischen Datenzentrums der NOAA. Lade folgende Daten herunter: tab-delimited earthquake data.
Bei Natural Earth findet man einen schönen Datensatz der bewohnten Orte: Populated Places. Lade folgenden Datensatz herunter: simple (less columns) dataset.
Der Einfachheit halber können wir beide Datensätze unter folgenden links herunterladen:
ne_10m_populated_places_simple.zip
Datenquelle: [NGDC] [NATURALEARTH]
Arbeitsablauf¶
Finde die Datei
ne_10m_populated_places_simple.zip
im Browser Bereich und erweitere sie. Ziehe die Dateine_10m_populated_places_simple.shp
in den Arbeitsbereich.
Wir sehen den neuen Layer
ne_10m_populated_places_simple
der im Layer Bereich angezeigt wird. Dieser Layer enthält Punkte für die bewohnten Orte. Jetzt werden wir den Erdbebenlayer laden. Dieser Layer liegt als Tab Serepated Values (TSV) Textdatei vor. Um diese Datei zu laden, klicken wir auf den Knopf Datenquellenverwaltung öffnen in der Datenquellenverwaltungsleiste. Man kann alternativ die Tastenkombination Ctrl + L verwenden.
Klicke auf den Knopf … neben File name und gehe zu der heruntergeladenen Datei
signif.txt
. Nach dem Laden sollten die Felder Dateiformat und Geometriedefinition automatisch mit den richtigen Werten gefüllt sein. Klicke auf Hinzufügen und danach auf Schließen.
Zoome hinein und untersuche beide Datensätze. Jeder gelbe Punkt steht für ein signifikantes Erdbeben und jeder rote Punkt für einen bewohnten Ort. Unser Ziel ist es, für jeden Punkt aus dem Erdbebenlayer den nächsten Punkt aus dem Layer der bewohnten Orte zu finden.
Bevor wir die Analyse beginnen, müssen wir unsere Eingangsdaten vorbereiten. Der Layer
signif
enthält viele Einträge mit einer ungültigen Geometrie. Diese Einträge wurden mit einer NULL Geometrie importiert. Diese Einträge entfernen wir als Erstes. Wir gehen zu .
Wir suchen das Werkzeug
und klicken doppelt darauf, um es zu staten.
Wähle
signif
als Eingabelayer und klicke auf Starte. Nachdem der Prozess abgeschlossen ist, klicken wir auf Schließen.
Wir sehen nun einen neuen Layer
Nicht leere Geometrien
im Layer Bereich. Wir werden diesen Layer anstelle des originalensignif
Layers für die weiteren Analysen verwenden. Entferne den Haken beim Layersignif
im Layer Bereich, um ihn auszublenden. Jetzt können wir mit der Nächster Nachbar Analyse beginnen. Suche das Werkzeug und klicke doppelt darauf, um es zu starten.
Bemerkung
Wenn man einen Punktlayer als Ausgabe benötigt, kann man stattdessen das Tool Abstand zum nächsten Knoten (Punkte) verwenden.
Im Dialogfenster Abstand zum nächsten Knoten (Linie zu Knoten) wählen wir
Nicht leere Geometrien
als Quellpunktlayer. Wählene_10m_populated_places_simple
als Zielnabenlayer. Wählename
als Nabenlayernamensattribut. Das Tool wird außerdem die Luftliniendistanz zwischen bewohntem Ort und dem nächsten Erdbeben berechnen. SetzeKilometer
als Maßeinheit ein. Klicke auf Starte. Nachdem der Prozess beendet ist , klicke auf Schließen.
Zurück im QGIS Hauptfenster sehen wir einen neuen Linienlayer
Knotenabstand
der im Layer Bereich angezeigt wird. Dieser Layer enthält Linienfeatures, die jeden Punkt eines Erdbebens mit der am nächsten gelegenden Ortschaft verbinden. Klicke mit der rechten Maustaste auf den LayerKnotendistanz
und wähle Attributtabelle öffnen.
Wenn man in der Tabelle ganz nach rechts scrollt, sieht man 2 neue Attributspalten: HubName und HubDist. Dabei handelt es sich um den Namen und den Abstand der am nächsten zu einem Erdbeben gelegenen Ortschaft.
Unsere Analyse ist nun abgeschlossen. Wir schauen uns jetzt ein anderes Tool an, das etwas ähnliches tut. Distanzmatrix ist ein mächtiges Werkzeug, das nicht nur den Abstand zum nächesten Punkt, sondern zu allen Punkten eines anderen Layers bestimmt. Wir können das Tool als Alternative zum Werkzeug Abstand zum nächsten Knoten verwenden. Wir entfernen den Haken beim Layer
Knotenabstand
um ihn auszublenden. Gehe zum Werkzeug .
Im Dialogfenster Distanzmatrix setzen wir
Nicht leere Geometrien
als Eingabepunktlayer undI_D
als Eindeutiges Schlüsselfeld der Eingabe. Als Zielpunktlayer verwenden wirne_10m_populated_places_simple
und als Eindeutiges Schlüsselfeld des Ziels wählen wirname
. Als Typ der Ausgabematrix wählen wirLineare (N*k x 3) Distanzmatrix
. Entscheidend ist es, den Wert für Nur (k) nächste Zielpunkte verwenden auf1
zu setzen, damit für die Ausgabe nur der nächste Nachbar ermittelt wird. Klicke auf Starte, um die Distanzmatrix zu berechnen. Klicke nach Ende der Berechnung auf Schließen.
Nachdem die Berechnung abgeschlossen wurde, wird ein neuer Layer
Distanzmatrix
geladen. Beachte, dass die Ausgabedatei eine sogenannte MultiPoint Geometrie besitzt. Jedes Feature besteht aus 2 Punkten - Quelle und Ziel. Öffne die Attributtabelle des Layers. Wir sehen, dass für jedes Feature eine Zuordnung des nächsten bewohnten Ortes zu einem Erdbeben erfolgt ist. Beachte, dass die Distanz in einer Einheit entsprechend des KBS des Layers (Grad) angegeben ist.
An dieser Stelle können wir die Ausgabedatei in einem Format unserer Wahl speichern. Klicke mit der rechten Maustaste auf den Layer und wähle
. Zur besseren Visualisierung des Ergebnisses können wir auf einfache Weise eine Nabe-Speiche-Darstellung erzeugen. Klicke mit rechten Maustaste auf den LayerDistanzmatrix
und wähle Eigenschaften.
Wir gehen im Dialogfenster Layereigenschaften zum Punkt Symbolisierung und klicken auf
Einfache Markierung
und wählenGeometriegenerator
als Symbollayertyp. Wir stellenLineString / MultiLineString
als Geometrietyp ein und klicken auf den Ausdruck Knopf.
Hier können wir einen Ausdruck verwenden, der die 2 Punkte der Multi-point-Features mit einer Linie verbindet. Gebe folgenden Ausdruck ein.
make_line(point_n( $geometry, 1), point_n( $geometry, 2))![]()
Zurück im Symbolisierungs Bereich können wir den Stil der Linien an unsere Vorstellungen anpassen. Klicke danach auf OK.
Wir sehen, dass der Layer
Distanzmatrix
jetzt mit Linien anstelle von Punkten dargestellt wird. Wir brauchten dafür keinen neuen Layer erstellen. Der Layer besteht immer noch aus einer MultiPoint Geometrie. Die Darstellung als Linien erfolgt dynamisch basierend auf dem verwendeten Ausdruck.