Annäherung der GPS-Koordinaten für einen Punkt aus n erwarteten Orten

9

Ich versuche, die Koordinaten meines Aufmerksamkeitspunkts zu finden (Punkt X, blau markiert). Ich habe das GPS-Gerät meines Autos verwendet, um die Koordinaten zu erfassen, je nachdem, wo ich mein Fahrzeug bei jedem Besuch von Punkt x geparkt habe. Nachdem ich diese Übung 16 Tage lang absolviert hatte, gelang es mir, 16 Koordinatensätze zu erhalten, die sich um meinen Blickwinkel verteilten.

Nachdem ich diese Koordinaten auf der Karte aufgezeichnet hatte, stellte ich Folgendes fest: Zweimal oder dreimal von zehn Mal gab mein GPS-Gerät einen falschen Satz von Koordinaten an, der sich weit entfernt von Punkt X als leise herausstellte. Auch aufgrund des Verkehrs bin ich gelegentlich kann nicht in der Nähe von Punkt x parken und daher sind auch in diesem Fall die erhaltenen Koordinaten weit von Punkt X entfernt.

Problem: Mit welchem ​​Verfahren kann ich aus den 16 erhaltenen Koordinatensätzen auf einen Koordinatensatz eingrenzen, der sich in unmittelbarer Nähe meines Aufmerksamkeitspunkts befindet (Punkt X)?

Das Bild unterstützt die obige Problembeschreibung

user3587184
quelle
Haben Sie Informationen zu PDOP, die von Ihrem GPS-Gerät bereitgestellt werden? Dies könnte Ihnen helfen, die unzuverlässigen Punkte zu identifizieren.
Radouxju
Ich würde dies in Antworten einfügen, aber ich bin nicht sicher, ob dies genau das ist, was Sie versuchen, aber die Ausreißer zu werfen und eine Anpassung der kleinsten Quadrate zu verwenden, glaube ich, kann Ihr Problem lösen. utdallas.edu/~aiken/GPSCLASS/ch11.pdf
ed.hank

Antworten:

13

Eine Möglichkeit, dieses interessante Problem anzugehen, besteht darin, es als robusten Schätzer für das Zentrum einer bivariaten Punktverteilung zu betrachten. Eine (bekannte) Lösung besteht darin , konvexe Hüllen abzuziehen, bis nichts mehr übrig ist . Der Schwerpunkt des letzten nicht leeren Rumpfes lokalisiert die Mitte.

(Dies hängt mit dem Bagplot zusammen . Weitere Informationen finden Sie im Internet nach "Multivariate Ausreißer mit konvexem Rumpfschälen".)

Zahl

Das Ergebnis für die 16 dargestellten Punkte wird in dieser Karte als zentrales Dreieck angezeigt. Die drei umgebenden Polygone zeigen die aufeinanderfolgenden konvexen Hüllen. Die fünf Randpunkte (30% der Gesamtzahl!) Wurden in den ersten beiden Schritten entfernt.


Das Beispiel wurde in berechnet R. Der Algorithmus selbst ist im mittleren Block "konvexes Peeling" implementiert. Es verwendet die integrierte chullRoutine, die die Indexe der Punkte auf dem Rumpf zurückgibt. Diese Punkte werden mittels des negativen Indexausdrucks entfernt xy[-hull, ]. Dies wird wiederholt, bis die letzten Punkte entfernt werden. Im letzten Schritt wird der Schwerpunkt durch Mitteln der Koordinaten berechnet.

Beachten Sie, dass in vielen Fällen eine Projektion der Daten nicht einmal erforderlich ist: Die konvexen Hüllen ändern sich nur, wenn die ursprünglichen Merkmale den Antimeridian (+/- 180 Grad Länge) überspannen oder so groß sind, dass die Krümmung der Segmente zwischen ihnen zunimmt Einen Unterschied machen. (Selbst dann ist die Krümmung von geringer Bedeutung, da das Schälen immer noch zu einem zentralen Punkt konvergiert.)

#
# Project the data.
#
dy <- c(8,7,5,10,7,17,19,19,21,22,22,22,24,24,26,26)
dx <- c(66,67,66,89,89,79,78,76,75,81,78,77,75,80,77,83)
lat <- (28.702 + dy/1e5) / 180 * pi
lon <- (77.103 + dx/1e5) / 180 * pi
y <- dy
x <- cos(mean(lat)) * dx
#
# Convex peeling.
#
xy <- cbind(x, y)
while(TRUE) {
  hull <- chull(xy)
  if (length(hull) < nrow(xy)) {
    xy <- xy[-hull, ]
  } else {
    xy.0 <- matrix(apply(xy, 2, mean), 1, 2)
    break
  }
}
#
# Plot the data `xy` and the solution `xy.0`.
#
plot(range(x), range(y), type="n", asp=1)
points(x, y, pch=21, bg="#a01010")
points(xy.0, pch=24, cex=1.2, bg="#404080")
whuber
quelle
Nett. Ein Gedanke: Wäre es angemessen, wahrscheinlich fehlerhafte Daten vor der Berechnung der Rümpfe zu verwerfen - ausschließlich basierend auf der Art und Weise, wie sie erfasst wurden (Unfähigkeit, in der Nähe zu parken), aber NICHT basierend auf der Überprüfung der Daten?
Simbamangu
@ Simba Das ist ein vernünftiger Ansatz.
whuber
Wenn wir mehrere Websites wie diese mit jeweils unterschiedlicher Anzahl von Beobachtungen (wie diese 16) in einer Excel-Datei haben, wie würden wir den Code dafür ändern?
user3587184
@ user3587184 Idealerweise würden Sie die Arbeit nicht in Excel erledigen. Wenn Sie müssen, schreiben Sie ein Makro, um die Beobachtungsgruppen zu durchlaufen.
whuber