Mapping missing turn restriction in top US cities

Objective: Map missing turn restrictions in the 200 largest US cities.
Workflow: We'll be using the iD workflow laid out in the adding turn restrictions documentation.
cc: @shvrm @maning @srividyacb @mikelmaron
Guys, before you run off mindlessly to the job, please be aware of what you are actually mapping: Turn restrictions or traffic signs denoting turn restrictions. In OpenStreetMap terms these are two totally different concepts!
- Traffic signs (
traffic_sign=*) denote the legal situation on the road. - Turn restrictions (
type=restriction) model the flow of traffic.
Most importantly: DO NOT add default turn restrictions. This especially pertains to restriction=no_u_turn restrictions on single way junctions. Hence, do not add turn restriction relations with identical members in the to and from roles, like in this bad example. This kind of restriction=no_u_turn restriction is the default.
In these cases, if you still want to add data about this turn restriction to OSM—because it is verifiably (via Mapillary etc) signed—then map with:
traffic_sign=US:R3-4ortraffic_sign=US:R3-18with a node on the waydirection=forward/backwarddepending on way direction and the direction of traffic flow the traffic sign applies to
alternatively
traffic_sign:forward=US:R3-4/traffic_sign:backward=US:R3-4ortraffic_sign:forward=US:R3-18/traffic_sign:backward=US:R3-18depending on way direction and the direction of traffic flow the traffic sign applies to
R3-4 |
R3-18 |
|---|---|
I have already contacted @bhousel and few others from Mapbox about this common mistake. Any comments appreciated.
This kind of restriction=no_u_turn restriction is the default.
Just noting that this depends heavily on the jurisdiction. In California, for example, U-turns are permitted in some circumstances unless otherwise signposted.
@GITNE Also flagging that the restriction=no_u_turn is definitely not a global default.
To add to @1ec5's California example: Victoria, Australia: https://www.vicroads.vic.gov.au/safety-and-road-rules/road-rules/a-to-z-of-road-rules/turning (where I grew up) - u-turns at random spots on the road are generally permitted except under a few limited circumstances, and where specific signage prohibits them.
The defaults in Alberta, Canada are almost the inverse of this http://www.transportation.alberta.ca/2000.htm - notably no u-turns at intersections unless specifically posted as permitted.
I'm not sure how this data can be captured for routing algorithms (note: I'm a developer who works on the open source OSRM and Valhalla routing engines for a living) without mapping it, but I'm open to practical suggestions. There are no magic databases of defaults anywhere that I'm aware of - if we don't map this stuff in OSM, there's no good way to know about it.
Just noting that this depends heavily on the jurisdiction. In California, for example, U-turns are permitted in some circumstances unless otherwise signposted.
@1ec5 This is true for the real world but not for OSM. Again, the fact that in some jurisdictions u-turns are permitted on junctions or only on junctions is a legal aspect, not an aspect of OSM's traffic flow model. If you want to represent the legal situation then map traffic signs.
@danpat Again, you are referring to legal regulations. For algorithmic routing purposes the above mentioned class of no_u_turn relations is superfluous, dead data, or in other words, the default. Why? Because no sane routing algorithm should or will advise a u-turn on arbitrary junctions or at any point of a way (even if traffic code may permit so), simply because it is dangerous (they should and do calculate loops or navigate to a turning_circle/turning_loop). Any routing algorithm which does otherwise is dangerous and broken by design, regardless of the jurisdiction. Obviously, drivers have to respect the traffic code at any time in any given jurisdiction they are. If the given jurisdiction permits a u-turn at junctions or any part of the road then drivers are free to do so but this is a decision made by the driver, this is not a routing decision.
I'm not sure how this data can be captured for routing algorithms (note: I'm a developer who works on the open source OSRM and Valhalla routing engines for a living) without mapping it, but I'm open to practical suggestions. There are no magic databases of defaults anywhere that I'm aware of - if we don't map this stuff in OSM, there's no good way to know about it.
The good thing is that you do not need to capture this data (what you actually mean by data is the legal default in any geographic location/area) because the safest assumption is to assume no random u-turns and instead to calculate loops or to direct the driver to a cul-de-sac to turn around there. This way, routing algorithms do not have to care or know if a u-turn is (legally) permitted (or technically possible) or not at any point of a way. And, they also do not need any additional data about any jurisdiction. If turning around is permitted it is on the driver to make the u-turn or not. Hence, this class of no_u_turn relations is superfluous.