Class AbstractDirectPosition
- All Implemented Interfaces:
Position,DirectPosition
- Direct Known Subclasses:
DirectPosition1D,GeneralDirectPosition
DirectPosition methods, leaving the data storage to subclasses.
A direct position holds the coordinates for a position within some
coordinate reference system.
This base class provides default implementations for toString(),
equals(Object) and hashCode() methods.
This base class does not hold any state and does not implement the Serializable
or Cloneable interfaces. The internal representation, and the choice to be cloneable or
serializable, is left to subclasses.
- Since:
- 0.3
Defined in the sis-referencing module
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic AbstractDirectPositioncastOrCopy(DirectPosition position) Returns the given position as anAbstractDirectPositioninstance.booleanReturnstrueif the specified object is also aDirectPositionwith equal coordinates and equal CRS.protected StringFormats this position in the Well Known Text (WKT) format.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 tuple is given.final DirectPositionReturns alwaysthis, the direct position for this position.intReturns a hash value for this coordinate tuple.booleanEnsures that the position is contained in the coordinate system domain.voidsetLocation(DirectPosition position) Sets this direct position to the given position.voidsetOrdinate(int dimension, double value) Sets the coordinate value along the specified dimension.Formats this position in the Well Known Text (WKT) format.Methods inherited from class FormattableObject
print, toString, toWKTMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface DirectPosition
getDimension, getOrdinate
-
Constructor Details
-
AbstractDirectPosition
protected AbstractDirectPosition()Constructs a direct position.
-
-
Method Details
-
castOrCopy
Returns the given position as anAbstractDirectPositioninstance. If the given position is already an instance ofAbstractDirectPosition, then it is returned unchanged. Otherwise the coordinate values and the CRS of the given position are copied in a new position.- Parameters:
position- the position to cast, ornull.- Returns:
- the values of the given position as an
AbstractDirectPositioninstance. - Since:
- 1.0
-
getDirectPosition
Returns alwaysthis, the direct position for this position.- Specified by:
getDirectPositionin interfacePosition- Returns:
this.
-
getCoordinateReferenceSystem
Returns the coordinate reference system in which the coordinate tuple is given. May benullif this particularDirectPositionis included in a larger object with such a reference to a coordinate reference system.The default implementation returns
null. Subclasses should override this method if the CRS can be provided.- Specified by:
getCoordinateReferenceSystemin interfaceDirectPosition- Returns:
- the coordinate reference system, or
null.
-
getCoordinate
public double[] getCoordinate()Returns a sequence of numbers that hold the coordinate of this position in its reference system.- Specified by:
getCoordinatein interfaceDirectPosition- Returns:
- the coordinates.
-
setOrdinate
public void setOrdinate(int dimension, double value) Sets the coordinate value along the specified dimension.The default implementation throws
UnsupportedOperationException. Subclasses need to override this method if this direct position is mutable.- Specified by:
setOrdinatein interfaceDirectPosition- Parameters:
dimension- the dimension for the coordinate of interest.value- the coordinate value of interest.- Throws:
IndexOutOfBoundsException- if the given index is negative or is equal or greater than the position dimension.UnsupportedOperationException- if this direct position is immutable.
-
setLocation
public void setLocation(DirectPosition position) throws MismatchedDimensionException, MismatchedReferenceSystemException Sets this direct position to the given position. If the given position isnull, then all coordinate values are set toNaN.If this position and the given position have a non-null CRS, then the default implementation requires the CRS to be equals (ignoring metadata), otherwise a
MismatchedReferenceSystemExceptionis thrown. However, subclass may choose to assign the CRS of this position to the CRS of the given position.- Parameters:
position- the new position, ornull.- Throws:
MismatchedDimensionException- if the given position doesn't have the expected dimension.MismatchedReferenceSystemException- if the given position doesn't use the expected CRS.
-
normalize
public boolean normalize()Ensures that the position is contained in the coordinate system domain. For each dimension, this method compares the coordinate values against the limits of the coordinate system axis for that dimension. If some coordinates are out of range, then there is a choice depending on the axis range meaning:- If
RangeMeaning.EXACT(typically latitudes coordinates), then values greater than the axis maximal value are replaced by the axis maximum, and values smaller than the axis minimal value are replaced by the axis minimum. - If
RangeMeaning.WRAPAROUND(typically longitudes coordinates), then a multiple of the axis range (e.g. 360° for longitudes) is added or subtracted.
- Returns:
trueif this position has been modified as a result of this method call, orfalseif no change has been done.- See Also:
- If
-
formatTo
Formats this position in the Well Known Text (WKT) format. The format is like below, wherex₀,x₁,x₂, etc. are the coordinate values at index 0, 1, 2, etc.:
If the coordinate reference system is geodetic or projected, then coordinate values are formatted with a precision equivalent to one centimetre on Earth (the actual number of fraction digits is adjusted for the axis unit of measurement and the planet size if different than Earth).POINT[x₀ x₁ x₂ …]
- Specified by:
formatToin classFormattableObject- Parameters:
formatter- the formatter where to format the inner content of this point.- Returns:
- the WKT keyword, which is
"Point"for this element. - Since:
- 1.0
- See Also:
-
toString
Formats this position in the Well Known Text (WKT) format. The returned string is like below, wherex₀,x₁,x₂, etc. are the coordinate values at index 0, 1, 2, etc.:
This method formats the numbers as withPOINT(x₀ x₁ x₂ …)
Double.toString(double)(i.e. without fixed number of fraction digits). The string returned by this method can be parsed by theGeneralDirectPositionconstructor.- Overrides:
toStringin classFormattableObject- Returns:
- this position as a
POINTin Well Known Text (WKT) format.
-
hashCode
public int hashCode()Returns a hash value for this coordinate tuple. This method returns a value compliant with the contract documented in theDirectPosition.hashCode()javadoc. Consequently, it should be possible to mix differentDirectPositionimplementations in the same hash map.- Specified by:
hashCodein interfaceDirectPosition- Overrides:
hashCodein classObject- Returns:
- a hash code value for this position.
-
equals
Returnstrueif the specified object is also aDirectPositionwith equal coordinates and equal CRS. This method performs the comparison as documented in theDirectPosition.equals(Object)javadoc. In particular, the given object is not required to be of the same implementation class. Consequently, it should be possible to mix differentDirectPositionimplementations in the same hash map.- Specified by:
equalsin interfaceDirectPosition- Overrides:
equalsin classObject- Parameters:
object- the object to compare with this position.- Returns:
trueif the given object is equal to this position.
-