Soy un programador de logística, y me han pedido que descubra si un punto de GPS está "fuera de ruta" cuando la ruta consiste en una serie de puntos geoespaciales (latitud, longitud).Enrutamiento geoespacial
¿Cuál es el mejor algoritmo para determinar si un punto está cerca de la ruta? Usaré C# y SQL Server, pero realmente eso no importa mucho si sé qué algoritmo usar.
he considerado
- Encontrar a los dos puntos más cercanos y determinar si el área del triángulo está por encima de un límite específico.
- Usando vectores para todos los pares de puntos y luego verificando si alguno de ellos es "similar" al vector definido por el punto de GPS y al punto que determiné que es "siguiente" en la ruta.
No tengo un título en matemáticas, pero probablemente pueda manejar cualquier cosa con los términos correctos y un motor de búsqueda.
Tendré que hacer al menos 4000 cálculos por hora, por lo que probablemente no sea aceptable utilizar una solución de mapeo debido al volumen.
lo que has pedido es una pregunta interesante. Esa solución de superficie-área-de-triángulo no funcionaría porque dos puntos muy alejados generarían un triángulo con una gran área de superficie, incluso cuando el punto está solo ligeramente fuera de la ruta. No estoy seguro de tener una mejor solución. Gracias por darme algo en qué pensar. –
¿Qué versión de SQL Server estás usando? ¿Tiene algún atributo sobre la ubicación del autobús que no sea lat/long?¿Qué tal la identificación del autobús, la identificación de la ruta, etc. que puede vincularse con la ruta/ruta correcta en la que debería estar? – RyanDalton
@RyanDalton 2005 desafortunadamente. Según tengo entendido, 2012 tuvo algunas características bastante agradables con respecto a los datos espaciales. No estoy por encima de usar mongo o alguna otra base de datos, pero eso terminará siendo un poco más trabajo para configurar y mantener otra base de datos con información en tiempo real. –