[OSRM-talk] How to force match service to return public transport routes only?
Daniel Patterson
daniel at mapbox.com
Mon Apr 30 16:26:22 UTC 2018
Hi Patrick,
Nobody has written a "How to make a public transport profile" document
for OSRM, you'll have to piece it together from examples and reading code.
That said, the "testbot" profile here:
https://github.com/Project-OSRM/osrm-backend/blob/master/profiles/testbot.lua
is fairly simple. There are 3 functions: `process_node`, `process_way`,
and `process_turn`. The `process_way` function is run for every way in the
OSM file you input, and it decides whether to include it in the routing
graph (by setting properties on the `result` object), or to exclude it (by
simply returning without doing any work).
As someone else pointed out in another thread, the `car.lua` profile is
pretty complex - it's developed over time, and has a lot of logic in it
that makes it hard to understand. I'd start with the testbot profile
above, and add the stuff you think you need.
You might also want to take a look at
https://github.com/Project-OSRM/osrm-frontend/tree/gh-pages/debug which is
a web viewer that can show you what the routing graph looks like.
daniel
On Mon, Apr 30, 2018 at 8:39 AM, Patrick Agin <agin.patrick at gmail.com>
wrote:
> Thanks again Daniel. Could you just give me an example (with a snippet of
> code maybe) of a good implementation of point 1 (Lua profile that only
> includes public transport ways in the graph). I just don't have any clue
> about implementing this and I'm not aware of any docs that could help me
> with that.
> Patrick
>
> 2018-04-30 11:30 GMT-04:00 Daniel Patterson <daniel at mapbox.com>:
>
>> Hi Patrick,
>>
>> This could be tricky, depending on how long the traces you're trying to
>> match are.
>>
>> The OSRM Lua profiles basically act as a filter - they decide which
>> ways from OSM are included in the routing graph, and assign properties to
>> edges in the graph.
>>
>> The map-matching algorithm will try to snap your coordinate list to the
>> most likely path across the routing graph.
>>
>> In order to only snap to public transport paths, you'll need:
>>
>> 1) A Lua profile that only includes public transport ways in the
>> graph.
>> 2) A way to ensure that all the public transport paths are connected
>> together (this could be difficult without including lots of extra stuff you
>> don't want in the graph)
>> 3) GPS traces that are somewhat close to the actual paths themselves,
>> as mapped in OSM
>>
>> (2) could be the really tricky bit here. If the public transport paths
>> are not connected, then any GPS trace you have that spans two public
>> transport routes (say, a bus change, or a train change) but those routes
>> aren't actually connected by the graph, will cause problems with the
>> map-matching algorithm.
>>
>> daniel
>>
>> On Mon, Apr 30, 2018 at 7:23 AM, Patrick Agin <agin.patrick at gmail.com>
>> wrote:
>>
>>> Hi everyone,
>>> I'm trying to define a profile to force match service to take public
>>> transport routes only. I tried to add residential in excludable so I can
>>> add exclude=residential at query time but it does not change anything to
>>> the returned answer. Can someone help or point me towards documentation
>>> that could help (I've read profile.md but it does not help me much).
>>> Thanks a lot,
>>> Patrick (newbie with osrm)
>>>
>>> _______________________________________________
>>> OSRM-talk mailing list
>>> OSRM-talk at openstreetmap.org
>>> https://lists.openstreetmap.org/listinfo/osrm-talk
>>>
>>>
>>
>> _______________________________________________
>> OSRM-talk mailing list
>> OSRM-talk at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/osrm-talk
>>
>>
>
> _______________________________________________
> OSRM-talk mailing list
> OSRM-talk at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/osrm-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/osrm-talk/attachments/20180430/50fb8cbc/attachment-0001.html>
More information about the OSRM-talk
mailing list