Package org.geotools.geometry
Class Position2D
Object
Point2D
Point2D.Double
Position2D
- All Implemented Interfaces:
Serializable
,Cloneable
,Position
,Cloneable
Holds the coordinates for a two-dimensional position within some coordinate reference system.
Note 1:
This class inherits x and y fields. But despite their names, they don't need to be oriented toward East and North. The (x,y) axis can have any orientation and should be understood as "ordinate 0" and "ordinate 1" values instead. This is not specific to this implementation; in Java2D too, the visual axis orientation depend on the affine transform in the graphics context.The rational for avoiding axis orientation restriction is that other
Position
implementation do not have such restriction, and it would be hard to generalize (what to do with North-East direction?).
Note 2:
Do not mix instances of this class with ordinaryPoint2D
instances in aHashSet
or asHashMap
keys. It is not possible to meet bothPoint2D.hashCode()
andPosition.hashCode()
contract, and this class choose to implements the later. Concequently,hashCode()
is inconsistent withPoint2D.equals(java.lang.Object)
(but is consistent withPosition.equals(java.lang.Object)
).In other words, it is safe to add instances of
DirectPosition2D
in aHashSet<DirectPosition>
, but it is unsafe to add them in aHashSet<Point2D>
. Collections that do not rely onObject.hashCode()
, likeArrayList
, are safe in all cases.
- Since:
- 2.0
- Author:
- Martin Desruisseaux (IRD)
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class Point2D
Point2D.Double, Point2D.Float
-
Field Summary
Fields inherited from class Point2D.Double
x, y
-
Constructor Summary
ConstructorsConstructorDescriptionConstructs a position initialized to (0,0) with anull
coordinate reference system.Position2D
(double x, double y) Constructs a 2D position from the specified ordinates.Position2D
(Point2D point) Constructs a position from the specifiedPoint2D
.Position2D
(Position point) Constructs a position initialized to the same values than the specified point.Constructs a position with the specified coordinate reference system.Position2D
(CoordinateReferenceSystem crs, double x, double y) Constructs a 2D position from the specified ordinates in the specified CRS. -
Method Summary
Modifier and TypeMethodDescriptionclone()
Returns a clone of this point.boolean
Compares this point with the specified object for equality.double[]
Returns a sequence of numbers that hold the coordinate of this position in its reference system.Returns the coordinate reference system in which the coordinate is given.final int
The length of coordinate sequence (the number of entries).Returns alwaysthis
, the direct position for this position.final double
getOrdinate
(int dimension) Returns the ordinate at the specified dimension.int
hashCode()
Returns a hash value for this coordinate.void
Set the coordinate reference system in which the coordinate is given.void
setLocation
(Position position) Set this coordinate to the specified direct position.final void
setOrdinate
(int dimension, double value) Sets the ordinate value along the specified dimension.Returns aPoint2D
with the same coordinate as this direct position.toString()
Returns a string representation of this coordinate.Methods inherited from class Point2D.Double
getX, getY, setLocation
Methods inherited from class Point2D
distance, distance, distance, distanceSq, distanceSq, distanceSq, setLocation
-
Constructor Details
-
Position2D
public Position2D()Constructs a position initialized to (0,0) with anull
coordinate reference system. -
Position2D
Constructs a position with the specified coordinate reference system.- Parameters:
crs
- The coordinate reference system, ornull
.
-
Position2D
public Position2D(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). Those parameter names simply match the x and y fields. See the class javadoc for details.- Parameters:
x
- The x value.y
- The y value.
-
Position2D
Constructs a 2D position from the specified ordinates in the specified CRS. Despite their name, the (x,y) coordinates don't need to be oriented toward (East, North). Those parameter names simply match the x and y fields. The actual axis orientations are determined by the specified CRS. See the class javadoc for details.- Parameters:
crs
- The coordinate reference system, ornull
.x
- The x value.y
- The y value.
-
Position2D
Constructs a position from the specifiedPoint2D
.- Parameters:
point
- The point to copy.
-
Position2D
Constructs a position initialized to the same values than the specified point.- Parameters:
point
- The point to copy.
-
-
Method Details
-
getDirectPosition
Returns alwaysthis
, the direct position for this position.- Specified by:
getDirectPosition
in interfacePosition
- Returns:
- The direct position (may be
this
). - Since:
- 2.5
-
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
Set the coordinate reference system in which the coordinate is given.- Parameters:
crs
- The new coordinate reference system, ornull
.
-
getDimension
public final int getDimension()The length of coordinate sequence (the number of entries). This is always 2 forDirectPosition2D
objects.- Specified by:
getDimension
in interfacePosition
- Returns:
- The dimensionality of this position.
-
getCoordinate
public double[] getCoordinate()Returns a sequence of numbers that hold the coordinate of this position in its reference system.- Specified by:
getCoordinate
in interfacePosition
- Returns:
- The coordinates
-
getOrdinate
Returns the ordinate at the specified dimension.- Specified by:
getOrdinate
in interfacePosition
- Parameters:
dimension
- The dimension in the range 0 to 1 inclusive.- Returns:
- The coordinate at the specified dimension.
- Throws:
IndexOutOfBoundsException
- if the specified dimension is out of bounds.
-
setOrdinate
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
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.
-
toPoint2D
Returns aPoint2D
with the same coordinate as this direct position.- Returns:
- This position as a point.
-
toString
Returns a string representation of this coordinate. The default implementation formats this coordinate using a shared instance ofCoordinateFormat
. This is okay for occasional formatting (for example for debugging purpose). But if there is a lot of positions to format, users will get better performance and more control by using their own instance ofCoordinateFormat
.- Overrides:
toString
in classPoint2D.Double
-
hashCode
public int hashCode()Returns a hash value for this coordinate. This method implements thePosition.hashCode()
contract, not thePoint2D.hashCode()
contract. -
equals
Compares this point with the specified object for equality. If the given object implements thePosition
interface, then the comparaison is performed as specified in itsPosition.equals(java.lang.Object)
contract. Otherwise the comparaison is performed as specified inPoint2D.equals(java.lang.Object)
. -
clone
Returns a clone of this point.
-