Thanks a lot Daniel,
That gives me fuel for some exploration. I will play with the code to see
if I get anywhere.
Guillaume
On 21 October 2015 at 18:02, Daniel Patterson wrote:
> Guillaume,
>
> Yes, that's basically correct, you've understood the rough structure.
> We typically call the first graph, that looks like OSM, the
> "node-based-graph". The graph that models all turns is referred to as the
> "edge-based-graph". Somewhat confusing terminology, I know.
>
> The edge-based-graph edge weights are measured in deci-seconds.
> Everything is routed based on travel time.
>
> The "speed * length" calculation happens slightly earlier in the process:
>
>
> https://github.com/Project-OSRM/osrm-backend/blob/develop/extractor/extraction_containers.cpp#L323-L337
>
> Unfortunately, the terminology used "distance/weight" is not consistent
> across the codebase, so it can be difficult to navigate. Suffice to say,
> the traffic penalty is adding "deci-seconds" to the edge-based-edge-weight.
>
> To do per-node penalties, you would need to add a lookup table for each
> node, populate it, probably in the "node_function" in the Lua profile, then
> consult the lookup in the same place the traffic light penalty is currently
> added.
>
> daniel
>
>
> On Oct 21, 2015, at 2:26 PM, Guillaume Barreau
> wrote:
>
> Thanks Daniel and Patrick for your help,
>
> I will have to pick your brains a little bit more I am afraid.
>
> Having read this page:
> https://github.com/Project-OSRM/osrm-backend/wiki/Graph-representation
>
> I now understand that what OSRM models as a node is actually what I
> initially thought of as an edge (i.e. a piece of road connecting 2
> intersections) and what OSRM calls an edge is a transition from one road
> segment (travelled in a particular direction) to another, so the edge ends
> up being a way of crossing a road intersection. This is kind of confusing
> at first, but I can see the benefits of doing that way in terms of handling
> intersections well. Please correct me if I haven't understood properly.
>
> So in my case, the penalty would be associated with edges and not nodes.
> And all edges associated with the same physical interesection would get the
> same penalty (although this way of modelling has the advantage of allowing
> each turn to have a different penalty easily).
>
> The code you pointed me to is called at the graph preparation phase,
> right? That is fine for my purposes, I am just clarifying.
>
> This distance variable that is incremented it ends up representing the
> total penalties associated with crossing that particular intersection in a
> particular way and I assume it gets stored as the attribute of the
> corresponding edge in the graph. I was curious of when and how this
> distance (a penalty expressed in meters) then gets converted back into a
> time.
>
> Thanks a lot for your time again,
>
> Guillaume
>
>
>
> On 21 October 2015 at 15:56, Daniel Patterson wrote:
>
>> Thanks Patrick, yes, that was what I meant to point at :-)
>>
>> > On Oct 21, 2015, at 12:44 PM, Patrick Niklaus <
>> patrick.nikl...@student.kit.edu> wrote:
>> >
>> > Hey Guillaume,
>> >
>> > I think Daniel wanted to post a link to this line:
>> >
>> >
>> https://github.com/Project-OSRM/osrm-backend/blob/develop/extractor/edge_based_graph_factory.cpp#L417
>> >
>> > All you need to do is to adapt the code to not only add penalties for
>> > traffic signals but also your node.
>> > Actually this code should be made more general as outlined in
>> > https://github.com/Project-OSRM/osrm-backend/issues/1490
>> >
>> > Best,
>> > Patrick
>> >
>> >
>> > On Wed, Oct 21, 2015 at 9:02 PM, Guillaume Barreau
>> wrote:
>> >> Hi Daniel,
>> >>
>> >> Thanks a lot for this very fast reply. The url you sent appears to be
>> >> broken. Could you please double-check it for me?
>> >>
>> >> Thanks again,
>> >>
>> >> Guillaume
>> >>
>> >> On 21 October 2015 at 14:56, Daniel Patterson
>> wrote:
>> >>>
>> >>> Hi Guillaume,
>> >>>
>> >>> There is a function called for every node:
>> >>>
>> >>>
>> >>>
>> https://github.com/mapbox/inrix-processing/blob/master/regions.json#L198-L201
>> >>>
>> >>> however, it doesn't feed back any specific per-node penalties. It's
>> >>> used to flag barriers and traffic lights right now.
>> >>>
>> >>> It could be adapted to do per-node penalty values, you would probably
>> >>> need to modify the existing light penalty functionality and add a
>> lookup for
>> >>> your values, rather than using the global light penalty we have
>> currently.
>> >>>
>> >>> daniel
>> >>>
>> >>> On Oct 21, 2015, at 11:46 AM, Guillaume Barreau
>> >>> wrote:
>> >>>
>> >>> Hello,
>> >>>
>> >>> I would like to OSRM for a research project but I have this unusual
>> >>> requirement. I would want to be able to add time penalties at some
>> sets of
>> >>> vertices (defined by their id) that would