Identifizieren Sie mit QGIS Punkte in einem Shapefile, die keinen anderen Punkt innerhalb von x km haben

11

Dies ist wahrscheinlich eine naive Frage, aber ich habe als neuer Benutzer von QGIS Probleme.

Ich habe ein sehr großes Shapefile (275.000 Punkte, kann es aber bei Bedarf für eine schnellere Verarbeitung in etwa 10 Unterregionen aufteilen).

Ich möchte alle Punkte identifizieren, die keinen anderen Punkt innerhalb von 200 Metern haben, und dann jeden dieser Punkte mit dem Wert "einzigartig" in einem Feld der Datei codieren.

Für alle anderen Punkte, die Teil lokaler Cluster sind, möchte ich diese dann als "gruppiert" codieren.

Nachdem ich das erreicht habe, möchte ich zufällig nur einen für jeden Cluster auswählen, um ihn im Datensatz beizubehalten, und die anderen verwerfen.

Derzeit schaffe ich es nicht, Schritt 1 zu erreichen, daher wäre jede Unterstützung willkommen.

Leigh Bettenay
quelle

Antworten:

0

Sie können auch versuchen, sich mithilfe des NNJoin- Plugins in QGIS selbst zu verbinden.

Für jedes Merkmal der Eingabeebene wird das nächstgelegene Merkmal gefunden (außer sich selbst im Falle einer Selbstverknüpfung) und der Abstand und alle Attribute des nächstgelegenen Merkmals in das generierte Dataset aufgenommen. Es würde einige Zeit für Ihren Datensatz dauern (ich habe es mit einem Punktdatensatz mit etwa 175000 Funktionen versucht, und das dauert einige Minuten ...).

Håvard Tveite
quelle
9

Sie können Vektor> Analysewerkzeuge> Entfernungsmatrix und einen Join verwenden, um das zu erreichen, was Sie verlangen.

Ich werde die Schicht des QGIS-Beispieldatenflughafens als Beispiel verwenden. Dies ist ein kleiner Datensatz, daher bin ich mir nicht sicher, wie er mit einem Shapefile mit 275000 Punkten aussehen wird.

1. Erstellen Sie eine Entfernungsmatrix mit Ihrer Ebene als Ziel und Ziel.

Vergessen Sie nicht, "Nur die nächsten (k) Zielpunkte verwenden" anzukreuzen und auf 1 zu setzen.

Geben Sie hier die Bildbeschreibung ein

2. Öffnen Sie die CSV mit einer durch Trennzeichen getrennten Textebene

Wählen Sie "Komma" als Trennzeichen und legen Sie die Geometriedefinition als "Keine Geometrie" fest

Geben Sie hier die Bildbeschreibung ein

3. Erstellen Sie einen Join in der ursprünglichen Ebene mit der neu erstellten Tabelle

Geben Sie hier die Bildbeschreibung ein

4. Verwenden Sie den Feldrechner, um ein Feld mit den gewünschten Werten zu füllen

Aufgrund des Joins haben wir jetzt Zugriff auf die Entfernungstabellenwerte aus der Attributtabelle des Flughafens. Daher ist es ziemlich einfach, ein neues Feld zu erstellen und es abhängig von den Entfernungsmatrixwerten mit "gruppierten" und "eindeutigen" Werten zu füllen . Aufgrund meiner Beispieldaten habe ich den Wert 1200000 (1200 km) verwendet. Sie sollten ihn an Ihren Fall anpassen (200).

Geben Sie hier die Bildbeschreibung ein

Am Ende sollte Ihre Ebene ein neues Feld namens point_type mit unterschiedlichen Werten haben, je nach dem Mindestabstand zum nächsten Punkt.

Geben Sie hier die Bildbeschreibung ein

Alexandre Neto
quelle
Das sieht nach einer eleganten Lösung aus. Ich habe jedoch eine Komplikation. Ich weiß, dass es einige Punkte gibt, die IDENTISCHE Positionen haben (diese resultieren aus Namenssynonymen während der ursprünglichen Datenerfassung). In einem Fall habe ich 3 im selben Punkt identifiziert. Ich denke, Ihre Lösung geht (vernünftigerweise) davon aus, dass alle Punkte eindeutig lokalisiert sind. Gibt es eine offensichtliche Möglichkeit, meine Abdeckung zu überprüfen, um zuerst Punkte mit demselben Standort zu entfernen?
Leigh Bettenay
@LeighBettenay Wenn diese Antwort Ihre ursprüngliche Frage beantwortet, sollten Sie sie meiner Meinung nach akzeptieren (grünes Häkchen), um den Aufwand der Antwortenden zu belohnen und Ihre zusätzliche Anforderung als neue Frage zu recherchieren / zu stellen. +1 für eine tolle erste Frage!
PolyGeo
@PolyGeo Entschuldigung, ich bin brandneu in diesem Forum und kenne das Protokoll nicht. Gerne "grünes Häkchen" eine wundervolle Antwort, weiß aber leider nicht wie !!
Leigh Bettenay
Klicken Sie einfach auf das graue Häkchen unter der Abstimmung der Frage (linke Ecke der Frage). Vielen Dank
Alexandre Neto