[OSM-talk] Turn restrictions

Jon Bright jon at siliconcircus.com
Thu Aug 16 08:18:11 BST 2007

Steve Coast wrote:
> Given a road direction, and roads 'Baker Street' and 'Marylebone  
> Road' you tag the way 'Baker Street' with
> no_turn_left:'Marylebone Road'

As an alternative, what about instead splitting the ways appropriately 
for making turning restrictions?  So if I have

                    |  /
                    C E
          ^         ^         ^\
          |         |         | \
          B         D         F  G
          |         |         |   \

Then I could split way A into four parts, A1, A2, A3 and A4 (left to 
right).  Assuming no turns at all from A into the side roads are 
allowed, I could then mark

A1: no_right_turn
A2: no_right_turn, no_left_turn
A3: no_right_turn

This covers travel in the direction of A's segments.  Assuming A is 
two-way and no turns are allowed from A to the side roads in the other 
direction either, you could additionally add

A4: opposite:no_left_turn
A3: opposite:no_left_turn, opposite:no_right_turn
A2: opposite:no_left_turn

The only problem remaining is how to represent the case that it's 
permitted to turn into C but not into E (ditto F/G).  But I've no idea 
how this would be represented in street signs either.  Does anyone have 
an example of C/E or F/G-like things with turning restrictions?

The advantages:

  - No chance of misspelling (or becoming out of date when someone 
changes/corrects a name)
  - No changes to JOSM needed.
  - A route planner doesn't need to make an additional query in order to 
work out which way it may not turn into.  (I have a working route finder 
- as yet without descriptive capabilities - based directly on the OSM DB 
- the number of queries is already quite enough :-)

Jon Bright
Silicon Circus Ltd.

More information about the talk mailing list