Package org.geotools.geometry
Class GeneralPosition
- Object
-
- AbstractPosition
-
- GeneralPosition
-
- All Implemented Interfaces:
Serializable
,Cloneable
,Position
,Cloneable
- Direct Known Subclasses:
TransformedPosition
public class GeneralPosition extends AbstractPosition implements Serializable, Cloneable
Holds the coordinates for a position within some coordinate reference system. SinceDirectPosition
s, as data types, will often be included in larger objects (such as geometries) that have references toCoordinateReferenceSystem
, thegetCoordinateReferenceSystem()
method may returnsnull
if this particularDirectPosition
is included in a larger object with such a reference to a coordinate reference system. In this case, the cordinate reference system is implicitly assumed to take on the value of the containing object'sCoordinateReferenceSystem
.This particular implementation of
DirectPosition
is said "General" because it uses an array of ordinates of an arbitrary length. If the direct position is know to be always two-dimensional, thenPosition2D
may provides a more efficient implementation.Most methods in this implementation are final for performance reason.
- Since:
- 2.0
- Author:
- Martin Desruisseaux (IRD)
- See Also:
Position1D
,Position2D
,Point2D
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description double[]
ordinates
The ordinates of the direct position.
-
Constructor Summary
Constructors Constructor Description GeneralPosition(double[] ordinates)
Constructs a position with the specified ordinates.GeneralPosition(double x, double y)
Constructs a 2D position from the specified ordinates.GeneralPosition(double x, double y, double z)
Constructs a 3D position from the specified ordinates.GeneralPosition(int numDim)
Constructs a position with the specified number of dimensions.GeneralPosition(Point2D point)
Constructs a position from the specifiedPoint2D
.GeneralPosition(Position point)
Constructs a position initialized to the same values than the specified point.GeneralPosition(CoordinateReferenceSystem crs)
Constructs a position using the specified coordinate reference system.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description GeneralPosition
clone()
Returns a deep copy of this position.double[]
getCoordinate()
Returns a sequence of numbers that hold the coordinate of this position in its reference system.CoordinateReferenceSystem
getCoordinateReferenceSystem()
Returns the coordinate reference system in which the coordinate is given.int
getDimension()
The length of coordinate sequence (the number of entries).double
getOrdinate(int dimension)
Returns the ordinate at the specified dimension.int
hashCode()
Returns a hash value for this coordinate.void
setCoordinateReferenceSystem(CoordinateReferenceSystem crs)
Set the coordinate reference system in which the coordinate is given.void
setLocation(Point2D point)
Set this coordinate to the specifiedPoint2D
.void
setLocation(Position position)
Set this coordinate to the specified direct position.void
setLocation(GeneralPosition position)
Set this coordinate to the specified direct position.void
setOrdinate(int dimension, double value)
Sets the ordinate value along the specified dimension.Point2D
toPoint2D()
Returns aPoint2D
with the same coordinate as this direct position.-
Methods inherited from class AbstractPosition
checkCoordinateReferenceSystemDimension, equals, getDirectPosition, setPosition, toString
-
-
-
-
Constructor Detail
-
GeneralPosition
public GeneralPosition(CoordinateReferenceSystem crs)
Constructs a position using the specified coordinate reference system. The number of dimensions is inferred from the coordinate reference system.- Parameters:
crs
- The coordinate reference system to be given to this position.- Since:
- 2.2
-
GeneralPosition
public GeneralPosition(int numDim) throws NegativeArraySizeException
Constructs a position with the specified number of dimensions.- Parameters:
numDim
- Number of dimensions.- Throws:
NegativeArraySizeException
- ifnumDim
is negative.
-
GeneralPosition
public GeneralPosition(double[] ordinates)
Constructs a position with the specified ordinates. Theordinates
array will be copied.- Parameters:
ordinates
- The ordinate values to copy.
-
GeneralPosition
public GeneralPosition(double x, double y)
Constructs a 2D position from the specified ordinates. Despite their name, the (x,y) coordinates don't need to be oriented toward (East, North). See thePosition2D
javadoc for details.- Parameters:
x
- The first ordinate value.y
- The second ordinate value.
-
GeneralPosition
public GeneralPosition(double x, double y, double z)
Constructs a 3D position from the specified ordinates. Despite their name, the (x,y,z) coordinates don't need to be oriented toward (East, North, Up).- Parameters:
x
- The first ordinate value.y
- The second ordinate value.z
- The third ordinate value.
-
GeneralPosition
public GeneralPosition(Point2D point)
Constructs a position from the specifiedPoint2D
.- Parameters:
point
- The position to copy.
-
GeneralPosition
public GeneralPosition(Position point)
Constructs a position initialized to the same values than the specified point.- Parameters:
point
- The position to copy.- Since:
- 2.2
-
-
Method Detail
-
getCoordinateReferenceSystem
public final CoordinateReferenceSystem 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 coordinate reference system.- Specified by:
getCoordinateReferenceSystem
in interfacePosition
- Returns:
- The coordinate reference system, or
null
.
-
setCoordinateReferenceSystem
public void setCoordinateReferenceSystem(CoordinateReferenceSystem crs) throws MismatchedDimensionException
Set the coordinate reference system in which the coordinate is given.- Parameters:
crs
- The new coordinate reference system, ornull
.- Throws:
MismatchedDimensionException
- if the specified CRS doesn't have the expected number of dimensions.
-
getDimension
public final int getDimension()
The length of coordinate sequence (the number of entries). This may be less than or equal to the dimensionality of the coordinate reference system.- Specified by:
getDimension
in interfacePosition
- Returns:
- The dimensionality of this position.
-
getCoordinate
public final double[] getCoordinate()
Returns a sequence of numbers that hold the coordinate of this position in its reference system.- Specified by:
getCoordinate
in interfacePosition
- Overrides:
getCoordinate
in classAbstractPosition
- Returns:
- A copy of the coordinates.
-
getOrdinate
public final double getOrdinate(int dimension) throws IndexOutOfBoundsException
Returns the ordinate at the specified dimension.- Specified by:
getOrdinate
in interfacePosition
- 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.
-
setOrdinate
public final void setOrdinate(int dimension, double value) throws IndexOutOfBoundsException
Sets the ordinate value along the specified dimension.- Specified by:
setOrdinate
in interfacePosition
- Parameters:
dimension
- the dimension for the ordinate of interest.value
- the ordinate value of interest.- Throws:
IndexOutOfBoundsException
- if the specified dimension is out of bounds.
-
setLocation
public final void setLocation(Position position) throws MismatchedDimensionException
Set this coordinate to the specified direct position. If the specified position contains a coordinate reference system, then the CRS for this position will be set to the CRS of the specified position.- Parameters:
position
- The new position for this point.- Throws:
MismatchedDimensionException
- if this point doesn't have the expected dimension.- Since:
- 2.2
-
setLocation
public final void setLocation(GeneralPosition position) throws MismatchedDimensionException
Set this coordinate to the specified direct position. This method is identical tosetLocation(Position)
, but is slightly faster in the special case of anGeneralDirectPosition
implementation.- Parameters:
position
- The new position for this point.- Throws:
MismatchedDimensionException
- if this point doesn't have the expected dimension.
-
setLocation
public final void setLocation(Point2D point) throws MismatchedDimensionException
Set this coordinate to the specifiedPoint2D
. This coordinate must be two-dimensional.- Parameters:
point
- The new coordinate for this point.- Throws:
MismatchedDimensionException
- if this coordinate point is not two-dimensional.
-
toPoint2D
public Point2D toPoint2D() throws IllegalStateException
Returns aPoint2D
with the same coordinate as this direct position. This is a convenience method for interoperability with Java2D.- Returns:
- This position as a two-dimensional point.
- Throws:
IllegalStateException
- if this coordinate point is not two-dimensional.
-
hashCode
public int hashCode()
Returns a hash value for this coordinate.- Specified by:
hashCode
in interfacePosition
- Overrides:
hashCode
in classAbstractPosition
- Returns:
- A hash code value for this position.
-
clone
public GeneralPosition clone()
Returns a deep copy of this position.- Specified by:
clone
in interfaceCloneable
- Overrides:
clone
in classObject
- Returns:
- A copy of this object.
- See Also:
Object.clone()
-
-