Note: This is currently a proposed relation.
It is not so easy to keep the straight ways straight. Adding new nodes often make a little bump to previously straight lines. Other mappers might not know which segments really represent straights. This relation is supposed to help keeping track of curvature information obtained from visual surveys or by other means.
It could be useful also to specify where the way has a sharp point instead of changing smoothly its direction. (See the issue 3 on Osmarender/BezierCurves.)
The editors could use the information to automatically keep points lined up when they form a straight line. The renderers can use it to decide when to draw an angle and when to smoothen the line. The relation can be applied to highways, waterways, barriers -- any kind of ways really.
|type||curvature||Defines that this is a Relation of the type 'curvature'.|
|direction||forward / backward||The direction the information should be applied (in the case the way would be reversed). A possible alternative to the start/end roles (see below).|
There is one role for indicating the way, or ways, whose curvature is being marked. It is not necessary to specify the curvature for the whole way; the endpoints must be marked with the start and end roles. This also defines in which direction the other nodes should be processed. (It would be difficult to handle the reversing otherwise.) If one wants to describe the curvature of several pieces of the way, each should be indicated by these roles.
The curvature information is associated to the nodes of the way instead of the segments, specifically to the nodes where the curvature changes -- when a curve becomes a straight line or vice versa, or the way has a non-smooth change of direction.
Here "straight" means a portion of a great circle.
Two roles (straight and curve) are used to tell whether the following segments (towards the end node) are known to form a straight line or a curve. This value remains the same for all the subsequent nodes on the way until a node with a different role is encountered.
The transitions are smooth by default. If adjacent segments really meet at an angle, the cusp role should be assigned the node between them. The segments can represent (a part of) a straight line or a curve or any combination of them.
- Relations/Proposed/Geometry (similar goal)