Imagine que tiene una lista de puntos (latitud + longitud) que ha registrado previamente con un receptor GPS. Ahora, debe convertirlo en una representación textual de la ruta que siguió. Ejemplo:
- Comience en Redmond Avenue 12
- Caminar 200 m
- Gire a la izquierda hacia Another St.
- Caminar 100 m
- Pare en otra calle 10
- Final
Realmente no necesita ser muy detallado. La primera idea que se me ocurre es utilizar un servicio externo (google, yahoo ...) para revertir la geocodificación de cada punto. Luego aplique un algoritmo simple para escribir la ruta cuando detecte un cambio en el nombre de la calle.
Cualquier sugerencia sobre cuál es el mejor algoritmo para usar o cualquier implementación existente (abierta) es bienvenida. No parece ser trivial.
Start at Redmond Avenue 12
yWalk 200 m
no sabré en qué dirección caminar? Perdón por la trampa.Respuestas:
Si puede utilizar un servicio externo, la API de Google Directions proporciona esta funcionalidad directamente. Admite waypoints a lo largo del camino, por lo que podría hacer:
Esto devolverá un
JSON
documento consteps
para cada dirección.Si desea hacerlo usted mismo, debe seguir algunos pasos para comenzar a procesar las instrucciones: necesitará un conjunto de datos para enrutar las rutas, como OSM , y un motor de enrutamiento como pgRouting . Algo como OSM2PostGIS proporciona el trabajo pesado necesario para ejecutar una configuración como esta. Luego querrá reposicionar cada uno de sus puntos en el borde más cercano, lo que se puede hacer en PostGIS con
ST_Line_Locate_Point
( documentación ). Entre la referencia lineal en PostGIS y pgRouting, debería poder crear direcciones lo suficientemente razonables.fuente