Quiero seguir y visualizar el progreso de un autobús, de la siguiente manera:
- Tengo las coordenadas de cada estación
- así como las coordenadas del autobús, actualizadas cada 10 segundos
La información se almacena en Postgres, como float
tuplas, sin tener en cuenta la topología de las calles ni otros metadatos relacionados con los SIG. Por el momento tengo una implementación ingenua que calcula la distancia "a vuelo de pájaro" entre 2 puntos (el autobús y la siguiente estación prevista). Esto me permite construir una barra de progreso aproximada, pero debido al trazado de las calles en ciertas partes de la ciudad, a veces estas estimaciones son... muy erróneas.
Según tengo entendido, la forma correcta de solucionar este problema es basarse en el "map-matching", que realizará una transformación "snap to road" de las coordenadas del autobús. Esto, a su vez, me permitirá ver la distancia recorrida, como si toda la ruta fuera una línea recta:
Sin embargo, no tengo la experiencia del SIG que me daría la seguridad de que (1) voy por buen camino y que (2) elegí el camino de mínima resistencia.
¿Cuáles son las mejores prácticas para abordar este problema?
Actualización: el software actual es un programa Python puro que realiza estos cálculos. No hay herramientas SIG implicadas en absoluto, aunque sospecho que el problema que nos ocupa es probablemente un escenario típico para ellas. Preferiría una solución que utilice software libre de código abierto, que pueda integrarse en los sistemas existentes, una API de Python sería una ventaja.