Class GeneralDirectPosition
Object
FormattableObject
AbstractDirectPosition
GeneralDirectPosition
- All Implemented Interfaces:
Serializable
,Cloneable
,Printable
,Position
,DirectPosition
public class GeneralDirectPosition
extends AbstractDirectPosition
implements Serializable, Cloneable
A mutable
DirectPosition
(the coordinates of a position) of arbitrary dimension.
This particular implementation of DirectPosition
is said "General" because it
uses an array of coordinates
of an arbitrary length. If the direct
position is known to be always two-dimensional, then DirectPosition2D
provides
a more efficient implementation.
Coordinate Reference System (CRS) optionality
SinceDirectPosition
s, as data types, will often be included in larger objects
(such as Geometry
) that have references
to CoordinateReferenceSystem
, the getCoordinateReferenceSystem()
method
may returns null
if this particular DirectPosition
is included in such
larger object. In this case, the coordinate reference system is implicitly assumed to take
on the value of the containing object's CoordinateReferenceSystem
.- Since:
- 0.3
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal double[]
The coordinates of the direct position. -
Constructor Summary
ConstructorsConstructorDescriptionGeneralDirectPosition
(double... coordinates) Constructs a position with the specified coordinates.GeneralDirectPosition
(int dimension) Constructs a position with the specified number of dimensions.Constructs a position initialized to the values parsed from the given string in Well Known Text (WKT) format.Constructs a position initialized to the same values as the specified point.Constructs a position using the specified coordinate reference system. -
Method Summary
Modifier and TypeMethodDescriptionclone()
Returns a deep copy of this position.final double
getCoordinate
(int dimension) Returns the coordinate at the specified dimension.Returns the coordinate reference system in which the coordinate is given.final double[]
Returns a sequence of numbers that hold the coordinate of this position in its reference system.final int
The length of coordinate sequence (the number of entries).void
setCoordinate
(double... coordinates) Deprecated, for removal: This API element is subject to removal in a future version.void
setCoordinate
(int dimension, double value) Sets the coordinate value along the specified dimension.void
Sets the coordinate reference system in which the coordinate is given.void
setCoordinates
(double... coordinates) Sets the coordinate values along all dimensions.void
setLocation
(DirectPosition position) Sets this coordinate to the specified direct position.Methods inherited from class AbstractDirectPosition
castOrCopy, formatTo, getCoordinate, getDirectPosition, getOrdinate, normalize, setOrdinate
Methods inherited from class FormattableObject
print, toString, toWKT
-
Field Details
-
coordinates
public final double[] coordinatesThe coordinates of the direct position. The length of this array is the dimension of this direct position.
-
-
Constructor Details
-
GeneralDirectPosition
Constructs a position using the specified coordinate reference system. The number of dimensions is inferred from the coordinate reference system. All coordinate values are initialized to zero.- Parameters:
crs
- the coordinate reference system to be given to this position.
-
GeneralDirectPosition
Constructs a position with the specified number of dimensions. All coordinate values are initialized to zero.- Parameters:
dimension
- number of dimensions.- Throws:
NegativeArraySizeException
- ifdimension
is negative.
-
GeneralDirectPosition
public GeneralDirectPosition(double... coordinates) Constructs a position with the specified coordinates. This constructor assigns the given array directly (without clone) to thecoordinates
field. Consequently, callers shall not recycle the same array for creating many instances.Implementation notes
The array is not cloned because this is usually not needed, especially in the context of variable argument lengths since the array is often created implicitly. Furthermore, thecoordinates
field is public, so cloning the array would not protect the state of this object anyway.Caution: if only one number is specified, make sure that the number type is
double
,float
orlong
otherwise theGeneralDirectPosition(int)
constructor would be invoked with a very different meaning. For example, for creating a one-dimensional coordinate initialized to the coordinate value 100, usenew GeneralDirectPosition(100.0)
, notnew GeneralDirectPosition(100)
, because the latter would actually create a position with 100 dimensions.- Parameters:
coordinates
- the coordinate values. This array is not cloned.
-
GeneralDirectPosition
Constructs a position initialized to the same values as the specified point. This is a copy constructor.- Parameters:
point
- the position to copy.
-
GeneralDirectPosition
Constructs a position initialized to the values parsed from the given string in Well Known Text (WKT) format. The given string is typically aPOINT
element like below:POINT(6 10)
POINT ZM
.- Parameters:
wkt
- thePOINT
or other kind of element to parse.- Throws:
IllegalArgumentException
- if the given string cannot be parsed.- See Also:
-
-
Method Details
-
getDimension
public final int getDimension()The length of coordinate sequence (the number of entries). This is always equals to the length of thecoordinates
array.- Specified by:
getDimension
in interfaceDirectPosition
- Returns:
- the dimensionality of this position.
-
getCoordinateReferenceSystem
Returns the coordinate reference system in which the coordinate is given. May benull
if this particularDirectPosition
is included in a larger object with such a reference to a CRS.- Specified by:
getCoordinateReferenceSystem
in interfaceDirectPosition
- Overrides:
getCoordinateReferenceSystem
in classAbstractDirectPosition
- Returns:
- the coordinate reference system, or
null
.
-
setCoordinateReferenceSystem
public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs) throws MismatchedDimensionException Sets the coordinate reference system in which the coordinate is given.- Parameters:
crs
- the new coordinate reference system, ornull
.- Throws:
MismatchedDimensionException
- if the specified CRS does not have the expected number of dimensions.
-
getCoordinates
public final double[] getCoordinates()Returns a sequence of numbers that hold the coordinate of this position in its reference system.API note: This method is final for ensuring consistency with thecoordinates
, array field, which is public.- Overrides:
getCoordinates
in classAbstractDirectPosition
- Returns:
- a copy of the
coordinates
array. - Since:
- 1.5
-
setCoordinates
Sets the coordinate values along all dimensions.- Parameters:
coordinates
- the new coordinates values, or anull
array for setting all coordinate values toNaN
.- Throws:
MismatchedDimensionException
- if the length of the specified array is not equals to the dimension of this position.- Since:
- 1.5
-
setCoordinate
@Deprecated(since="1.5", forRemoval=true) public void setCoordinate(double... coordinates) throws MismatchedDimensionException Deprecated, for removal: This API element is subject to removal in a future version.RenamedsetCoordinates(double...)
.Sets the coordinate values along all dimensions.- Throws:
MismatchedDimensionException
-
getCoordinate
Returns the coordinate at the specified dimension.API note: This method is final for ensuring consistency with thecoordinates
, array field, which is public.- Specified by:
getCoordinate
in classAbstractDirectPosition
- Parameters:
dimension
- the dimension in the range 0 to dimension-1.- Returns:
- the coordinate at the specified dimension.
- Throws:
IndexOutOfBoundsException
- if the specified dimension is out of bounds.- Since:
- 1.5
-
setCoordinate
Sets the coordinate value along the specified dimension.- Overrides:
setCoordinate
in classAbstractDirectPosition
- Parameters:
dimension
- the dimension for the coordinate of interest.value
- the coordinate value of interest.- Throws:
IndexOutOfBoundsException
- if the specified dimension is out of bounds.- Since:
- 1.5
-
setLocation
Sets this coordinate to the specified direct position. If the specified position contains a coordinate reference system (CRS), then the CRS for this position will be set to the CRS of the specified position.- Overrides:
setLocation
in classAbstractDirectPosition
- Parameters:
position
- the new position for this point, ornull
for setting all coordinate values toNaN
.- Throws:
MismatchedDimensionException
- if the given position does not have the expected dimension.
-
clone
Returns a deep copy of this position.
-
setCoordinates(double...)
.