¿Enlaces e ideas que coincidan con el mapa? [cerrado]

44

Estoy utilizando OpenStreetMap y su red de carreteras vectorial y me gustaría implementar un algoritmo de correlación de mapas.

Actualmente puedo, para cada posición de GPS, recuperar el segmento de la carretera más cercano y calcular la proyección de esta posición a ese segmento, como en esta imagen (el pin rojo es la posición de 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 asignada salta de un segmento a otro y puede proporcionar una posición mapeada inconsistente de vez en cuando.

Mi algoritmo actual es muy básico: desde la posición GPS pura, obtengo el segmento más cercano y decido que la posición coincidente asignada está en este. Sé que esto se puede mejorar realmente.

Me imagino que tener en cuenta la dirección del vehículo mejorará la coincidencia del mapa, pero ¿conoce algún otro enfoque que me permita mejorar mi mapa coincidente?

¿Busco algún enlace y / o software de código abierto?

    
pregunta yonel 03.02.2011 - 13:58

13 respuestas

11

La proyección de puntos en la línea como ya lo está haciendo es posible hacerlo directamente en PostGIS. Escribí sobre hace algún tiempo, aquí

Pero para resolver su problema cuando los puntos están más cerca de un segmento incorrecto que del segmento correcto, tal vez este podría ser un posible enfoque.

  1. Construye una serie de puntos
  2. Pruebe las soluciones sugeridas en Algoritmos para segmentos coincidentes para que coincidan con toda la línea en lugar de solo punto por punto
respondido por el Nicklas Avén 03.02.2011 - 15:38
10

Después de leer tu pregunta y las diversas respuestas, me interesé en este problema. Después de leer un poco sobre los algoritmos de coincidencia de mapas, he entendido lo siguiente:

  • Para hacer coincidir la ubicación del GPS con la carretera, necesita los datos reales de la carretera en formato vectorial
  • Te ayudará si tienes diferentes pesos para diferentes caminos. Por lo tanto, las posibilidades de que un punto coincida con una carretera serán mayores, luego con una línea lateral.
  • Necesitas tomar el historial y la velocidad de la lectura de los gps. Por ejemplo, si el punto de gps ha estado emparejando el carril lateral durante mucho tiempo, debe tenerlo en cuenta, y no hacerlo coincidir directamente con la autopista. -La coincidencia real se realiza mediante una variedad de técnicas estadísticas.

Para leer más, sugiero lo siguiente:

respondido por el Devdatta Tengshe 19.04.2013 - 05:20
7

Respondiendo a mi propia pregunta!

1- Un bonito .pdf que acabo de encontrar sobre este tema:

enlace

que también enlaza con una implementación de código abierto de C ++ del correlacionador de mapas que se describe en el documento: enlace
(Este es un comparador de mapas sin conexión, mi entendimiento es que calcula las posiciones coincidentes del mapa con la ruta ENTERA como entrada y no puede hacerlo sobre la marcha para cada posición).

2- Luego, acabo de leer esto en profundidad y, en mi opinión, es muy bueno: enlace "Desarrollando una topología mejorada basada en el peso Algoritmo de MapMatching para sistemas de transporte inteligentes "
El algoritmo está claramente explicado y los valores de ajuste de peso también se proporcionan en el documento.

    
respondido por el yonel 15.04.2012 - 15:40
4

Hay mucho trabajo en el Mapa de coincidencias, consulte este documento para una breve encuesta de algunos trabajos bastante recientes (antes de 2007). Más recientemente, los enfoques basados en los modelos ocultos de Markov parecen funcionar bastante bien en circunstancias normales. Por ejemplo, echa un vistazo a este documento de 2009. La idea y el modelo son bastante simples y no deberían dar tienes demasiados problemas para implementar, incluso si no estás familiarizado con los HMM (en cuyo caso, no te asustes, hay un montón de tutorials e introducciones en línea)

    
respondido por el Nick 29.02.2012 - 04:05
4

El método también se llama "vector de conflación". Hay una página dedicada de Wiki ( enlace ) que ofrece una descripción general y paquetes de software de listas abiertas (Open Source) para realizar vectores de ruta. conflación como "JOSM conflation plugin", "Potlatch 2 merging tool", "RoadMatcher" (para OpenJUMP), y otros.

    
respondido por el markusN 19.04.2013 - 10:01
4

Para los algoritmos de Map-Matching, depende si necesita procesamiento en tiempo real o fuera de línea. En el último caso, los algos de última generación pueden procesar ~ 1000 puntos por segundo. Los requisitos de memoria dependen de la cobertura del curso. Hemos logrado exprimir la red de carreteras OSM del planeta en aproximadamente 16 Gb para ese propósito.

Además, debe distinguir map-matching de path inference : estos son dos procesos separados dependiendo de si tiene datos de alta o baja frecuencia. Cuando tiene relativamente pocos puntos (por ejemplo, 1 dato por kilómetro en el contexto urbano), es inferencia de ruta , ya que generalmente se debe hacer alguna suposición para adivinar dónde está viajando el dispositivo. La inferencia de rutas suele ser más difícil, pero cada vez es más problemática con los dispositivos modernos / precio de adquisición de datos.

Puede consultar mi perfil para una API que haga una correspondencia de mapas directamente en OSM: utiliza la topología topológica y funciona bien con datos de automóviles flotantes, por ejemplo.

    
respondido por el Fabrice Marchal 05.06.2013 - 00:57
3

Un poco tarde, pero podría ser de interés:

Strava Slide

La página describe cómo los datos de seguimiento acumulativos en una red de carreteras pueden comportarse como "valles", y cómo la ruta propuesta podría "caer en su lugar" como si fuera una cadena de cuentas.

    
respondido por el heltonbiker 04.06.2014 - 02:56
2

Después de probar la mayoría de los marcos mencionados anteriormente, encontré Barefoot y realmente puedo recomendarlo. Utiliza modelos de Markov ocultos como un enfoque de correspondencia de mapa probabilístico (detalles en su documento "Poner el automóvil en el mapa ") y se implementa en Java. Es de código abierto y desarrollado activamente por el Departamento CarIT de BMW.

    
respondido por el nik 22.12.2015 - 15:02
2

El tema se llama correspondencia de mapa. Pero como una primera aproximación muy buena, probablemente sea lo suficientemente buena como para buscar los puntos más cercanos para cada punto gps (sin que las correcciones adivinen la forma correcta).

Mi proyecto de código abierto llamado graphhopper no es algo que funcione para iOS ( actualizar : ahora también funciona en iOS), ni tiene una aplicación Android completamente funcional para lo que usted desea. Pero puede usar la versión del servidor para crear una aplicación iOS o usar la demostración de Android fuera de línea como un comienzo. He lanzado el algoritmo de correlación de mapas aquí , solo un prototipo aproximado pero funciona sorprendentemente bien.

    
respondido por el Karussell 18.04.2013 - 09:51
1

Prueba y adquiere algunos buenos datos de prueba. Use un GPS de registro de seguimiento de mayor precisión adicional, además de los puntos de registro en su dispositivo de destino. Esto identificará errores en el GPS y en los datos OSM subyacentes. Conocer los umbrales sensibles facilitará mucho el diseño del algoritmo.

    
respondido por el Matthew Snape 04.02.2011 - 13:40
1

Gracias. Esas respuestas fueron realmente útiles. Saber los términos de búsqueda correctos vale mucho :)

He encontrado una API que podría hacer el trabajo sin tener que pasar por el esfuerzo de desarrollar una solución propia de inmediato.

Utilizan los datos de OSM para hacer la correspondencia de mapas. También tienen una página de demostración que permite la carga de archivos GPX para ver qué tan bien podría funcionar esto para usted.

    
respondido por el Arthur McFlint 11.07.2013 - 10:09
1

Si puede obtener datos de carreteras para su región, podría estar interesado en masivo automático rompiendo con el software libre

Dependiendo de si desea trazar los datos en tiempo real o si planea realizar un postprocesamiento en su PC posteriormente, GRASS podría serle de ayuda.

    
respondido por el Michal Zimmermann 18.04.2013 - 09:58
0

No necesita mejorar la calidad de sus datos necesariamente. El uso de un algoritmo topológico con una red de carreteras en memoria mejorará considerablemente su correspondencia. Compruebe las referencias: enlace

    
respondido por el Fabrice Marchal 06.06.2013 - 21:59

Lea otras preguntas en las etiquetas