I have streams of GPS points that are transmitted from a device aboard a bus in real time. I would like to use these points to infer which route the bus is following. I have routes stored as GPS point of bus stops, with a path shape which I have interpolated points every 20 meters. Currently I use the incoming points to narrow down the possible routes the vehicle is on using a finite state machine, by indicating a vehicle as possibly being on a route if it is within 50m of any point on the route.
The value of 50m is required due to the inaccuracy of the GPS unit. I therefore figured it would be better if I used map-matching to snap the incoming GPS coordinate to a road first so that I could use a smaller value of say 10m. It then occurred to me that instead of matching to a general road network, I could match to a map of just bus routes.
In the case of bus routes however, several routes follow the same road. I figured I could thus possibly use a map-matcher to solve my whole problem.
Can any map-matching algorithm match to more than one road simultaneously?
I am writing my algorithm in C#. Does anyone know of any open-source C# implementation of a map-matcher I can tinker with?