Przybliżanie współrzędnych GPS dla punktu z n oczekiwanych lokalizacji


9

Próbuję znaleźć współrzędne mojego punktu uwagi (punkt X, zaznaczony na niebiesko). Użyłem urządzenia GPS mojego samochodu do zebrania współrzędnych zgodnie z miejscem, w którym zaparkowałem pojazd za każdym razem, gdy odwiedzałem punkt x. Po 16 dniach tego ćwiczenia udało mi się uzyskać 16 zestawów współrzędnych rozmieszczonych wokół mojego punktu uwagi.

Po wykreśleniu tych współrzędnych na mapie zaobserwowałem: Dwa lub trzy razy na dziesięć razy moje urządzenie GPS podało zły zestaw współrzędnych, które okazały się ciche z dala od punktu X. Również z powodu ruchu, czasami jestem nie można zaparkować w pobliżu punktu x, a zatem również w tym przypadku, uzyskane współrzędne są dalekie od punktu X.

Problem: Z 16 uzyskanych zestawów współrzędnych, jakiego procesu używam do zawężenia do jednego zestawu współrzędnych, który znajduje się w pobliżu mojego punktu uwagi (punkt X)?

Obraz obsługuje powyższy opis problemu


czy masz informacje o PDOP dostarczone przez twoje urządzenie GPS? może to pomóc w zidentyfikowaniu niewiarygodnych punktów.
radouxju,

Podałbym to w odpowiedziach, ale nie jestem pewien, czy to właśnie próbujesz zrobić, ale odrzucając wartości odstające i stosując korektę najmniejszych kwadratów, uważam, że może rozwiązać twój problem. utdallas.edu/~aiken/GPSCLASS/ch11.pdf
wyd. dzięki

Odpowiedzi:


13

Jednym ze sposobów podejścia do tego interesującego problemu jest postrzeganie go jako solidnego estymatora środka dwuwymiarowego rozkładu punktów. (Dobrze znanym) rozwiązaniem jest odrywanie wypukłych kadłubów, dopóki nic nie zostanie . Środek ciężkości ostatniego niepustego kadłuba lokalizuje środek.

(Jest to związane z bagplotem . Aby uzyskać więcej informacji, wyszukaj w Internecie „wypukły łusek wielowariantowy odstający”).

Postać

Wynik dla 16 ilustrowanych punktów jest pokazany jako środkowy trójkąt na tej mapie. Trzy otaczające wielokąty pokazują kolejne wypukłe kadłuby. Pięć odległych punktów (30% całości!) Zostało usuniętych w pierwszych dwóch krokach.


Przykład został obliczony w R. Sam algorytm jest zaimplementowany w środkowym bloku, „wypukłym peelingu”. Wykorzystuje wbudowaną chullprocedurę, która zwraca indeksy punktów na kadłubie. Punkty te są usuwane za pomocą ujemnego wyrażenia indeksującego xy[-hull, ]. Jest to powtarzane do momentu usunięcia ostatnich punktów. W ostatnim kroku środek ciężkości jest obliczany przez uśrednienie współrzędnych.

Należy pamiętać, że w wielu przypadkach rzutowanie danych nie jest nawet konieczne: wypukłe kadłuby nie zmienią się, chyba że oryginalne cechy obejmują antimeridian (długość geograficzna +/- 180 stopni), biegun lub są tak rozległe, że krzywizna segmentów między nimi będzie robić różnicę. (Nawet wtedy krzywizna nie będzie miała większego znaczenia, ponieważ łuszczenie nadal zbiega się w centralnym punkcie).

#
# 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")

Miły. Jedna myśl: czy byłoby właściwe odrzucić wszelkie prawdopodobne złe dane przed obliczeniem kadłubów - wyłącznie na podstawie ich gromadzenia (niemożność parkowania w pobliżu), ale NIE na podstawie inspekcji danych?
Simbamangu,

@Simba To rozsądne podejście.
whuber

Jeśli mamy wiele takich witryn, każda z inną liczbą obserwacji (jak ta miała 16), w pliku Excela, w jaki sposób zmodyfikowalibyśmy kod w tym celu.
user3587184

@ user3587184 Najlepiej byłoby, gdyby nie wykonywać pracy w programie Excel. Jeśli musisz, napisz makro, które zapętli grupy obserwacji.
whuber
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.