Class Coordinate
- java.lang.Object
-
- org.locationtech.jts.geom.Coordinate
-
- All Implemented Interfaces:
Serializable,Cloneable,Comparable<Coordinate>
- Direct Known Subclasses:
CoordinateXY,CoordinateXYM,CoordinateXYZM
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-ordiante and M-measure values as appropriate for a CoordinateSeqeunce. Use of
getZ()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 1doublezDeprecated.RecommendgetZ()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.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"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
#getDimension()and#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
#getDimension()and#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
Deprecated.RecommendgetZ()The z-ordinate.
-
-
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
-
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.
-
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
-
-