Profile type and local implementation of map matching


I have two questions regarding the map matching functionality:

  1. While testing the map-matching functionality over the web interface, I tried to change the profile mode from car to bike. I submitted the following cURL request (changed ‘car’ to ‘bike’:

curl -XPOST -H “Content-Type: application/gpx+xml” -d @web/src/test/resources/bike_leg_4.gpx “localhost:8989/match?profile=bike&type=json”

but received the following IllegalArgumentException:

{“message”:“Could not find profile ‘bike’, choose one of: [car]”,“hints”:[{“message”:“Could not find profile ‘bike’, choose one of: [car]”,“details”:“java.lang.IllegalArgumentException”}]}

What exactly does the parameter ‘profile’ mean? And how do I change it to another vehicle?

  1. I am hoping to use the map matching functionality locally but I’m confused as to how to get this going: amongst the given Java files there does not seem to be any main file that I can run… can you give me a tip on this?

As per my knowledge the free version of map matching only support “car” profile.

No, this is not true. What made you think this?

Which version of GraphHopper are you using? For latest master you can (more or less) assume that a ‘profile’ specifies the ‘vehicle’ you want to run the map-matching with. What kind of profiles are available is entirely configurable and it is the same for normal GraphHopper routing (without map-matching). See the profiles section in config.yml and take a look at the documentation. For current master you can find it here: