Class FractionalGridCoordinates
Object
FractionalGridCoordinates
- All Implemented Interfaces:
Serializable
Grid coordinates which may have fraction digits after the integer part.
Grid coordinates specify the location of a cell within a
GridCoverage.
They are normally integer numbers, but fractional parts may exist for example
after converting a geospatial DirectPosition to grid coordinates.
Preserving that fractional part is needed for interpolations.
This class can store such fractional part and can also compute a GridExtent
containing the coordinates, which can be used for requesting data for interpolations.
Current implementation stores coordinate values as double precision floating-point numbers
and rounds them to 64-bits integers on the fly. If a double
cannot be returned as a long, or if a long
cannot be stored as a double, then an
ArithmeticException is thrown.
- Since:
- 1.1
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionFractionalGridCoordinates(int dimension) Creates a new grid coordinates with the given number of dimensions.Creates a new grid coordinates initialized to a copy of the given coordinates. -
Method Summary
Modifier and TypeMethodDescriptionbooleanCompares this grid coordinates with the specified object for equality.doublegetCoordinateFractional(int dimension) Returns a grid coordinate value together with its fractional part, if any.longgetCoordinateValue(int dimension) Returns the grid coordinate value at the specified dimension.long[]Returns one integer value for each dimension of the grid.intReturns the number of dimension of this grid coordinates.intReturns a hash code value for this grid coordinates.voidsetCoordinateValue(int dimension, long value) Sets the coordinate value at the specified dimension.toPosition(MathTransform gridToCRS) Returns the grid coordinates converted to a geospatial position using the given transform.Returns a string representation of this grid coordinates for debugging purposes.
-
Constructor Details
-
FractionalGridCoordinates
public FractionalGridCoordinates(int dimension) Creates a new grid coordinates with the given number of dimensions.Usage note
FractionalGridCoordinatesare usually not created directly, but are instead obtained indirectly for example from the conversion of a geospatial position.- Parameters:
dimension- the number of dimensions.
-
FractionalGridCoordinates
Creates a new grid coordinates initialized to a copy of the given coordinates.- Parameters:
other- the coordinates to copy.
-
-
Method Details
-
getDimension
public int getDimension()Returns the number of dimension of this grid coordinates.- Returns:
- the number of dimensions.
-
getCoordinateValues
public long[] getCoordinateValues()Returns one integer value for each dimension of the grid. The default implementation invokesgetCoordinateValue(int)for each element in the returned array.- Returns:
- a copy of the coordinates. Changes in the returned array will
not be reflected back in this
GridCoordinatesobject. - Throws:
ArithmeticException- if a coordinate value is outside the range of values representable as a 64-bits integer value.
-
getCoordinateValue
public long getCoordinateValue(int dimension) Returns the grid coordinate value at the specified dimension. Floating-point values are rounded to the nearest 64-bits integer values. If the coordinate value is NaN or outside the range oflongvalues, then anArithmeticExceptionis thrown.- Parameters:
dimension- the dimension for which to obtain the coordinate value.- Returns:
- the coordinate value at the given dimension, rounded to nearest integer.
- Throws:
IndexOutOfBoundsException- if the given index is negative or is equal or greater than the grid dimension.ArithmeticException- if the coordinate value is outside the range of values representable as a 64-bits integer value.
-
getCoordinateFractional
public double getCoordinateFractional(int dimension) Returns a grid coordinate value together with its fractional part, if any.- Parameters:
dimension- the dimension for which to obtain the coordinate value.- Returns:
- the coordinate value at the given dimension.
- Throws:
IndexOutOfBoundsException- if the given index is negative or is equal or greater than the grid dimension.
-
setCoordinateValue
public void setCoordinateValue(int dimension, long value) Sets the coordinate value at the specified dimension. The given value shall be convertible todoublewithout precision lost.- Parameters:
dimension- the dimension for which to set the coordinate value.value- the new value.- Throws:
IndexOutOfBoundsException- if the given index is negative or is equal or greater than the grid dimension.ArithmeticException- if this method cannot store the given grid coordinate without precision lost.
-
toPosition
Returns the grid coordinates converted to a geospatial position using the given transform. This is the reverse ofGridCoverage.Evaluator.toGridCoordinates(DirectPosition). ThegridToCRSargument is typicallyGridGeometry.getGridToCRS(PixelInCell)withPixelInCell.CELL_CENTER.- Parameters:
gridToCRS- the transform to apply on grid coordinates.- Returns:
- the grid coordinates converted using the given transform.
- Throws:
TransformException- if the grid coordinates cannot be converted bygridToCRS.- See Also:
-
toString
-
hashCode
-
equals
-