## org.opengis.geometry.coordinate
Interface ArcString

All Superinterfaces:
  CurveSegment, GenericCurve

All Known Subinterfaces:
  Arc, Circle

    @UML(identifier="GM_ArcString",
         specification=ISO_19107)
    public interface ArcString

extends CurveSegment

Similar to a line string except that the interpolation is by circular arcs. Since it requires 3 points to determine a circular arc, the control points are treated as a sequence of overlapping sets of 3 positions, the start of each arc, some point between the start and end, and the end of each arc. Since the end of each arc is the start of the next, this position is not repeated in the control points sequence.

Since:
  GeoAPI 1.0
Version:
  ISO 19107
See Also:
  `GeometryFactory.createArcString(java.util.List<org.opengis.geometry.coordinate.Position>)`, `ArcStringByBulge.asArcString()`

Method Summary
`List<Arc>` `asArcs()` Constructs a sequence of arcs that is the geometric equivalent of this arc string.
`PointArray` `getControlPoints()` Returns the sequence of points used to control the arcs in this string.
`CurveInterpolation` `getInterpolation()` The interpolation for a `ArcString` is "circular arc by 3 points".
`int` `getNumArc()` Returns the number of circular arcs in the string.

Methods inherited from interface CurveSegment
`getBoundary, getCurve, getNumDerivativesAtEnd, getNumDerivativesAtStart, getNumDerivativesInterior, getSamplePoints, reverse`

Methods inherited from interface GenericCurve
`asLineString, forConstructiveParam, forParam, getEndConstructiveParam, getEndParam, getEndPoint, getParamForPoint, getStartConstructiveParam, getStartParam, getStartPoint, getTangent, length, length`

Method Detail

### getNumArc

    @UML(identifier="numArc",
         obligation=MANDATORY,
         specification=ISO_19107)
    int getNumArc()

  Returns the number of circular arcs in the string. Since the interpolation method requires overlapping sets of 3 positions, the number of arcs determines the number of control points:

  >     numArc = (controlPoints.length - 1)/2

  Returns:
    The number of circular arcs.

### getControlPoints

    @UML(identifier="controlPoints",
         obligation=MANDATORY,
         specification=ISO_19107)
    PointArray getControlPoints()

  Returns the sequence of points used to control the arcs in this string. The first three positions in the sequence determines the first arc. Any three consecutive positions beginning with an odd offset, determine another arc in the string.

  Returns:
    The control points. The array size is `2*`numArc` +1`.

### getInterpolation

    @UML(identifier="interpolation",
         obligation=MANDATORY,
         specification=ISO_19107)
    CurveInterpolation getInterpolation()

  The interpolation for a `ArcString` is "circular arc by 3 points".

  Specified by:
    `getInterpolation` in interface `CurveSegment`
  Returns:
    Always `CurveInterpolation.CIRCULAR_ARC_3_POINTS`.

### asArcs

    @UML(identifier="asGM_Arc",
         obligation=MANDATORY,
         specification=ISO_19107)
    List<Arc> asArcs()

  Constructs a sequence of arcs that is the geometric equivalent of this arc string.

  Returns:
    The sequence of arcs.

Copyright © 1994-2008 Open Geospatial Consortium. All Rights Reserved.