I have a bunch of raw GPS data points which constitute trips. I want to add semantic information to those data points. For example I'd like to be able to say that a trip consisted of taking street A, B and C.

With Openstreetmap I can download nodes and ways for a bounding box, which are again described through a bunch of nodes (lat/lng) points.

I actually have all the information I need to map my points to those of Openstreetmap. But reality is messy and my GPS data is not perfect, has outliers and goes off the road.

What is a good approach to calculate which ways or even relations belong to my GPS data?

What is the research done in this area?

Is there already a library that does all the work for me?


Maybe you can find some hints and solutions in Digitalizing GPX Points or How to Track Vehicles With GraphHopper by the developer of the OSM-based routing solution Graphhopper.

His project with your aim is called Map Matching


What you are after is a good map-matching algorithm. There are very few available off the self: see explanation and description on OSM. In case you're interested in simply using an API for that purpose, have a look at TraxMatching on my profile.

  • I was trying to use the linked to tool. It seems to be outdated. When I run it with any size of a osm file I get an Error: Value too large or too small message. This seems to be a general problem, since OSM has recently started to add ids that are bigger than what fits an int32. Link offers a solution
    – LeoR
    Feb 14 '15 at 0:47

Not the answer you're looking for? Browse other questions tagged or ask your own question.