Verbinden Sie die Attribute der Punkt- und Linienebene nach Ort (nächster Abstand) in QGIS

13

Mein Problem ist das folgende: Ich habe eine Linie shp (Zielebene) und eine Punkt-shp (Verbindungsebene). Die zweite (Punktebene) enthält ein Attribut, das ich mit einer Linienebene verbinden möchte, basierend auf dem nächsten Abstand zur Linie. Punkte und Linien schneiden sich nicht

Ich kann dies mit ArcGIS und räumlichem Join tun (Übereinstimmungsoption: am nächsten), aber ich weiß nicht, wie ich dies in QGIS erreichen kann.

Miha Požauko
quelle
3
Es gibt ein Tool, mit dem Sie nach Standort verbinden können, aber es gibt keine Option "am nächsten". Ich weiß nicht, ob es eine Problemumgehung gibt. Im Allgemeinen bewerten Sie bitte, um die Entwicklung Ihrer fehlenden, bevorzugten Optionen / Tools zu unterstützen. Auf diese Weise können Benutzer auch dazu beitragen, dass diese Software wächst.
Giovanni Manghi

Antworten:

8

Ich glaube nicht, dass es dafür eine 'Kern'-QGIS-Funktion gibt. Installieren Sie jedoch das MMQGIS-Plugin und verwenden Sie das Tool "Hub-Abstand". Wählen Sie Ihre Punkte als Ebene "Quellpunkte" und Ihre Linien als Ebene "Ziel-Hubs" und setzen Sie "Ausgabeformtyp" auf "Linie zu Hub". Dadurch erhalten Sie ein Shapefile von Linien (mit Länge), die die nächstgelegenen Features verbinden. Praktischerweise wird der Attributtabelle auch die ID des nächstgelegenen Features hinzugefügt.

Bearbeiten / Kommentieren: Dieser Ansatz funktioniert gut, wenn weniger Punkte als Linien vorhanden sind oder wenn eine Eins-zu-Eins-Situation von Linie zu Punkt vorliegt. Mehr Punkte als Linien zu haben, erschwert die Sache. Das Tool "Hub-Abstand" fügt der Punktattributtabelle die ID des Linien-Features als "HubName" sowie den Abstand zwischen dem Punkt und dem Mittelpunkt der Linie als "HubDist" hinzu. Wenn es mehr Punkte als Linien gibt, ist zusätzliche Arbeit erforderlich, um innerhalb jeder Teilmenge von Punkten (diese mehreren Datensätze, die mit jedem Linienknoten verknüpft sind) zu bestimmen, welcher dieser Punkte jeder Linie am nächsten liegt und / oder welcher mit der gewünschten Menge von Attribute, die mit der Linie verbunden werden sollen.

Darren Cope
quelle
Dies sollte als Antwort markiert werden, vorbehaltlich einer geringfügigen Änderung der "Linien" v "Punkte"
Willy
1
"Nabenabstand" ist nicht das richtige Werkzeug, wenn "nächstgelegener Abstand zur Linie" das Kriterium ist. Der mmqgis-Code zeigt, dass der Nabenabstand eine Annäherung an die "Naben" -Geometrie verwendet. Die Abstandsberechnung (mmqgis_distance) verwendet zwei Punkte als Parameter. Hier ist der Code, der die Annäherung der Hub-Geometrie in mmqgis_library.py vornimmt: "feature.geometry (). BoundingBox (). Center ()". Dies bedeutet, dass anstelle der realen Geometrie die Mitte des Begrenzungsrahmens der Geometrie verwendet wird. Wenn also "nächstgelegener Abstand zur Linie" das Kriterium sein soll, sind GRASS v.distance oder das NNJoin-Plugin besser geeignet.
Håvard Tveite
5

Hierfür kann die Funktion GRASS v.distance verwendet werden. In QGIS können Sie über das GRASS-Plugin auf die Funktion zugreifen (die Verarbeitungsversion funktioniert derzeit nicht). Das NNJoin QGIS-Plugin ist möglicherweise eine einfachere Alternative.

Håvard Tveite
quelle
3

Das NNJoin Plugin hat mich nie im Stich gelassen und funktioniert gut mit großen Datenmengen .

Plugins> Installieren: NNJoin> NNJoin> Eingabeebene auswählen und Ebene verbinden> Klicken Sie dann auf Verbinden.

Untersuchen Sie die Ergebnisse der neuen Ausgabeebene mit der Attributtabelle. Warnung: Stellen Sie sicher, dass beide Ebenen dieselbe räumliche Projektion verwenden, da sonst die Ergebnisse leer sind.

Matthew Bayly
quelle
2

Im Jahr 2019 ist dies möglicherweise mit dem QGIS 3 Zanzibar-Tool 'Attribute nach nächstem verbinden' möglich. Mit diesem Tool können Sie das nächstgelegene Feature finden und ausgewählte Attribute verbinden. Es ist auch möglich, einen Eins-zu-Viele-Join durchzuführen, wenn Sie die maximale Entfernung und die maximale Anzahl der nächsten Nachbarn angeben.

Mauegraus
quelle