Project-OSRM / osrm-backend

Open Source Routing Machine - C++ backend
http://map.project-osrm.org
BSD 2-Clause "Simplified" License
6.42k stars 3.4k forks source link

Map-matching confidence should take time into account #4301

Open daniel-j-h opened 7 years ago

daniel-j-h commented 7 years ago

Map-matching currently does not take the timestamp into account for its confidence estimation. We can get high-confidence matches out of the plugin while in its results the user drives > 300 km/h.

Example request:

curl 'http://localhost:5000/match/v1/driving/-122.2447172,47.3535985;-122.2447143,47.3602083;-122.244703,47.3667796;-122.2441332,47.3737109;-122.2445667,47.3807536;-122.2435025,47.387561;-122.2368741,47.3925678;-122.2299442,47.3972545;-122.2226797,47.4023404;-122.2203527,47.4087377;-122.2208306,47.4156092;-122.2212531,47.4228171?timestamps=1499304537;1499304561;1499304584;1499304607;1499304630;1499304652;1499304675;1499304697;1499304722;1499304744;1499304766;1499304788&tidy=true&generate_hints=false&overview=false&annotations=nodes,speed' | jq '.'

Map-matching confidence: 0.970276.

For the first two timestamps: leg geometry distance 2238.2 meters, timestamp difference 24 seconds:

>>> 1499304561 - 1499304537
24
>>> 2238.2 / 24 * 3.6
335.72999999999996

the 335.7 km/h map-matching comes up which is certainly not be a high-confidence match.

Here are the first two coordinates:

http://map.project-osrm.org/?z=14&center=47.352460%2C-122.217278&loc=47.349396%2C-122.244838&loc=47.364478%2C-122.244771&hl=en&alt=0

map

And here is what I would consider a high-confidence match instead:

map2


cc @TheMarex @gardster

daniel-j-h commented 7 years ago

For the record: increasing the radiuses threshold to 7 meters for all coordinates results in 110 km/h.

curl 'http://localhost:5000/match/v1/driving/-122.2447172,47.3535985;-122.2447143,47.3602083;-122.244703,47.3667796;-122.2441332,47.3737109;-122.2445667,47.3807536;-122.2435025,47.387561;-122.2368741,47.3925678;-122.2299442,47.3972545;-122.2226797,47.4023404;-122.2203527,47.4087377;-122.2208306,47.4156092;-122.2212531,47.4228171?timestamps=1499304537;1499304561;1499304584;1499304607;1499304630;1499304652;1499304675;1499304697;1499304722;1499304744;1499304766;1499304788&tidy=true&generate_hints=false&overview=false&annotations=nodes,speed&radiuses=7;7;7;7;7;7;7;7;7;7;7;7' | jq '.'

Thus as a workaround we can map-match multiple times increasing the radiuses parameter and check both confidence as well as duration the user needs to drive the leg geometry.

torinori commented 1 year ago

Hi @daniel-j-h Have you tried to change max_speed_for_map_matching in lua profile ?