From OpenStreetMap Wiki
Jump to: navigation, search

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.


Key Value Discussion
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.

Way or Node Role Recurrence? Discussion
Way way One or more The way(s) whose curvature we are defining. (The points can be part of several ways.) If there are more than one way, they should be connected by a single point and be contiguous. This could also be a relation that defines such a collection of ways.
Node start One or more This is the start point of the way(s). (Alternatively use the direction tag.)
Node end One or more This is the end point of the way(s), or at least further ahead than the start point (forward).
Node straight One or more The following segments are parts of a straight line.
Node curve One or more The following segments are parts of a curve.
Node cusp One or more The adjacent segments meet at an angle in this point.



See also