Class Coordinate
- java.lang.Object
-
- org.locationtech.jts.geom.Coordinate
-
- All Implemented Interfaces:
Serializable,Cloneable,Comparable<Coordinate>
- Direct Known Subclasses:
CoordinateXY,CoordinateXYM,CoordinateXYZM,ExtendedCoordinate
public class Coordinate extends Object implements Comparable<Coordinate>, Cloneable, Serializable
A lightweight class used to store coordinates on the 2-dimensional Cartesian plane.It is distinct from
Point, which is a subclass ofGeometry. Unlike objects of typePoint(which contain additional information such as an envelope, a precision model, and spatial reference system information), aCoordinateonly 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 ofNaN(which is also the value ofNULL_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 ofgetZ()andgetM()accessors, orgetOrdinate(int)are recommended.- Version:
- 1.16
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCoordinate.DimensionalComparatorCompares twoCoordinates, allowing for either a 2-dimensional or 3-dimensional comparison, and handling NaN values correctly.
-
Field Summary
Fields Modifier and Type Field Description static intMStandard ordinate index value for, where M is 3.static doubleNULL_ORDINATEThe value used to indicate a null or missing ordinate value.doublexThe x-ordinate.static intXStandard ordinate index value for, where X is 0doubleyThe y-ordinate.static intYStandard ordinate index value for, where Y is 1doublezThe z-ordinate.static intZStandard ordinate index value for, where Z is 2.
-
Constructor Summary
Constructors Constructor Description Coordinate()Constructs 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).Coordinate(Coordinate c)Constructs aCoordinatehaving the same (x,y,z) values asother.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Objectclone()intcompareTo(Coordinate o)Compares thisCoordinatewith the specifiedCoordinatefor order.Coordinatecopy()Creates a copy of this Coordinate.Coordinatecreate()Create a new Coordinate of the same type as this Coordinate, but with no values.doubledistance(Coordinate c)Computes the 2-dimensional Euclidean distance to another location.doubledistance3D(Coordinate c)Computes 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.booleanequals(Object other)Returnstrueifotherhas 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.StringtoString()Returns aStringof the form (x,y,z) .
-
-
-
Field Detail
-
NULL_ORDINATE
public static final double NULL_ORDINATE
The 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:
- Constant Field Values
-
X
public static final int X
Standard ordinate index value for, where X is 0- See Also:
- Constant Field Values
-
Y
public static final int Y
Standard ordinate index value for, where Y is 1- See Also:
- Constant Field Values
-
Z
public static final int Z
Standard 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:
- Constant Field Values
-
M
public static final int M
Standard 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:
- Constant Field Values
-
x
public double x
The x-ordinate.
-
y
public double y
The y-ordinate.
-
z
public double z
The z-ordinate.Direct access to this field is discouraged; use
getZ().
-
-
Constructor Detail
-
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
public Coordinate(Coordinate c)
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 Detail
-
setCoordinate
public void setCoordinate(Coordinate other)
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:
Double.isFinite(double)
-
equals2D
public boolean equals2D(Coordinate other)
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
public 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. 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
public boolean equals3D(Coordinate other)
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
public boolean equalInZ(Coordinate c, double tolerance)
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
public boolean equals(Object other)
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
public int compareTo(Coordinate o)
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
public String toString()
Returns aStringof the form (x,y,z) .
-
copy
public Coordinate copy()
Creates a copy of this Coordinate.- Returns:
- a copy of this coordinate.
-
create
public Coordinate create()
Create a new Coordinate of the same type as this Coordinate, but with no values.- Returns:
- a new Coordinate
-
distance
public double distance(Coordinate c)
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
public double distance3D(Coordinate c)
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
-
-