Package com.luciad.geometries
Class PolylineRing
java.lang.Object
com.luciad.geometries.Geometry
com.luciad.geometries.Curve
com.luciad.geometries.Ring
com.luciad.geometries.CompositeRing
com.luciad.geometries.PolylineRing
- All Implemented Interfaces:
AutoCloseable
Represents a polyline that is closed, i.e., the first point and the last point coincide.
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
protected void
finalize()
double
getArea()
Returns the 2D area enclosed by this polyline ring.Returns the interpolation type of the line segment.Returns the orientation of this polyline ring.getPoint
(long index) Returns the coordinate for the requested index.long
Returns the number of points in the polyline ring.List
<@NotNull Coordinate> Returns the list of points of this polyline ring.insertPoint
(long index, Coordinate newLocation) Creates a newPolylineRing
with an newly inserted control point.movePoint
(long index, Coordinate newLocation) Creates a newPolylineRing
with a moved control point.removePoint
(long index) Creates a newPolylineRing
with a control point removed.translate
(Coordinate translation) Translates the entire polyline ring.Methods inherited from class com.luciad.geometries.CompositeRing
getCurveAt, getCurveCount
Methods inherited from class com.luciad.geometries.Curve
computePoint, getLength2D
Methods inherited from class com.luciad.geometries.Geometry
getBounds, getReference
-
Method Details
-
finalize
protected void finalize()- Overrides:
finalize
in classCompositeRing
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Overrides:
close
in classCompositeRing
-
getPointCount
public long getPointCount()Returns the number of points in the polyline ring.- Returns:
- the number of points in the polyline ring.
-
getPoint
Returns the coordinate for the requested index.- Parameters:
index
- the index of the requested point.- Returns:
- the point at the index.
- Throws:
IllegalArgumentException
- when requesting an invalid index.
-
getPoints
Returns the list of points of this polyline ring.- Returns:
- the list of points of this polyline ring.
-
getInterpolationType
Returns the interpolation type of the line segment.One of
- Returns:
- the interpolation type of the line segment.
-
translate
Translates the entire polyline ring.Note: when the polyline ring is defined in a geodetic reference and uses geodetic interpolation, the translation is not performed by translating the points one by one. Instead, a translation method is used that better preserves the shape of the polyline ring when moving it towards (or away from) the poles.
- Parameters:
translation
- the translation vector- Returns:
- a new, translated geometry
-
movePoint
@NotNull public PolylineRing movePoint(long index, @NotNull Coordinate newLocation) throws IllegalArgumentException Creates a newPolylineRing
with a moved control point.- Parameters:
index
- the index of the point to move. Should be in [0,getPointCount()
- 1].newLocation
- the new location of the point- Returns:
- a new geometry
- Throws:
IllegalArgumentException
- for an invalid index
-
insertPoint
@NotNull public PolylineRing insertPoint(long index, @NotNull Coordinate newLocation) throws IllegalArgumentException Creates a newPolylineRing
with an newly inserted control point.- Parameters:
index
- the index of the newly inserted control point. Should be in [0,getPointCount()
]. For index 0, a new point will be added at the start of thePolyline
ring. For indexgetPointCount()
, a new point is added at the end of thePolyline
ring. For other index values, a new point will be added between the point at specified (index-1) and the point at the index position.newLocation
- the location of the new point- Returns:
- a new geometry
- Throws:
IllegalArgumentException
- for an invalid index
-
removePoint
Creates a newPolylineRing
with a control point removed.This methods returns a copy of the polyline ring if its point count is less or equal to 3.
- Parameters:
index
- the index of the point to be removed. Should be in [0,getPointCount()
- 1].- Returns:
- a new geometry
- Throws:
IllegalArgumentException
- for an invalid index
-
getArea
Returns the 2D area enclosed by this polyline ring.The calculations are performed in the coordinate reference of this geometry. This means that
- for geodetic references, the curvature of the line segments are taken into account (depending on the
interpolation type
). - for other references, the calculations are cartesian.
The returned value is expressed in the unit of measure of the reference of this geometry.
- for geodetic references, this is always meters.
- or other references this is typically meters, but depending on the reference the unit of measure can also be something else like millimeters or feet.
Limitations:
- The area calculation is performed in 2D. For 3D polyline rings, the z value will be ignored and considered as 0.
- For this reason, geometries with a geocentric reference are not supported at all. In this case, an exception is thrown.
- Geometries with a
rhumb line
interpolation type are not supported. In this case, an exception is thrown. - The calculations are only correct for non-self-intersecting polyline rings. If a polyline ring does self-intersect, one of the parts of ring may be considered as interior instead of exterior during this calculation, and the area will be smaller than it actually is.
- Returns:
- the 2D area enclosed by this polyline ring.
- Throws:
IllegalArgumentException
- when using this method on a geometry with a geocentric reference, or with a rhumb interpolation type.- Since:
- 2025.0
- for geodetic references, the curvature of the line segments are taken into account (depending on the
-
getOrientation
Returns the orientation of this polyline ring.The calculations are performed in the coordinate reference of this geometry. This means that
- for geodetic references, the curvature of the line segments are taken into account (depending on the
interpolation type
). - for other references, the calculations are cartesian.
Limitations:
- The calculation is performed in 2D. For 3D polyline rings, the z value will be ignored and considered as 0.
- For this reason, geometries with a geocentric reference are not supported at all. In this case, an exception is thrown.
- Geometries with a
rhumb line
interpolation type are not supported. In this case, an exception is thrown. - The orientation is not well-defined for polyline rings that self-intersect. This function will then return the orientation of the largest sub-part of the polyline ring.
- Returns:
- the orientation of this polyline ring.
- Throws:
IllegalArgumentException
- when using this method on a geometry with a geocentric reference, or with a rhumb interpolation type.- Since:
- 2025.0
- for geodetic references, the curvature of the line segments are taken into account (depending on the
-