# gml:segments

This property element contains a list of curve segments. The order of the elements is significant and shall be preserved when processing the array.

## Element information

Namespace: http://www.opengis.net/gml/3.2

Schema document: external/ogc/gml/3.2.1/geometryPrimitives.xsd

Type: gml:CurveSegmentArrayPropertyType

Properties: Global, Qualified

## Content

- Choice [1..1]
- gml:LineStringSegment [0..*] A LineStringSegment is a curve segment that is defined by two or more control points including the start and end point, with linear interpolation between them. The content model follows the general pattern for the encoding of curve segments.
- gml:ArcString [0..*] An ArcString is a curve segment that uses three-point circular arc interpolation ("circularArc3Points"). The number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be 2 * numArc + 1. The content model follows the general pattern for the encoding of curve segments.
- gml:Arc [0..*] An Arc is an arc string with only one arc unit, i.e. three control points including the start and end point. As arc is an arc string consisting of a single arc, the attribute "numArc" is fixed to "1".
- gml:Circle [0..*] A Circle is an arc whose ends coincide to form a simple closed loop. The three control points shall be distinct non-co-linear points for the circle to be unambiguously defined. The arc is simply extended past the third control point until the first control point is encountered.
- gml:ArcStringByBulge [0..*] This variant of the arc computes the mid points of the arcs instead of storing the coordinates directly. The control point sequence consists of the start and end points of each arc plus the bulge (see ISO 19107:2003, 6.4.17.2). The normal is a vector normal (perpendicular) to the chord of the arc (see ISO 19107:2003, 6.4.17.4). The interpolation is fixed as "circularArc2PointWithBulge". The number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be numArc + 1. The content model follows the general pattern for the encoding of curve segments.
- gml:ArcByBulge [0..*] An ArcByBulge is an arc string with only one arc unit, i.e. two control points, one bulge and one normal vector. As arc is an arc string consisting of a single arc, the attribute "numArc" is fixed to "1".
- gml:ArcByCenterPoint [0..*] This variant of the arc requires that the points on the arc shall be computed instead of storing the coordinates directly. The single control point is the center point of the arc plus the radius and the bearing at start and end. This representation can be used only in 2D. The element radius specifies the radius of the arc. The element startAngle specifies the bearing of the arc at the start. The element endAngle specifies the bearing of the arc at the end. The interpolation is fixed as "circularArcCenterPointWithRadius". Since this type describes always a single arc, the attribute "numArc" is fixed to "1". The content model follows the general pattern for the encoding of curve segments.
- gml:CircleByCenterPoint [0..*] A gml:CircleByCenterPoint is an gml:ArcByCenterPoint with identical start and end angle to form a full circle. Again, this representation can be used only in 2D.
- gml:CubicSpline [0..*] The number of control points shall be at least three. vectorAtStart is the unit tangent vector at the start point of the spline. vectorAtEnd is the unit tangent vector at the end point of the spline. Only the direction of the vectors shall be used to determine the shape of the cubic spline, not their length. interpolation is fixed as "cubicSpline". degree shall be the degree of the polynomial used for the interpolation in this spline. Therefore the degree for a cubic spline is fixed to "3". The content model follows the general pattern for the encoding of curve segments.
- gml:BSpline [0..*] A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions as specified in ISO 19107:2003, 6.4.30. Therefore, interpolation may be either "polynomialSpline" or "rationalSpline" depending on the interpolation type; default is "polynomialSpline". degree shall be the degree of the polynomial used for interpolation in this spline. knot shall be the sequence of distinct knots used to define the spline basis functions (see ISO 19107:2003, 6.4.26.2). The attribute isPolynomial shall be set to "true" if this is a polynomial spline (see ISO 19107:2003, 6.4.30.5). The attribute knotType shall provide the type of knot distribution used in defining this spline (see ISO 19107:2003, 6.4.30.4). The content model follows the general pattern for the encoding of curve segments.
- gml:Bezier [0..*] Bezier curves are polynomial splines that use Bezier or Bernstein polynomials for interpolation purposes. It is a special case of the B-Spline curve with two knots. degree shall be the degree of the polynomial used for interpolation in this spline. knot shall be the sequence of distinct knots used to define the spline basis functions. interpolation is fixed as "polynomialSpline". isPolynomial is fixed as "true". knotType is not relevant for Bezier curve segments.
- gml:OffsetCurve [0..*] An offset curve is a curve at a constant distance from the basis curve. offsetBase is the base curve from which this curve is defined as an offset. distance and refDirection have the same meaning as specified in ISO 19107:2003, 6.4.23. The content model follows the general pattern for the encoding of curve segments.
- gml:Clothoid [0..*] A clothoid, or Cornu's spiral, is plane curve whose curvature is a fixed function of its length. refLocation, startParameter, endParameter and scaleFactor have the same meaning as specified in ISO 19107:2003, 6.4.22. interpolation is fixed as "clothoid". The content model follows the general pattern for the encoding of curve segments.
- gml:GeodesicString [0..*] A sequence of geodesic segments. The number of control points shall be at least two. interpolation is fixed as "geodesic". The content model follows the general pattern for the encoding of curve segments.
- gml:Geodesic [0..*]

from subst. group gml:AbstractCurveSegmentfrom subst. group gml:ArcStringfrom subst. group gml:Arcfrom subst. group gml:ArcStringByBulgefrom subst. group gml:ArcByCenterPointfrom subst. group gml:BSplinefrom subst. group gml:GeodesicString

## Attributes

*None*

## Used in

- Type gml:CurveType (Element gml:Curve)

## Sample instance

<gml:segments> <gml:LineStringSegment> <gml:pos>1.0 1.0</gml:pos> </gml:LineStringSegment> </gml:segments>