[Routing] [motorway_link] description of direction

Jon Bright jon at siliconcircus.com
Mon Jun 16 15:38:21 BST 2008


Hi,

Nic Roets wrote:
> 
> I may not understand you correctly.

I perhaps didn't explain well.  I've made a very rough model of the 
Boulogne junction that I mentioned in my previous mail.

http://discord.ensued.net/boulogne.png

The user is on the orange way and will be routed to the yellow way. 
Depending on the class (or lack) of vehicle in question, the route will 
either be orange, blue, yellow or orange, gray, magenta, yellow.

The only points in this map that are relevant for a routing system (to 
this fraction of the route) are A, B, C and D.  The system has a 
precalculated table that says

A->B = 70m
B->C = 88m
C->D = 190m
A->D = 188m

And it doesn't store any information at all about the nodes between A 
and D, between A and B, B and C or between C and D, as it doesn't need 
to know that information in order to produce a route.  (The nodes may be 
present at another level to aid it in its map display, but they won't be 
considered at the routing stage.)

Since considering the intervening nodes may be an inconvenience to 
implementers, I was thinking that anything we come up with should 
restrict itself to (in this example) referencing nodes A, B, C and D. 
But if you restrict yourself in that way, it's difficult to 
differentiate the two possible routes.  For the longer route, you can do

	from=orange, to=yellow, via=B
or
	from=orange, to=yellow, via=C


...but the other route has to be...

	from=orange, to=yellow, via=A
or
	from=orange, to=yellow, via=D

...neither of which uniquely identifies the route, since the longer 
route also goes via A and D.

But you should in all cases be able to uniquely identify a route when 
specifying ways.  So:

	from=orange, to=yellow, via=blue
	from=orange, to=yellow, via=gray (or magenta)

> My understanding is that the 'via' node will always occur in both the
> 'from' way and the 'to' way.

Hm, that doesn't fit with my understanding.

> The difficult case is http://www.rational.co.za/routeRelation.png
> All 3 ways are bidirectional. If the computer wants to route you from
> the gray way to make a left turn (with or without reaching the green
> way) it needs to be able to reliably detect which relations to use.

Right - tricky case.  I don't think "via" helps that case, no matter 
whether "via" is a node or a way?  Taking on your suggestion of 
specifying left and right: possibly as a new "direction" tag in the 
suggestion from my previous mail?

<relation>
<member type="way" role="from" ref="...gray..." />
<member type="way" role="to" ref="...orange..." />
<tag k="type" v="route_info" />
<tag k="direction" v="left" />
<tag k="text:en_ZA" v="...specific directions..." />
</relation>

<relation>
<member type="way" role="from" ref="...gray..." />
<member type="way" role="to" ref="...orange..." />
<tag k="type" v="route_info" />
<tag k="direction" v="right" />
<tag k="text:en_ZA" v="...specific directions..." />
</relation>

-- 
Jon Bright
Silicon Circus Ltd.
http://www.siliconcircus.com




More information about the Routing mailing list