Aproximación de coordenadas GPS para un punto desde n ubicaciones esperadas

9

Estoy tratando de encontrar las coordenadas de mi punto de atención (punto X, marcado en azul). Utilicé el dispositivo GPS de mi automóvil para recopilar las coordenadas según el lugar donde estacioné mi vehículo cada vez que visité el punto x. Entonces, después de seguir este ejercicio durante 16 días, logré obtener 16 conjuntos de coordenadas, distribuidas alrededor de mi punto de atención.

Después de trazar estas coordenadas en el mapa, observé lo siguiente: dos veces o tres de cada diez veces, mi dispositivo GPS dio un conjunto incorrecto de coordenadas que resultó ser silencioso lejos del punto X. También debido al tráfico, ocasionalmente estoy incapaz de estacionarse cerca del punto x y, por lo tanto, en este caso también, las coordenadas obtenidas están lejos del punto X.

Problema: De los 16 conjuntos de coordenadas obtenidos, ¿qué proceso utilizo para reducir a un conjunto de coordenadas que está muy cerca de mi punto de atención (punto X)?

La imagen admite la descripción del problema anterior

usuario3587184
fuente
¿tiene información sobre PDOP proporcionada por su dispositivo GPS? Esto podría ayudarlo a identificar los puntos poco confiables.
radouxju
Pondría esto en respuestas, pero no estoy seguro de si esto es exactamente lo que está tratando de hacer, pero descartar los valores atípicos y usar un ajuste de mínimos cuadrados, creo que puede resolver su problema. utdallas.edu/~aiken/GPSCLASS/ch11.pdf
ed.hank

Respuestas:

13

Una forma de abordar este interesante problema es verlo como un estimador robusto del centro de una distribución de puntos bivariados. Una solución (bien conocida) es despegar los cascos convexos hasta que no quede nada . El centroide del último casco no vacío ubica el centro.

(Esto está relacionado con la trama de la bolsa . Para obtener más información, busque en la Web "valores atípicos multivariados de pelado de casco convexo").

Figura

El resultado para los 16 puntos ilustrados se muestra como el triángulo central en este mapa. Los tres polígonos circundantes muestran los cascos convexos sucesivos. Los cinco puntos periféricos (¡30% del total!) Se eliminaron en los primeros dos pasos.


El ejemplo se calculó en R. El algoritmo mismo se implementa en el bloque del medio, "pelado convexo". Utiliza la chullrutina integrada , que devuelve los índices de puntos en el casco. Estos puntos se eliminan mediante la expresión de indexación negativa xy[-hull, ]. Esto se repite hasta que se eliminen los últimos puntos. En el último paso, el centroide se calcula promediando las coordenadas.

Tenga en cuenta que, en muchos casos, ni siquiera es necesario proyectar los datos: los cascos convexos no cambiarán a menos que las características originales abarquen el antimeridiano (longitud de +/- 180 grados), ya sea polo o tan extensas que la curvatura de los segmentos entre ellas Hacer la diferencia. (Incluso entonces, la curvatura será poco preocupante, porque el pelado seguirá convergiendo a un punto central).

#
# 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
fuente
Agradable. Un pensamiento: ¿sería apropiado descartar cualquier dato probablemente malo antes de calcular los cascos, basado únicamente en cómo se recopiló (incapacidad para estacionarse cerca) pero NO en función de la inspección de los datos?
Simbamangu
@Simba Ese es un enfoque razonable.
whuber
Si tenemos múltiples sitios como este, cada uno con un número diferente de observaciones (como este tenía 16), en un archivo de Excel, ¿cómo modificaríamos el código para eso?
user3587184
@ user3587184 Idealmente, no haría el trabajo en Excel. Si debe hacerlo, escriba una macro para recorrer los grupos de observaciones.
whuber