Tengo ubicaciones de GPS sin procesar para una pista y necesito obtener la velocidad máxima. Los métodos simples (calcular la velocidad entre 2 puntos, tomar el máximo) darán grandes números sin sentido debido a la inexactitud del GPS, el punto está saltando. ¿Puedes sugerir un buen algoritmo listo para resolver esto?
gps
movement-data
JaakL
fuente
fuente
Respuestas:
Para obtener velocidad debes tener tiempo, por supuesto. Por lo tanto, puede ordenar sus puntos por tiempo en una hoja de cálculo como la moda, con columnas {Tiempo, X, Y}, aumentando el tiempo.
Aquí hay un ejemplo donde la unidad GPS casi completó un circuito en sentido antihorario:
Estos puntos no se obtuvieron a intervalos iguales de tiempo. Por lo tanto , es imposible desde el mapa solo estimar velocidades. (Sin embargo, para ayudarlo a visualizar este viaje, me aseguré de recopilar los valores gps a intervalos casi iguales, para que pueda ver que el viaje comenzó rápido y lento en dos puntos intermedios y al final).
Debido a que está interesado en la velocidad, calcule las distancias entre filas sucesivas, así como las diferencias de tiempo. La división de distancias por diferencias de tiempo proporciona estimaciones de velocidad instantáneas. Eso es todo al respecto. Veamos una gráfica de esas estimaciones versus tiempo:
Los puntos rojos trazan las velocidades, mientras que la curva gris es suave, únicamente para guiar la vista. El tiempo de la velocidad máxima, y la velocidad máxima en sí, son claras en el gráfico y se obtienen fácilmente de los datos hasta ahora si está utilizando una hoja de cálculo o funciones simples de resumen de datos en un SIG. Sin embargo, estas estimaciones de velocidad son sospechosas porque los puntos gps claramente tienen algún error de medición.
Una forma de lidiar con el error de medición es acumular las distancias entre múltiples períodos de tiempo y usarlas para estimar los tiempos. Por ejemplo, si los datos de {Diferencia de tiempo, Distancia} calculados previamente son
entonces los tiempos transcurridos y las distancias totales durante dos períodos de tiempo se obtienen agregando cada par de filas sucesivas:
Calcule las velocidades para los tiempos y distancias acumulados.
Uno puede llevar a cabo este cálculo para cualquier cantidad de períodos de tiempo, logrando trazados cada vez más uniformes y confiables a costa de promediar las estimaciones de velocidad durante períodos de tiempo más largos. Aquí hay gráficos de los mismos datos calculados para 3 y 5 períodos de tiempo, respectivamente:
Observe cómo la velocidad máxima disminuye con la cantidad de suavizado. Esto siempre sucederá. No hay una respuesta correcta única: cuánto suaviza depende de la variabilidad en las mediciones y de qué períodos de tiempo desea estimar las velocidades. En este ejemplo, podría informar una velocidad máxima tan alta como 2.5 (basada en puntos GPS sucesivos), pero sería poco confiable debido a los errores en las ubicaciones del GPS. Puede informar una velocidad máxima tan baja como 2.1 en función de la suavidad de cinco períodos.
Este es un método simple pero no necesariamente el mejor. Si descomponemos el error de ubicación del GPS en un componente a lo largo de la ruta y en otro componente perpendicular a la ruta, vemos que los componentes a lo largo de la ruta no afectan las estimaciones de la distancia total recorrida (siempre que la ruta esté suficientemente muestreada: es decir, usted no "cortar esquinas"). Los componentes perpendiculares a la ruta aumentanLas distancias aparentes. Potencialmente, esto sesga la estimación hacia arriba. Sin embargo, cuando la distancia típica entre las lecturas de GPS es grande en comparación con el error de distancia típico, el sesgo es pequeño y probablemente se compensa por las pequeñas oscilaciones en el camino que no son capturadas por la secuencia de GPS (es decir, algunos cortes de esquina son siempre hecho). Por lo tanto, probablemente no valga la pena desarrollar un estimador más sofisticado para hacer frente a estos sesgos inherentes, a menos que la frecuencia de muestreo del GPS sea muy baja en comparación con la frecuencia con la que la ruta "se mueve" o el error de medición del GPS es grande.
Para el registro, podemos mostrar el resultado verdadero y correcto , porque estos son datos simulados:
La comparación de esto con las gráficas anteriores muestra que, en este caso particular, el máximo de las velocidades brutas sobreestimó el máximo real, mientras que el máximo de las velocidades de cinco períodos fue demasiado bajo.
En general, cuando los puntos GPS se recopilan con alta frecuencia, la velocidad bruta máxima probablemente será demasiado alta: tiende a sobreestimar el máximo real. Decir más que esto en cualquier caso práctico requeriría un análisis estadístico más completo de la naturaleza y el tamaño de los errores de GPS, de la frecuencia de recopilación de GPS y de la tortuosidad de la ruta subyacente.
fuente
Este no es un script o algoritmo listo para usar. Lo que hice en la siguiente imagen que muestra la velocidad promedio (en km / h):
r.neighbors
para obtener la velocidad promedio para una ventana ráster especificada.fuente
r.neighbors
, obtengo la velocidad promedio.Como sus datos de GPS son inexactos, solo podrá estimar la velocidad máxima.
Puede intentar calcularlo calculando la velocidad no en segmentos sino en polilíneas (velocidad promedio), para minimizar el efecto de imprecisiones.
¿Has intentado limpiar primero tus datos (Douglas-Peucker, por ejemplo) para mantener solo los puntos más relevantes?
fuente