Open source route planning for .NET




Ben Abelshausen (@xivk)


A routing engine as in road networks.


Originally built for logistical optimization

Main goals

An open-source routing engine that's:

- Easy to use & setup.
- Fast.

- Extensible.

- Reliable.

var route = router.Calculate(Vehicle.Car.Fastest(),
    51.2679702f, 4.8019051f,
    51.2610084f, 4.7807210f);

var profile = Vehicle.Car.Fastest(); 

var start = router.Resolve(profile,  
 51.2679702f, 4.8019051f);
var end = router.Resolve(profile,
 51.2610084f, 4.7807210f);

var result = router.TryCalculate(profile, start, end);


Main features


- Dykstra, A* (Very flexible, relatively slow)
 - Contraction Hierarchies (Very (very) fast)
 - Configurable routing profiles in lua.
 - Offline routing on mobile (Xamarin)

 - Cross platform (.NET Core)

 - Scales, handles the entire world.

Why .NET

- Was the tech used at the time.
- Good tradeoff between performance and ease of use.


Biggest disadvantage at the time: windows-focus!

Performance (UK)

 - 10.000x10.000 matrix in 60s.
 - ~5-10ms per route.
 - ~100-500ms on mobile.

 - UK network takes about 2GB ram.

OpenStreetMap (OSM)

- Best open map

- Available worldwide.

- Called 'wikipedia of maps'



"OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world."

Open source (!)

- Since 2011, first OsmSharp, later Itinero.
- 5 contributors > 90% myself.


Why open source:


Trust in the project!

- One person company, many projects.

- ~80.000€/yr


By Ben Abelshausen


  • 580
Loading comments...

More from Ben Abelshausen