public class GridGeometry2D extends GeneralGridGeometry
GridGeometry2D
class (some peoples said 2.5D) because a twodimensional grid
coordinate is enough for referencing a pixel without ambiguity. But a grid size of
512×512×2 pixels can not be represented by this GridGeometry2D
,
because a threedimensional coordinate is mandatory for referencing a pixel without
ambiguity.ImageGeometry
,
GeneralGridGeometry
,
Serialized FormModifier and Type  Field and Description 

int 
axisDimensionX
The (
gridDimensionX , gridDimensionY ) dimensions in the envelope space. 
int 
axisDimensionY
The (
gridDimensionX , gridDimensionY ) dimensions in the envelope space. 
int 
gridDimensionX
Index of column (
gridDimensionX ) and row (gridDimensionY ) ordinates
in a grid point. 
int 
gridDimensionY
Index of column (
gridDimensionX ) and row (gridDimensionY ) ordinates
in a grid point. 
CRS_BITMASK, ENVELOPE_BITMASK, GRID_RANGE_BITMASK, GRID_TO_CRS_BITMASK, gridRange, gridToCRS
Constructor and Description 

GridGeometry2D(GridEnvelope gridRange,
Envelope userRange)
Constructs a new grid geometry from an envelope.

GridGeometry2D(GridEnvelope gridRange,
MathTransform gridToCRS,
CoordinateReferenceSystem crs)
Constructs a new grid geometry from a grid range and a math transform.

GridGeometry2D(GridEnvelope gridRange,
PixelInCell anchor,
MathTransform gridToCRS,
CoordinateReferenceSystem crs,
Hints hints)
Constructs a new grid geometry from a math transform.

GridGeometry2D(GridEnvelope gridRange,
PixelOrientation anchor,
MathTransform gridToCRS,
CoordinateReferenceSystem crs,
Hints hints)
Constructs a new grid geometry from a math transform.

GridGeometry2D(GridGeometry other)
Creates a new grid geometry with the same values than the given grid geometry.

GridGeometry2D(PixelInCell anchor,
MathTransform gridToCRS,
Envelope envelope,
Hints hints)
Constructs a new grid geometry from an envelope and a math
transform.

GridGeometry2D(Rectangle gridRange,
Rectangle2D userRange)
Constructs a new twodimensional grid geometry.

Modifier and Type  Method and Description 

boolean 
equals(Object object)
Compares the specified object with this grid geometry for equality.

CoordinateReferenceSystem 
getCoordinateReferenceSystem2D()
Returns the twodimensional part of this grid geometry CRS.

MathTransform2D 
getCRSToGrid2D()
Returns a math transform for the two dimensional part for conversion from world to
grid coordinates.

MathTransform2D 
getCRSToGrid2D(PixelOrientation orientation)
Returns a math transform for the two dimensional part.

Envelope2D 
getEnvelope2D()
Returns the twodimensional bounding box for the coverage domain in coordinate reference
system coordinates.

GridEnvelope2D 
getGridRange2D()
Returns the twodimensional part of the grid range
as a rectangle.

MathTransform 
getGridToCRS(PixelOrientation orientation)
Returns a math transform mapping the specified pixel part.

MathTransform2D 
getGridToCRS2D()
Returns a math transform for the two dimensional part.

MathTransform2D 
getGridToCRS2D(PixelOrientation orientation)
Returns a math transform for the two dimensional part.

DirectPosition 
gridToWorld(GridCoordinates2D point)
Transforms a point represented by a GridCoordinates2D object from grid
to world coordinates.

Envelope2D 
gridToWorld(GridEnvelope2D gridEnv)
Transforms a rectangle represented by a GridEnvelope2D object from grid
to world coordinates.

CoordinateReferenceSystem 
reduce(CoordinateReferenceSystem crs)
Reduces the specified CRS to a twodimensional one.

Envelope2D 
reduce(Envelope envelope)
Reduces the specified envelope to a twodimensional one.

GridGeometry2D 
toCanonical()
Returns a "canonical" representation of the grid geometry, that is, one whose grid range
originates in 0,0, but maps to the same real world coordinates.

GridCoordinates2D 
worldToGrid(DirectPosition point)
Transforms a point represented by a DirectPosition object from world
to grid coordinates.

GridEnvelope2D 
worldToGrid(Envelope2D envelope)
Transforms a rectangle represented by an Envelope2D object from world
to grid coordinates.

static GridGeometry2D 
wrap(GridGeometry other)
Returns the given grid geometry as a
GridGeometry2D . 
getCoordinateReferenceSystem, getDimension, getEnvelope, getGridRange, getGridToCRS, getGridToCRS, hashCode, isDefined, toString
public final int gridDimensionX
gridDimensionX
) and row (gridDimensionY
) ordinates
in a grid point. They are the index of the first two dimensions with a span greater than 1 in the grid range.
Their values are usually 0 and 1 respectively.
It is garanteed that gridDimensionX
< gridDimensionY
.
public final int gridDimensionY
gridDimensionX
) and row (gridDimensionY
) ordinates
in a grid point. They are the index of the first two dimensions with a span greater than 1 in the grid range.
Their values are usually 0 and 1 respectively.
It is garanteed that gridDimensionX
< gridDimensionY
.
public final int axisDimensionX
gridDimensionX
, gridDimensionY
) dimensions in the envelope space.
They are index of (x, y) ordinates in a direct position after the
grid to CRS transform.
There is no garantee that gridDimensionX
maps to axisDimensionX
and
gridDimensionY
maps to axisDimensionY
, since axis may be interchanged.
It is garanteed that axisDimensionX
< axisDimensionY
.
public final int axisDimensionY
gridDimensionX
, gridDimensionY
) dimensions in the envelope space.
They are index of (x, y) ordinates in a direct position after the
grid to CRS transform.
There is no garantee that gridDimensionX
maps to axisDimensionX
and
gridDimensionY
maps to axisDimensionY
, since axis may be interchanged.
It is garanteed that axisDimensionX
< axisDimensionY
.
public GridGeometry2D(GridGeometry other)
GridGeometry2D
.other
 The other grid geometry to copy.wrap(org.opengis.coverage.grid.GridGeometry)
public GridGeometry2D(GridEnvelope gridRange, MathTransform gridToCRS, CoordinateReferenceSystem crs) throws IllegalArgumentException, MismatchedDimensionException
gridRange
 The valid coordinate range of a grid coverage, or null
if none.
The lowest valid grid coordinate is zero for BufferedImage
,
but may be nonzero for arbitrary RenderedImage
. A grid with
512 cells can have a minimum coordinate of 0 and maximum of 512, with 511 as the
highest valid index.gridToCRS
 The math transform which allows for the transformations
from grid coordinates (pixel's center) to real world earth coordinates.crs
 The coordinate reference system for the "real world" coordinates, or null
if unknown. This CRS is given to the envelope.MismatchedDimensionException
 if the math transform and the CRS don't have
consistent dimensions.IllegalArgumentException
 if gridRange
has more than 2 dimensions with
a span larger than 1, or if the math transform
can't transform coordinates in the domain of the specified grid range.public GridGeometry2D(GridEnvelope gridRange, PixelInCell anchor, MathTransform gridToCRS, CoordinateReferenceSystem crs, Hints hints) throws MismatchedDimensionException, IllegalArgumentException
GridGeometry2D(gridRange, gridToCRS, crs)
with the addition of an explicit anchor
and an optional set of hints giving more control on the MathTransform2D
to be
inferred from the ndimensional transform.
The anchor
argument tells whatever the gridToCRS
transform maps cell center (OGC convention) or cell corner (Java2D/JAI convention). At the opposite of the constructor expecting a PixelOrientation
argument, the translation (if any) applies to every dimensions, not just
the ones mapping the 2D part.
gridRange
 The valid coordinate range of a grid coverage, or null
if none.anchor
 Whatever the gridToCRS
transform maps
cell center (OGC convention) or
cell corner (Java2D/JAI convention).gridToCRS
 The math transform which allows for the transformations from grid
coordinates to real world earth coordinates.crs
 The coordinate reference system for the "real world" coordinates, or
null
if unknown. This CRS is given to the
envelope.hints
 An optional set of hints controlling the DimensionFilter
to be
used for deriving the MathTransform2D
instance from the given
gridToCRS
transform.MismatchedDimensionException
 if the math transform and the CRS don't have
consistent dimensions.IllegalArgumentException
 if the math transform can't transform coordinates
in the domain of the specified grid range.public GridGeometry2D(GridEnvelope gridRange, PixelOrientation anchor, MathTransform gridToCRS, CoordinateReferenceSystem crs, Hints hints) throws IllegalArgumentException, MismatchedDimensionException
GridGeometry2D(gridRange, gridToCRS, crs)
with the addition of an explicit anchor
and an optional set of hints giving more control on the MathTransform2D
to be
inferred from the ndimensional transform.
The anchor
argument tells whatever the gridToCRS
transform maps pixel
center or some corner. Use CENTER
for OGC conventions or
UPPER_LEFT
for Java2D/JAI conventions. A translation
(if needed) is applied only on the gridDimensionX
and gridDimensionY
parts of the transform  all other dimensions are assumed mapping pixel center.
gridRange
 The valid coordinate range of a grid coverage, or null
if none.anchor
 Whatever the twodimensional part of the gridToCRS
transform
maps pixel center or some corner.gridToCRS
 The math transform from grid coordinates to real world earth coordinates.crs
 The coordinate reference system for the "real world" coordinates, or
null
if unknown.hints
 An optional set of hints controlling the DimensionFilter
to be
used for deriving the MathTransform2D
instance from the given
gridToCRS
transform.MismatchedDimensionException
 if the math transform and the CRS don't have
consistent dimensions.IllegalArgumentException
 if gridRange
has more than 2 dimensions with
a span larger than 1, or if the math transform
can't transform coordinates in the domain of the specified grid range.public GridGeometry2D(PixelInCell anchor, MathTransform gridToCRS, Envelope envelope, Hints hints) throws MismatchedDimensionException, IllegalArgumentException
anchor
argument.anchor
 CELL_CENTER
for OGC conventions or
CELL_CORNER
for Java2D/JAI conventions.gridToCRS
 The math transform which allows for the transformations from grid
coordinates to real world earth coordinates. May be null
,
but this is not recommended.envelope
 The envelope (including CRS) of a grid coverage, or null
if none.hints
 An optional set of hints controlling the DimensionFilter
to be
used for deriving the MathTransform2D
instance from the given
gridToCRS
transform.MismatchedDimensionException
 if the math transform and the envelope doesn't have
consistent dimensions.IllegalArgumentException
 if the math transform can't transform coordinates
in the domain of the grid range.public GridGeometry2D(GridEnvelope gridRange, Envelope userRange) throws IllegalArgumentException, MismatchedDimensionException
gridRange
 The valid coordinate range of a grid coverage.userRange
 The corresponding coordinate range in user coordinate.IllegalArgumentException
 if gridRange
has more than 2 dimensions with
a length larger than 1.MismatchedDimensionException
 if the grid range and the CRS doesn't have
consistent dimensions.public GridGeometry2D(Rectangle gridRange, Rectangle2D userRange)
gridRange
and
userRange
are assumed to have y axis in opposite direction).gridRange
 The valid coordinate range of a grid coverage.
Increasing x values goes right and
increasing y values goes down.userRange
 The corresponding coordinate range in user coordinate.
Increasing x values goes right and
increasing y values goes up.
This rectangle must contains entirely all pixels, i.e.
the rectangle's upper left corner must coincide with
the upper left corner of the first pixel and the rectangle's
lower right corner must coincide with the lower right corner
of the last pixel.public static GridGeometry2D wrap(GridGeometry other)
GridGeometry2D
. If the given
object is already an instance of GridGeometry2D
, then it is returned
unchanged. Otherwise a new GridGeometry2D
instance is created using the
copy constructor.other
 The grid geometry to wrap.null
if other
was null.public Envelope2D reduce(Envelope envelope)
axisDimensionX
, axisDimensionY
) index.
The coordinate reference system
of the
source envelope is ignored. The coordinate reference system of the target envelope
will be getCoordinateReferenceSystem2D()
or null
.
envelope
 The envelope to reduce, or null
. This envelope will not be modified.null
if envelope
was null.
The returned envelope is always a new instance, so it can be modified safely.public CoordinateReferenceSystem reduce(CoordinateReferenceSystem crs) throws FactoryException
axisDimensionX
,
axisDimensionY
) index.crs
 The coordinate reference system to reduce, or null
.null
if crs
was null.FactoryException
 if the given CRS can't be reduced to two dimensions.public CoordinateReferenceSystem getCoordinateReferenceSystem2D() throws InvalidGridGeometryException
axisDimensionX
,
axisDimensionY
) axis. Note that those axis are garanteed to appears in the
same order than in the complete CRS.null
).InvalidGridGeometryException
 if this grid geometry has no CRS (i.e.
isDefined(CRS)
returned false
).GeneralGridGeometry.getCoordinateReferenceSystem()
public Envelope2D getEnvelope2D() throws InvalidGridGeometryException
null
).InvalidGridGeometryException
 if this grid geometry has no envelope (i.e.
isDefined(ENVELOPE_BITMASK)
returned false
).GeneralGridGeometry.getEnvelope()
public GridEnvelope2D getGridRange2D() throws InvalidGridGeometryException
Rectangle
subclass.null
).InvalidGridGeometryException
 if this grid geometry has no grid range (i.e.
isDefined(GRID_RANGE_BITMASK)
returned false
).GeneralGridGeometry.getGridRange()
public MathTransform2D getGridToCRS2D() throws InvalidGridGeometryException
AffineTransform
, which
make it convenient for interoperability with Java2D.InvalidGridGeometryException
 if a twodimensional transform is not available
for this grid geometry.getGridToCRS(org.opengis.metadata.spatial.PixelOrientation)
public MathTransform2D getCRSToGrid2D() throws InvalidGridGeometryException
AffineTransform
, which
makes it convenient for interoperability with Java2D.InvalidGridGeometryException
 if a twodimensional transform is not available
for this grid geometry.getGridToCRS(org.opengis.metadata.spatial.PixelOrientation)
public MathTransform2D getGridToCRS2D(PixelOrientation orientation)
getGridToCRS2D()
except that the transform may maps a pixel corner
instead of pixel center.orientation
 The pixel part to map. The default value is
CENTER
.InvalidGridGeometryException
 if a twodimensional transform is not available
for this grid geometry.public MathTransform2D getCRSToGrid2D(PixelOrientation orientation)
getCRSToGrid2D()
except that the transform may map a pixel corner
instead of pixel center.orientation
 The pixel part to map. The default value is
CENTER
.InvalidGridGeometryException
 if a twodimensional transform is not available
for this grid geometry.public MathTransform getGridToCRS(PixelOrientation orientation)
gridDimensionX
and gridDimensionY
parts of the transform;
all other dimensions are assumed mapping pixel center. For applying a translation on all
dimensions, use GeneralGridGeometry.getGridToCRS(PixelInCell)
instead.orientation
 The pixel part to map. The default value is
CENTER
.InvalidGridGeometryException
 if a transform is not available
for this grid geometry.public final GridCoordinates2D worldToGrid(DirectPosition point) throws InvalidGridGeometryException, TransformException
CoordinateReferenceSystem
,
and it differs from that of the coverage, it will be reprojected on the fly.
The the nearest grid cell centre to the input point is found.
Users needing more control over the nature of the conversion can access the MathsTransform provided by getCRSToGrid2D(PixelOrientation) which is accessed via #getGridGeometry().
point
 The point in world coordinate system.InvalidGridGeometryException
 if a twodimensional inverse
transform is not available.TransformException
 if the transformation failed.public final GridEnvelope2D worldToGrid(Envelope2D envelope) throws TransformException, InvalidGridGeometryException
CoordinateReferenceSystem
,
it must be the same as that of this coverage, otherwise an exception
is thrown.
The GridEnvelope2D
returned contains the range of cells whose centers
lie inside the input Envelope2D
Users needing more control over the nature of the conversion can access the MathsTransform provided by getCRSToGrid2D(PixelOrientation) which is accessed via #getGridGeometry().
env
 The envelope in world coordinate system.GridEnvelope2D
objectIllegalArgumentException
 if the coordinate reference system of the
envelope is not null
and does not match that of the coverageInvalidGridGeometryException
 if a twodimensional inverse
transform is not available for this grid geometry.TransformException
 if the transformation failed.public final DirectPosition gridToWorld(GridCoordinates2D point) throws TransformException
Users needing more control over the nature of the conversion (e.g. calculating
cell corner coordinates) can use the MathsTransform
provided by
getGridToCRS2D(PixelOrientation)
which is accessed via #getGridGeometry().
point
 The point in world coordinate system.TransformException
 if the transformation failed.IllegalArgumentException
 if the point lies outside the coveragepublic final Envelope2D gridToWorld(GridEnvelope2D gridEnv) throws TransformException
Users needing more control over the nature of the conversion
can use the MathsTransform
provided by
getGridToCRS2D(PixelOrientation)
which is accessed via #getGridGeometry().
gridEnv
 The rectangle of grid coordinates to convertTransformException
 if the transformation failed.IllegalArgumentException
 if the input rectangle lies outside
the coveragepublic boolean equals(Object object)
equals
in class GeneralGridGeometry
object
 The object to compare with.true
if the given object is equals to this grid geometry.public GridGeometry2D toCanonical()
Copyright © 1996–2018 Geotools. All rights reserved.