This is a proposal for relations to help routing software determine what "kind" of turn a turn is.
Problem: Some intersections are easy to understand. If there are only two/four ways and they intersect at nearly 90-degree angles, we can safely call them "left", "right", and "straight". Example
Some intersections, however, are no so clear. What's the difference between a "fork" and a "slight left/right"? How sharp does a turn have to be to be a "sharp left/right"? What if it isn't clear which way "straight" is? Knowing this involves some local knowledge, and currently we have no way to capture that in the map.
Proposed solution: Create a "turn_hint" relation which tells us how to describe a turn from one way onto another. Many intersections will not need this, because we can make educated guesses that are correct most of the time. But in certain cases, it's good to record this, as it captures local knowledge about an intersection that can't be gained from an overhead view.
Examples: This intersection of I-75 and I-24, when heading north on I-75, is a "left" and "right" according to highway signs.
On the other hand, this intersection of I-75 and I-85, also heading north on I-75, is labelled as "left" and "straight". It could just as easily be "left" and "right", or "straight" and "right", but the local signs all use "left" and "straight".
This intersection is described by locals as a "fork". This is hard for a computer to judge automatically, because the road before the fork continues after it in one direction.
|type||turn_hint||defines the type of the relations|
|turn||value||See table below|
Values for turn
- left can always be switched with right in all values below
|Turn value||Example||Sample English directions normally used|
|straight||"Go straight [onto road]." |
"Continue straight [on road]."
|left||"Turn left [onto road]."|
|slight_left||"Slight left [onto road]." |
"Turn slight left [onto road]."
"Bear left [onto road]."
|sharp_left||"Sharp left [onto road]." |
"Turn sharp left [onto road]."
|fork_left||"Bear left [at the fork] [onto road]."|
|jughandle_left||"Turn [right] at the jughandle, then [turn left]/[go straight] [onto road]." (How do people normally describe this?)|
Other types of turns could be added, such as "michigan_left", "u_turn", "hard_left", etc.
We could also use this to distinguish between a "straight" which means "keep going" (and doesn't need to be said) versus a "straight" onto a different road which should be stated explicitly when giving directions.
These are similar to the well-established Turn restrictions.