Wie filtere ich falsche GPS-Punkte?

11

Ich habe eine Datenbank mit GPS-Punkten. Es gibt keine Spuren, nur Punkte. Ich muss einen Wert für jeweils 100 Meter berechnen, aber manchmal hat GPS falsche Koordinaten angegeben, die weit von echten GPS-Punkten entfernt sind, und anstatt Werte für ein kleines Quadrat zu berechnen, muss ich sie für eine wirklich große rechteckige Fläche berechnen.

Was ist der beste Algorithmus, um falsche GPS-Punkte zu filtern?

Ich habe einen Screenshot gemacht, um zu verstehen:

! [http://content.screencast.com/users/smirnoffs/folders/Jing/media/94624331-db6a-4171-bed9-e2183f953a1d/gps_error.png]

smirnoffs
quelle
1
Ich würde ein kleines Vielfaches des durchschnittlichen Abstands des sich bewegenden Rahmens (z. B. 10 letzte Punkte) zwischen Punkten als Kriterium verwenden, um solche Ausreißer zu erkennen.
Lynxlynxlynx
Können Sie Ihre Methode genauer beschreiben? Ich habe eine Datenbank mit Punkten, sie sind in keiner Weise sortiert. Die Entfernung könnte also 2 Meter oder 500 Meter betragen. Einige Punkte sind jedoch sehr weit. Ich habe einen Screenshot gemacht, um Ihnen das Verständnis zu
erleichtern
2
Aha. In diesem Fall ist mein Ansatz nicht so gut. Ich würde stattdessen den nächsten Nachbarpunkt für jeden Punkt berechnen und dann die Ausreißer dort abschneiden.
Lynxlynxlynx
2
Der von @lynx vorgeschlagene zweite Ansatz würde gut mit den Probendaten funktionieren, insbesondere wenn die Ausreißererkennungsmethode gut ist. Sehen Sie Fragen zu Ausreißern auf unsere Statistik für Optionen. Beispielsweise werden unter stats.stackexchange.com/questions/213 viele kreative (und gültige) Ansätze vorgeschlagen .
whuber

Antworten:

3

Führen Sie Anselin Local Morans I gegen die Punkte und werfen Sie alles mit einem Z-Score unter -1,96 weg. Dies ist eine statistische Methode zum Auffinden räumlicher Ausreißer. Sie müssen sicherstellen, dass alle Punkte einen Wert haben, der sich auf ihre räumliche Position bezieht, um dies zu tun.

Bei der Überprüfung der Tools in 10.1 nach dem Kommentar von whuber wird mir jedoch klar, dass bei Verwendung von ArcGIS 10.1 das Tool zur Gruppierungsanalyse verfügbar ist, was genau das ist, was Sie tun möchten.

Ich denke, Sie möchten eine Gruppierungsanalyse mit einer räumlichen Einschränkung der Delaunay-Triangulation durchführen. Das Hindernis hierbei ist, dass Sie eine Anzahl von Partitionierungsgruppen benötigen, die gleich oder größer als die Anzahl der nicht verbundenen Gruppen ist (wenn einer der Ausreißer natürliche Nachbarn zueinander sind). Andernfalls erhalten Ausreißer ohne natürliche Nachbarn keine Gruppe aus der Gruppierungsanalyse.

Aufgrund dessen denke ich, dass die Delauney-Triangulation die Quelle eines Filteralgorithmus sein könnte, aber ich bin mir noch nicht sicher.

Ein weiteres Update: Nach dem Eingraben in Partition.py, dem Skript, mit dem das Gruppierungsanalyse-Tool ausgeführt wird, ist es meines Erachtens möglich, den dort enthaltenen Algorithmus für nicht verbundene Gruppen in Kombination mit dem NoNeighbors-Teil zu verwenden, obwohl ich Probleme habe, diesen Teil des Skript.

Blord-Castillo
quelle
(-1) Dies wirft garantiert ungefähr 1 von 40 Punkten weg, egal was passiert. Es ist nicht ratsam, einen solchen Test zur Erkennung von Ausreißern zu verwenden.
whuber
1
Dies gilt nicht, wenn auf reine räumliche Ausreißer getestet wird, sofern räumliche Ausreißer vorhanden sind. Wenn räumliche Ausreißer nicht existieren, haben Sie dieses Problem, aber wenn sie existieren, sollten nur diese Ausreißer in einen so niedrigen Z-Score fallen. Es hängt alles von der räumlichen Verteilung der Punkte ab.
Blord-Castillo
1
Fast: Wenn die Ausreißer selbst einen Cluster bilden, können Sie sie möglicherweise nicht vollständig erkennen. (Stellen Sie sich eine Situation vor, in der null oder offensichtlich schlechte Koordinaten automatisch (0,0) zugeordnet werden.) Ihr Kommentar zeigt, dass das Auffinden von Ausreißern schwierig sein kann und von der Art der Ausreißer abhängt: ob es eine oder mehrere geben kann; wie weit sie entfernt sein können; ob sie sich gruppieren können; usw. Im Allgemeinen funktionieren Statistiken, die Verteilungsannahmen treffen (wie diese Verwendung von Local Morans I), nicht so gut wie die robusten, nicht parametrischen Statistiken.
whuber
2
Ich habe über ein bestimmtes theoretisches Problem nachgedacht, bei dem Sie die "guten" GPS-Punkte und die gleiche Anzahl von "schlechten" GPS-Punkten übereinander an einer Ecke des Begrenzungsrahmens gestapelt haben. Ohne Kenntnis des Interessenbereichs für die "guten" Punkte können Sie statistisch nicht unterscheiden, welche Menge "gut" und welche "schlecht" ist. Dies kann ein Problem sein, das die manuelle Bestimmung von Interessengebieten erfordert.
Blord-Castillo
2
Das ist richtig: Sie haben eine bimodale multivariate Verteilung beschrieben. In solchen Fällen wird normalerweise entweder ein Mischungsmodell geschätzt oder ein Cluster-Algorithmus angewendet. Das Ergebnis ist, dass die Mischungs- / Clusterkomponenten getrennt werden, ohne jedoch eine von ihnen als "Ausreißer" zu kennzeichnen: Diese Pflicht muss dem Benutzer obliegen.
whuber
3

Dies könnte helfen, eine Liste der Ausreißer zu erhalten:

SELECT p1.point_id 
FROM p1 AS points, p2 AS points
WHERE p1.point_id <> p2.point_id AND
ST_Distance(p1.geom, p2.geom) > 10000

Hier wäre point_id der Primärschlüssel in Ihrer Punktetabelle. Die Entfernungsfunktion findet Punkte, bei denen der nächste größer als 10000 Meter ist. (Sie können natürlich jeden angemessenen Wert angeben)

Wenn das oben genannte funktioniert, wechseln Sie zu einer DELETE-Anweisung, etwa wie folgt:

DELETE FROM points WHERE point_id IN (
-- SELECT as above
SELECT ....
);
Micha
quelle
1
1. Die Punkte werden nicht sortiert. 2. Was ist, wenn der Fehler unter 10000 Metern liegt? Zum Beispiel 150 Meter?
Smirnoffs
1
Vielleicht habe ich nicht verstanden. Aus Ihrem Bild geht hervor, dass fast alle Punkte in einem Bereich zusammengefasst sind und eine sehr kleine Anzahl sehr weit entfernt ist. Ist das nicht das Problem? Wenn ein Punkt nur 150 Meter von einem anderen entfernt ist, woher wissen Sie, dass es sich um einen Ausreißer handelt?
Micha
1

Ich werde versuchen, eine praktischere Antwort zu geben, damit Sie Ihre Arbeit erledigen können. (Entschuldigung, wenn Sie nach einer Diskussion über Algorithmen suchen)

Szenario 1: Sie erwähnen "GPS-Punkte". Wenn Sie also Zugriff auf die ursprünglichen GPS-Wegpunkte haben, wird die Arbeit viel einfacher. Sie können Punkte mit hohem HDOP / VDOP oder der Anzahl der sichtbaren Satelliten wegwerfen - was den Fehler ursprünglich verursacht hätte. In einem kostenlosen Tool wie gpsbabel sind solche Filter integriert. http://www.gpsbabel.org/htmldoc-development/Data_Filters.html

Szenario 2: Sie haben einfach eine Reihe von Punkten. Das Problem besteht dann darin, räumliche Ausreißer zu erkennen. Es gibt viel Forschung in diesem Bereich und ich sehe viele Artikel zu diesem Thema aus einer Websuche. Wenn Sie Ihre Daten bereinigen möchten, können Sie den v.outlier-Algorithmus von GRASS verwenden, der in Ihrem Fall basierend auf dem von Ihnen freigegebenen Screenshot funktionieren sollte. http://grass.osgeo.org/gdp/html_grass63/v.outlier.html

räumliche Gedanken
quelle
Danke für den Kommentar. Leider habe ich nur Koordinaten. GPS war nur eine Koordinatenquelle und ich habe keinen Zugriff auf Original-GPS-Tracks.
Smirnoffs
-2

Ich denke, Sie haben Junk-Daten. Wenn Sie sich realistisch darum kümmern, dass einige der Daten falsch sind und Sie nicht jeden falschen Punkt anhand eines anderen Faktors zuverlässig identifizieren können, werden Ihre Analyse einige schlechte Daten enthalten.

Wenn dies wichtig ist, sollten Sie wahrscheinlich in Betracht ziehen, alles wegzuwerfen, die Grundursache herauszufinden (z. B. die schlechten GPS-Punkte stammen aus Mehrwegeausfällen), diese Grundursache zu beheben (z. B. Hinzufügen einer Choke-Antenne oder eines besseren GPS-Typs oder was auch immer die beste Lösung ist is) und anschließend die Datenerfassung wiederholen.

Wenn die fehlerhaften Daten keine Rolle spielen, verwenden Sie sie einfach und ignorieren Sie die Fehler.

BradHards
quelle