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 <[email protected]
<mailto:[email protected]>> 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 <[email protected]
<mailto:[email protected]>> 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 <[email protected]
    <mailto:[email protected]>> 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
    <[email protected] <mailto:[email protected]>> wrote:

        Hello, i dont want any ferries in my routes. Is this possible?

        _______________________________________________
        OSRM-talk mailing list
        [email protected] <mailto:[email protected]>
        https://lists.openstreetmap.org/listinfo/osrm-talk


    _______________________________________________
    OSRM-talk mailing list
    [email protected] <mailto:[email protected]>
    https://lists.openstreetmap.org/listinfo/osrm-talk

    _______________________________________________
    OSRM-talk mailing list
    [email protected] <mailto:[email protected]>
    https://lists.openstreetmap.org/listinfo/osrm-talk


_______________________________________________
OSRM-talk mailing list
[email protected] <mailto:[email protected]>
https://lists.openstreetmap.org/listinfo/osrm-talk


_______________________________________________
OSRM-talk mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/osrm-talk


_______________________________________________
OSRM-talk mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/osrm-talk

Reply via email to