Nav-e is an open-source routing project that is focused on energy optimality. This is the back end for our routing frontend.
To build a project that is able to run on smaller devices that can be used for offline navigation, the project is written in Go (instead of Java, for example). In order to run the application locally, install go, clone this repository and run
routing> go run main.go
2017/10/22 21:51:08 Starting nav-e server
2017/10/22 21:51:08 Converting osm data to graph
2017/10/22 21:51:08 Listening on :8080
As a backend, this projects provides a simple REST api to route
/search/:name
:name
must be string- GET:
http://localhost:8080/search/Hec
- RESPONSE:
[{"display_name":"Hector-Otto","osm_id":25200449}]
/:algorithm/from/:from/to/:to
:from
,:to
must be valid OSM ids, use/search/:name
to find them:algorithm
is ignored for now, only dijkstra is implemented and used- GET:
http://localhost:8080/dijkstra/from/25200449/to/2185515256
- RESPONSE:
[{"osm_id":25200449,"lat":43.7335195,"lon":7.413941400000001,"tags":{"bus":"yes","name":"Hector-Otto","public_transport":"stop_position"}},{"osm_id":25198987,"lat":43.7336467,"lon":7.4141639,"tags":{}},{"osm_id":25198929,"lat":43.733877400000004,"lon":7.4145156000000005,"tags":{}},{"osm_id":25198922,"lat":43.7340929...]
- Basic routing
- PBF import
- REST API
- Use Database for routing
- See
osm/cache.go
for an in-memory implementation
- See
- Implement energy optimal shortest path algorithm
- Implement one energy consumption algorithm (see other nav-e projects)
- Port range polygon (see range-anxiety project)
- Improve osm data handling
- We use the
name
tag for search. This often gives nodes with no neighbors - We interpret all ways as streets
- We interpret all streets both ways (even one way streets)
- We don't filter any nodes/streets
- Street properties are not provided for routing
- Speed limits are not used at all, the shortest path is calculated
- We use the
- Implement road contraction (like Contraction Hierarchies) to make routing fast