Routing penalties/Controlling U-turn penalties
|For the latest discussion on this section please visit the wiki forum thread.|
|It is possible for this method to fail to prevent A U-turn when it is the first segment of a route or reroute. .If you observe this method to fail when it is implemented properly, please report it in this forum thread|
U-turns through a median segment will be penalized when all three of the below criteria are met. This allows the prevention of U-turns on divided highways, parallel roads, including box (#), and H style intersections.
- The U-turn we want to forbid is one incoming one-way segment, one median segment, and one outgoing one-way segment.
- There is a median segment of length less than 15 m (49 feet).
- The portion of those two segments closest to the median segment must be within ±5° of exactly parallel.
To allow a U-turn through a median, ensure that any one of the above criteria are broken:
- To allow the median U-turn in both directions, it is simplest to make the median segment longer than 15 meters. (Breaking criteria #2)
- To allow the U-turn in only one direction, it is simplest to adjust the turn angles in only for the segments of the allowed U-turn so they are wider than the ±5° allowance of exactly parallel. This is easily achieved without affecting the overall look of the map using a Micro-dogleg.
A convenient way to check if the two side segments are parallel is to use another segment as a reference tool. If the median segment has no geometry nodes, it can be the reference segment. Otherwise you can draw a new segment as a reference tool with no geometry which connects the A and B nodes of the median segment. The reference segment can be deleted after the check is complete, if appropriate.
Check two angles:
- X — the angle between the incoming one-way segment and the reference segment
- Y — the angle between the outgoing one-way segment and the reference segment.
If the sum of these two angles is within 5° of 180° (between 175-185°), then the roads are considered parallel.