Class Coordinate
- All Implemented Interfaces:
Serializable, Cloneable, Comparable<Coordinate>
- Direct Known Subclasses:
CoordinateXY, CoordinateXYM, CoordinateXYZM, ExtendedCoordinate
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.
Coordinates 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 classCompares twoCoordinates, allowing for either a 2-dimensional or 3-dimensional comparison, and handling NaN values correctly. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intStandard ordinate index value for, where M is 3.static final doubleThe value used to indicate a null or missing ordinate value.doubleThe x-ordinate.static final intStandard ordinate index value for, where X is 0doubleThe y-ordinate.static final intStandard ordinate index value for, where Y is 1doubleThe z-ordinate.static final intStandard ordinate index value for, where Z is 2. -
Constructor Summary
ConstructorsConstructorDescriptionConstructs aCoordinateat (0,0,NaN).Coordinate(double x, double y) Constructs aCoordinateat (x,y,NaN).Coordinate(double x, double y, double z) Constructs aCoordinateat (x,y,z).Constructs aCoordinatehaving the same (x,y,z) values asother. -
Method Summary
Modifier and TypeMethodDescriptionclone()intCompares thisCoordinatewith the specifiedCoordinatefor order.copy()Creates a copy of this Coordinate.create()Create a new Coordinate of the same type as this Coordinate, but with no values.doubleComputes the 2-dimensional Euclidean distance to another location.doubleComputes the 3-dimensional Euclidean distance to another location.booleanequalInZ(Coordinate c, double tolerance) Tests if another coordinate has the same value for Z, within a tolerance.booleanReturnstrueifotherhas the same values for the x and y ordinates.booleanequals2D(Coordinate other) Returns whether the planar projections of the twoCoordinates are equal.booleanequals2D(Coordinate c, double tolerance) Tests if another Coordinate has the same values for the X and Y ordinates, within a specified tolerance value.booleanequals3D(Coordinate other) Tests if another coordinate has the same values for the X, Y and Z ordinates.doublegetM()Retrieves the value of the measure, if present.doublegetOrdinate(int ordinateIndex) Gets the ordinate value for the given index.doublegetX()Retrieves the value of the X ordinate.doublegetY()Retrieves the value of the Y ordinate.doublegetZ()Retrieves the value of the Z ordinate, if present.inthashCode()Gets a hashcode for this coordinate.static inthashCode(double x) Computes a hash code for a double value, using the algorithm from Joshua Bloch's book Effective Java"booleanisValid()Tests if the coordinate has valid X and Y ordinate values.voidsetCoordinate(Coordinate other) Sets thisCoordinates (x,y,z) values to that ofother.voidsetM(double m) Sets the measure value, if supported.voidsetOrdinate(int ordinateIndex, double value) Sets the ordinate for the given index to a given value.voidsetX(double x) Sets the X ordinate value.voidsetY(double y) Sets the Y ordinate value.voidsetZ(double z) Sets the Z ordinate value.toString()Returns aStringof 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 aCoordinateat (x,y,z).- Parameters:
x- the x-ordinatey- the y-ordinatez- the z-ordinate
-
Coordinate
public Coordinate()Constructs aCoordinateat (0,0,NaN). -
Coordinate
Constructs aCoordinatehaving the same (x,y,z) values asother.- Parameters:
c- theCoordinateto copy.
-
Coordinate
public Coordinate(double x, double y) Constructs aCoordinateat (x,y,NaN).- Parameters:
x- the x-valuey- the y-value
-
-
Method Details
-
setCoordinate
Sets thisCoordinates (x,y,z) values to that ofother.- Parameters:
other- theCoordinateto 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 twoCoordinates are equal.- Parameters:
other- aCoordinatewith which to do the 2D comparison.- Returns:
trueif 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- aCoordinatewith which to do the 2D comparison.tolerance- the tolerance value to use- Returns:
- true if
otheris aCoordinatewith 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- aCoordinatewith which to do the 3D comparison.- Returns:
- true if
otheris aCoordinatewith 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
Returnstrueifotherhas 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 thisCoordinatewith the specifiedCoordinatefor 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:
compareToin interfaceComparable<Coordinate>- Parameters:
o- theCoordinatewith which thisCoordinateis being compared- Returns:
- -1, zero, or 1 as this
Coordinateis less than, equal to, or greater than the specifiedCoordinate
-
toString
-
clone
-
copy
-
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
-
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
-