Processing math: 100%

46 votos

¿Enlaces e ideas para la elaboración de mapas?

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):

enter image description here

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?

5voto

Neolisk Puntos 140

En el caso de los algoritmos de emparejamiento de mapas, depende de si se necesita un procesamiento en tiempo real o fuera de línea. En este último caso, los algoritmos más avanzados pueden procesar ~ 1000 puntos por segundo. Los requisitos de memoria dependen de la cobertura, por supuesto. Hemos logrado exprimir la red de carreteras OSM del planeta en aproximadamente 16 Gb para este propósito.

Además, hay que distinguir coincidencia de mapas de inferencia del camino : se trata de dos procesos distintos dependiendo de si tienes datos de alta o baja frecuencia. Cuando se tienen relativamente pocos puntos (por ejemplo, 1 dato cada kilómetro en el contexto urbano), es inferencia del camino ya que normalmente hay que hacer alguna suposición para adivinar por dónde viaja el dispositivo. La inferencia de la trayectoria suele ser más difícil, pero cada vez es menos problemática con los dispositivos modernos y el precio de la adquisición de datos.

Puedes consultar en mi perfil una API que hace la coincidencia de mapas directamente en OSM: utiliza la coincidencia topológica y funciona bien con datos de coches flotantes, por ejemplo.

3voto

Kiran Puntos 320

El tema se llama coincidencia de mapas. Pero como una primera aproximación muy buena es probablemente lo suficientemente bueno para buscar los puntos más cercanos para cada punto gps (sin ninguna corrección adivinar la forma correcta).

Mi proyecto de código abierto llamado graphhopper no es algo que funcione para iOS ( actualización (ahora también funciona en iOS), ni tampoco tiene una aplicación Android totalmente funcional para lo que quieres. Pero podrías usar la versión del servidor para construir una aplicación para iOS o usar la demo offline para Android como comienzo. He liberado el algoritmo de coincidencia de mapas aquí es sólo un prototipo, pero funciona sorprendentemente bien.

3voto

トモダチ Puntos 21

Deslizamiento de Strava describe cómo los datos acumulados sobre una red de carreteras pueden comportarse como "valles", y cómo la ruta propuesta "caería en su sitio" como si fuera un collar de cuentas.

3voto

nik Puntos 53

Después de probar la mayoría de los marcos mencionados anteriormente, encontré Pies descalzos y realmente puedo recomendarlo. Utiliza modelos de markov ocultos como enfoque probabilístico de emparejamiento de mapas (detalles en su documento "Poner el coche en el mapa" ) y está implementado en Java. Es de código abierto y está desarrollado activamente por el departamento CarIT de BMW.

1voto

Nate Puntos 220

Intenta adquirir buenos datos de prueba. Utiliza un GPS de registro de pistas adicional de mayor precisión, además de registrar puntos en tu dispositivo objetivo. Esto identificará errores en el GPS y en los datos OSM subyacentes. Conocer los umbrales razonables hará mucho más fácil el diseño del algoritmo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X