[OSRM-talk] How to disable all ferry routes?

Julien Coupey julien at coupey.fr
Thu Nov 12 13:22:37 UTC 2015


Hi

As I'm curious about this thread, I gave the proposed solution a try. On 
the same osm.pbf data for France, I compared the default car profile 
with the same profile modified with mode_ferry = 0 on line 151.

The modified profile does prevent routing through some ways tagged as 
"route": "ferry" (e.g. http://www.osm.org/way/148185791 and 
http://www.osm.org/way/30154495). But some are still used for routing, 
like for example http://www.osm.org/way/307774731.

Yet, I would expect the same behavior for all above examples in the 
ferries handling part inside way_function in the profile:
https://github.com/Project-OSRM/osrm-backend/blob/develop/profiles/car.lua#L257-L269

Could this be related to other tags, or am I missing something here?

Thanks,
Julien


Le 12/11/2015 04:24, Richard Marsden a écrit :
> thanks - I was still at the LUA  stage (and quite a bit can be worked
> out from just this level).
>
> The explanation below explains 0 and 1, but I couldn't see any
> explanation of the other values - despite some c++ code that set default
> TravelMode values of 4 in a couple of places. No documentation in
> TravelMode.hpp????
>
> The lack of documentation is an issue, and I was planning to write a few
> notes about the LUA profiles for others on my blog. They're bound to be
> incomplete, but they would be a start and could be updated/corrected as
> a living document.
>
> Richard
>
> On Nov 11, 2015, at 6:50 PM, Daniel Hofmann <hofmann at mapbox.com
> <mailto:hofmann at mapbox.com>> wrote:
>
>> Let me show you how you can find out more about specific variables
>> like mode_ferry:
>>
>> your best bet is to search the code base, for example, see this
>> initial search for mode_ferry:
>>
>> https://github.com/Project-OSRM/osrm-backend/search?utf8=%E2%9C%93&q=mode_ferry&type=Code
>>
>> you can see how we set result.forward_mode and result.backward_mode to
>> mode_ferry there, so let's search for forward_mode:
>>
>> https://github.com/Project-OSRM/osrm-backend/search?utf8=%E2%9C%93&q=forward_mode&type=Code
>>
>> this gives us some lua profiles, which we ignore, since we want to see
>> how the OSRM implementation uses forward_mode and backward_mode; the
>> last search hit is scripting_environment.cpp:
>>
>> https://github.com/Project-OSRM/osrm-backend/blob/8f6fc0146ba76d34d20c5b7a87b75249bbb12b82/extractor/scripting_environment.cpp#L121-L124
>>
>> this is where we expose the ExtractionWay's set_forward_mode and
>> set_backward_mode member functions, aliasing them to the lua
>> properties forward_mode and backward_mode --- so let's go on searching
>> for the ExtractionWay type:
>>
>> https://github.com/Project-OSRM/osrm-backend/blob/8f6fc0146ba76d34d20c5b7a87b75249bbb12b82/extractor/extraction_way.hpp#L112-L115
>>
>> in those member functions, the forward_travel_mode and
>> backward_travel_mode are set accordingly. If you check their types a
>> few lines below in the member attribute declarations, you will see
>> they are of type TravelMode. And here it is:
>>
>> https://github.com/Project-OSRM/osrm-backend/blob/8f6fc0146ba76d34d20c5b7a87b75249bbb12b82/data_structures/travel_mode.hpp#L34-L35
>>
>> a quick search for TRAVEL_MODE_INACCESSIBLE reveals the following line
>> in the extractor:
>>
>> https://github.com/Project-OSRM/osrm-backend/blob/9ef1f8cba31ec8323b357d233f1c552b1c7c9e09/extractor/extractor_callbacks.cpp#L95-L99
>>
>> where ways are discarded, if they are inaccessible! Tada!
>>
>>
>> As you can see, even though it is quite a bit of effort tracing back
>> specific variables, it can be done in a few minutes with only the most
>> basic tools (I did this entirely using the Github search functionality
>> --- of course you can use grep or your code browser of choice, too).
>>
>> Hope that helps,
>> Daniel J H
>>
>> On Wed, Nov 11, 2015 at 7:06 PM, Richard Marsden <winwaed at gmail.com
>> <mailto:winwaed at gmail.com>> wrote:
>>
>>     By coincidence I was working through the lua scripts trying to
>>     understand them.
>>
>>     So what is the significance of the 1,2,3?  Just unique
>>     identifiers. As long as they're non-zero, they will be enabled?
>>
>>     Richard
>>
>>
>>     On Nov 11, 2015, at 9:23 AM, Daniel Hofmann <hofmann at mapbox.com
>>     <mailto:hofmann at mapbox.com>> wrote:
>>
>>>     If you take a look at the car profile, you will see a ferry_mode
>>>     variable, that sets the travel mode:
>>>
>>>     https://github.com/Project-OSRM/osrm-backend/blob/8f6fc0146ba76d34d20c5b7a87b75249bbb12b82/profiles/car.lua#L151
>>>
>>>     If you set this to 0 (i.e. 'inaccessible") as defined here:
>>>
>>>     https://github.com/Project-OSRM/osrm-backend/blob/8f6fc0146ba76d34d20c5b7a87b75249bbb12b82/data_structures/travel_mode.hpp#L34-L35
>>>
>>>     then the extractor discards ferry routes because you marked them
>>>     inaccessible.
>>>
>>>     On Wed, Nov 11, 2015 at 9:03 AM, Peter Becker
>>>     <floyd.net at gmail.com <mailto:floyd.net at gmail.com>> wrote:
>>>
>>>         Hello, i dont want any ferries in my routes. Is this possible?
>>>
>>>         _______________________________________________
>>>         OSRM-talk mailing list
>>>         OSRM-talk at openstreetmap.org <mailto:OSRM-talk at openstreetmap.org>
>>>         https://lists.openstreetmap.org/listinfo/osrm-talk
>>>
>>>
>>>     _______________________________________________
>>>     OSRM-talk mailing list
>>>     OSRM-talk at openstreetmap.org <mailto:OSRM-talk at openstreetmap.org>
>>>     https://lists.openstreetmap.org/listinfo/osrm-talk
>>
>>     _______________________________________________
>>     OSRM-talk mailing list
>>     OSRM-talk at openstreetmap.org <mailto:OSRM-talk at openstreetmap.org>
>>     https://lists.openstreetmap.org/listinfo/osrm-talk
>>
>>
>> _______________________________________________
>> OSRM-talk mailing list
>> OSRM-talk at openstreetmap.org <mailto: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
>



More information about the OSRM-talk mailing list