Class Coordinate
- All Implemented Interfaces:
Serializable
,Cloneable
,Comparable<Coordinate>
- Direct Known Subclasses:
CoordinateXY
,CoordinateXYM
,CoordinateXYZM
It is distinct from Point
, which is a subclass of Geometry
.
Unlike objects of type Point
(which contain additional
information such as an envelope, a precision model, and spatial reference
system information), a Coordinate
only contains ordinate values
and accessor methods.
Coordinate
s are two-dimensional points, with an additional Z-ordinate.
If an Z-ordinate value is not specified or not defined,
constructed coordinates have a Z-ordinate of NaN
(which is also the value of NULL_ORDINATE
).
The standard comparison functions ignore the Z-ordinate.
Apart from the basic accessor functions, JTS supports
only specific operations involving the Z-ordinate.
Implementations may optionally support Z-ordinate and M-measure values
as appropriate for a CoordinateSequence
.
Use of getZ()
and getM()
accessors, or getOrdinate(int)
are recommended.
- Version:
- 1.16
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Compares twoCoordinate
s, allowing for either a 2-dimensional or 3-dimensional comparison, and handling NaN values correctly. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Standard ordinate index value for, where M is 3.static final double
The value used to indicate a null or missing ordinate value.double
The x-ordinate.static final int
Standard ordinate index value for, where X is 0double
The y-ordinate.static final int
Standard ordinate index value for, where Y is 1double
The z-ordinate.static final int
Standard ordinate index value for, where Z is 2. -
Constructor Summary
ConstructorsConstructorDescriptionConstructs aCoordinate
at (0,0,NaN).Coordinate
(double x, double y) Constructs aCoordinate
at (x,y,NaN).Coordinate
(double x, double y, double z) Constructs aCoordinate
at (x,y,z).Constructs aCoordinate
having the same (x,y,z) values asother
. -
Method Summary
Modifier and TypeMethodDescriptionclone()
int
Compares thisCoordinate
with the specifiedCoordinate
for order.copy()
Creates a copy of this Coordinate.create()
Create a new Coordinate of the same type as this Coordinate, but with no values.double
Computes the 2-dimensional Euclidean distance to another location.double
Computes the 3-dimensional Euclidean distance to another location.boolean
equalInZ
(Coordinate c, double tolerance) Tests if another coordinate has the same value for Z, within a tolerance.boolean
Returnstrue
ifother
has the same values for the x and y ordinates.boolean
equals2D
(Coordinate other) Returns whether the planar projections of the twoCoordinate
s are equal.boolean
equals2D
(Coordinate c, double tolerance) Tests if another Coordinate has the same values for the X and Y ordinates, within a specified tolerance value.boolean
equals3D
(Coordinate other) Tests if another coordinate has the same values for the X, Y and Z ordinates.double
getM()
Retrieves the value of the measure, if present.double
getOrdinate
(int ordinateIndex) Gets the ordinate value for the given index.double
getX()
Retrieves the value of the X ordinate.double
getY()
Retrieves the value of the Y ordinate.double
getZ()
Retrieves the value of the Z ordinate, if present.int
hashCode()
Gets a hashcode for this coordinate.static int
hashCode
(double x) Computes a hash code for a double value, using the algorithm from Joshua Bloch's book Effective Java"boolean
isValid()
Tests if the coordinate has valid X and Y ordinate values.void
setCoordinate
(Coordinate other) Sets thisCoordinate
s (x,y,z) values to that ofother
.void
setM
(double m) Sets the measure value, if supported.void
setOrdinate
(int ordinateIndex, double value) Sets the ordinate for the given index to a given value.void
setX
(double x) Sets the X ordinate value.void
setY
(double y) Sets the Y ordinate value.void
setZ
(double z) Sets the Z ordinate value.toString()
Returns aString
of the form (x,y,z) .
-
Field Details
-
NULL_ORDINATE
public static final double NULL_ORDINATEThe value used to indicate a null or missing ordinate value. In particular, used for the value of ordinates for dimensions greater than the defined dimension of a coordinate.- See Also:
-
X
public static final int XStandard ordinate index value for, where X is 0- See Also:
-
Y
public static final int YStandard ordinate index value for, where Y is 1- See Also:
-
Z
public static final int ZStandard ordinate index value for, where Z is 2.This constant assumes XYZM coordinate sequence definition, please check this assumption using
CoordinateSequence.getDimension()
andCoordinateSequence.getMeasures()
before use.- See Also:
-
M
public static final int MStandard ordinate index value for, where M is 3.This constant assumes XYZM coordinate sequence definition, please check this assumption using
CoordinateSequence.getDimension()
andCoordinateSequence.getMeasures()
before use.- See Also:
-
x
public double xThe x-ordinate. -
y
public double yThe y-ordinate. -
z
public double zThe z-ordinate.Direct access to this field is discouraged; use
getZ()
.
-
-
Constructor Details
-
Coordinate
public Coordinate(double x, double y, double z) Constructs aCoordinate
at (x,y,z).- Parameters:
x
- the x-ordinatey
- the y-ordinatez
- the z-ordinate
-
Coordinate
public Coordinate()Constructs aCoordinate
at (0,0,NaN). -
Coordinate
Constructs aCoordinate
having the same (x,y,z) values asother
.- Parameters:
c
- theCoordinate
to copy.
-
Coordinate
public Coordinate(double x, double y) Constructs aCoordinate
at (x,y,NaN).- Parameters:
x
- the x-valuey
- the y-value
-
-
Method Details
-
setCoordinate
Sets thisCoordinate
s (x,y,z) values to that ofother
.- Parameters:
other
- theCoordinate
to copy
-
getX
public double getX()Retrieves the value of the X ordinate.- Returns:
- the value of the X ordinate
-
setX
public void setX(double x) Sets the X ordinate value.- Parameters:
x
- the value to set as X
-
getY
public double getY()Retrieves the value of the Y ordinate.- Returns:
- the value of the Y ordinate
-
setY
public void setY(double y) Sets the Y ordinate value.- Parameters:
y
- the value to set as Y
-
getZ
public double getZ()Retrieves the value of the Z ordinate, if present. If no Z value is present returns NaN.- Returns:
- the value of the Z ordinate, or NaN
-
setZ
public void setZ(double z) Sets the Z ordinate value.- Parameters:
z
- the value to set as Z
-
getM
public double getM()Retrieves the value of the measure, if present. If no measure value is present returns NaN.- Returns:
- the value of the measure, or NaN
-
setM
public void setM(double m) Sets the measure value, if supported.- Parameters:
m
- the value to set as M
-
getOrdinate
public double getOrdinate(int ordinateIndex) Gets the ordinate value for the given index. The base implementation supports values for the index areX
,Y
, andZ
.- Parameters:
ordinateIndex
- the ordinate index- Returns:
- the value of the ordinate
- Throws:
IllegalArgumentException
- if the index is not valid
-
setOrdinate
public void setOrdinate(int ordinateIndex, double value) Sets the ordinate for the given index to a given value. The base implementation supported values for the index areX
,Y
, andZ
.- Parameters:
ordinateIndex
- the ordinate indexvalue
- the value to set- Throws:
IllegalArgumentException
- if the index is not valid
-
isValid
public boolean isValid()Tests if the coordinate has valid X and Y ordinate values. An ordinate value is valid iff it is finite.- Returns:
- true if the coordinate is valid
- See Also:
-
equals2D
Returns whether the planar projections of the twoCoordinate
s are equal.- Parameters:
other
- aCoordinate
with which to do the 2D comparison.- Returns:
true
if the x- and y-coordinates are equal; the z-coordinates do not have to be equal.
-
equals2D
Tests if another Coordinate has the same values for the X and Y ordinates, within a specified tolerance value. The Z ordinate is ignored.- Parameters:
c
- aCoordinate
with which to do the 2D comparison.tolerance
- the tolerance value to use- Returns:
- true if
other
is aCoordinate
with the same values for X and Y.
-
equals3D
Tests if another coordinate has the same values for the X, Y and Z ordinates.- Parameters:
other
- aCoordinate
with which to do the 3D comparison.- Returns:
- true if
other
is aCoordinate
with the same values for X, Y and Z.
-
equalInZ
Tests if another coordinate has the same value for Z, within a tolerance.- Parameters:
c
- a coordinatetolerance
- the tolerance value- Returns:
- true if the Z ordinates are within the given tolerance
-
equals
Returnstrue
ifother
has the same values for the x and y ordinates. Since Coordinates are 2.5D, this routine ignores the z value when making the comparison. -
compareTo
Compares thisCoordinate
with the specifiedCoordinate
for order. This method ignores the z value when making the comparison. Returns:- -1 : this.x < other.x || ((this.x == other.x) && (this.y < other.y))
- 0 : this.x == other.x && this.y = other.y
- 1 : this.x > other.x || ((this.x == other.x) && (this.y > other.y))
- Specified by:
compareTo
in interfaceComparable<Coordinate>
- Parameters:
o
- theCoordinate
with which thisCoordinate
is being compared- Returns:
- -1, zero, or 1 as this
Coordinate
is less than, equal to, or greater than the specifiedCoordinate
-
toString
Returns aString
of the form (x,y,z) . -
clone
-
copy
Creates a copy of this Coordinate.- Returns:
- a copy of this coordinate.
-
create
Create a new Coordinate of the same type as this Coordinate, but with no values.- Returns:
- a new Coordinate
-
distance
Computes the 2-dimensional Euclidean distance to another location. The Z-ordinate is ignored.- Parameters:
c
- a point- Returns:
- the 2-dimensional Euclidean distance between the locations
-
distance3D
Computes the 3-dimensional Euclidean distance to another location.- Parameters:
c
- a coordinate- Returns:
- the 3-dimensional Euclidean distance between the locations
-
hashCode
public int hashCode()Gets a hashcode for this coordinate. -
hashCode
public static int hashCode(double x) Computes a hash code for a double value, using the algorithm from Joshua Bloch's book Effective Java"- Parameters:
x
- the value to compute for- Returns:
- a hashcode for x
-