Estoy utilizando OpenStreetMap y su red de carreteras vectorial y me gustaría implementar un algoritmo de comparación de mapas.
Actualmente soy capaz, para cada posición GPS, de recuperar el segmento de carretera más cercano y calcular la proyección de esta posición a ese segmento, como en esta imagen (la chincheta roja es la posición GPS pura, en azul el segmento mapeado y en verde la posición mapeada):
Sin embargo, debido a la falta de precisión del GPS, a veces la posición mapeada salta de un segmento a otro y puede proporcionar alguna posición mapeada inconsistente de vez en cuando.
Mi algoritmo actual es muy básico: a partir de la posición GPS pura, obtengo el segmento más cercano y decido que la posición coincidente mapeada está en éste. Sé que esto se puede mejorar mucho.
Me imagino que tener en cuenta la dirección del vehículo mejorará la correspondencia del mapa, pero ¿conoces algún otro enfoque que me permita mejorar mi matcher de mapas?
¿Busco algún enlace, y/o software de código abierto?