top | item 30035710

(no title)

xnyhps | 4 years ago

I’ve been playing around with a similar project and it surprised me how hard map matching actually is. I’ve also been using OSRM, but no matter how I tweak the settings, it never gets it 100% right.

Some examples: the GPS error is often more than the distance between a road and a cycling path next to the road, so it often confuses them.

The default cycling profile of OSRM actually takes into account the possibility of dismounting and walking with the bike. This is very useful when that is what you did, but it also creates a lot of extra possibilities. For example, a one way cycling path can then be used in the opposite direction by walking.

There’s also a limit to how many points it can process at once (and it becomes quite slow if you increase that). Should I slice up the trip in multiple segments and then somehow connect them, or is it better to drop some of the points? Still haven’t found out what the best option is.

It also helped me spot some subtle errors or missing data on OSM, but that's easy enough to fix.

discuss

order

nurgasemetey|4 years ago

As past heavy user of OSRM, after map-matching post-processing needs to be done like connecting disjointed travel segments.

karussell|4 years ago

> but no matter how I tweak the settings, it never gets it 100% right

Interesting. Did you try GraphHopper? You'll always find cases where it performs poorly but overall we get positive feedback for it and it is very often right and performs als in most cases fast. You can try one bike example here: https://graphhopper.com/api/1/examples/#map-matching or send your examples via our JS client https://github.com/graphhopper/directions-api-js-client

Probably one current problem of the bike profile is that we do not yet allow to walk in the opposite direction, but this might be beneficial for map matching.

xnyhps|4 years ago

If I remember correctly, the last thing I was working on was actually trying to see if GraphHopper performs better! I think I was either still trying to compile it or load a local map, I’m not sure. It has been a while since I’ve worked on this.

Also, I don’t expect it to be 100% correct everywhere, sometimes the GPS data is just not good enough or I might have traveled in a way that the map wouldn’t allow, but there were some instances I found where I thought it should’ve been able to find a match and it didn’t.