Necesito encontrar un algoritmo o método que pueda detectar latitude
longitude
puntos atípicos en una trayectoria durante el procesamiento posterior , que luego se puede arreglar (volver a la trayectoria de la trayectoria en función de sus vecinos).
Como ejemplo del tipo de puntos atípicos que me gustaría detectar y corregir, adjunto una imagen que demuestra:
Intenté usar un filtro Kalman sin perfume para suavizar los datos lo mejor posible, pero esto no parece funcionar de manera suficientemente efectiva para valores atípicos más extremos (datos sin procesar en azul, datos suavizados en rojo):
Es posible que mi UKF no esté calibrado correctamente (pero estoy bastante seguro de que sí).
Las trayectorias son las de caminantes, corredores, ciclistas: movimiento impulsado por humanos que puede comenzar y detenerse, pero que no cambia drásticamente la velocidad o la posición tan rápido o repentino.
Una solución que no se base en datos de tiempo (y solo en datos de posición) sería extremadamente útil (ya que los datos que se procesan no siempre contienen datos de tiempo). Sin embargo, soy consciente de cuán improbable es que exista este tipo de solución, ¡así que estoy igualmente feliz de tener alguna solución!
Idealmente, la solución detectaría el valor atípico para poder solucionarlo, lo que da como resultado una trayectoria corregida:
Recursos que he examinado:
Smooth GPS data
- /programming/1134579/smooth-gps-dataCommon GPS and Geospatial Tracking Challenges and Solutions
- http://www.toptal.com/gis/adventures-in-gps-track-analytics-a-geospatial-primer (la solución parece perder precisión en los datos)¿Qué algoritmo debo usar para eliminar valores atípicos en los datos de rastreo?
Algoritmo que uso.
Como se puede ver, podría cortar la esquina en un giro brusco.
Tengo la implementación de ArcGIS python del algoritmo anterior, utiliza el módulo networkx. Avíseme si esto le interesa y actualizaré mi respuesta con el script
ACTUALIZAR:
fuente
Una idea es crear un script que enumere los ángulos (y tal vez la longitud también) de cada segmento de su ruta. Ahora puede comparar los valores de cada segmento con sus vecinos directos (y posiblemente los segundos vecinos también para aumentar la precisión) y seleccionar todos aquellos puntos donde los valores exceden un valor de umbral dado. Finalmente, simplemente elimine los puntos de su ruta.
fuente
También vale la pena mirar es el método Median-5.
Cada coordenada x (o y) se establece en la mediana de los 5 valores x (o y) a su alrededor en secuencia (es decir, los dos valores anteriores y los dos valores posteriores).
Por ejemplo, x3 = mediana (x1, x2, x3, x4, x5) y3 = mediana (y1, y2, y3, y4, y5) etc.
El método es rápido y también es fácil de usar en la transmisión de datos.
fuente
Hay algunos buenos datos en esta pregunta / respuestas.
Aunque todo depende de cómo se agrupen sus puntos en lo que funcionará / no funcionará. Deberá tener cuidado con los puntos que se extienden pero no con valores atípicos.
fuente
Puede importar sus datos a Excel o usar pandas y banderas y eliminar todas las distancias desde el punto anterior que excedan un umbral de distancia poco realista.
fuente