|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ObjectAbstractOperation
Operation2D
Crop
public class Crop
The crop operation is responsible for selecting geographic subarea of the source coverage. The CoverageCrop operation does not merely wrap the JAI Crop operation but it goes beyond that as far as capabilities.
The key point is that the CoverageCrop operation aims to perform a spatial
crop, i.e. cropping the underlying raster by providing a spatial
Envelope
(if the envelope is not 2D only the 2D part of it will be
used). This means that, depending on the grid-to-world transformation
existing for the raster we want to crop, the crop area in the raster space
might not be a rectangle, hence JAI's crop may not suffice in order to shrink
the raster area we would obtain. For this purpose this operation make use of
either the JAI's Crop or Mosaic operations depending on the conditions in
which we are working.
Meaning of the ROI_OPTIMISATION_TOLERANCE parameter
In general if the grid-to-world transform is a simple scale and translate
using JAI's crop should suffice, but when the g2w transform contains
rotations or skew then we need something more elaborate since a rectangle in
model space may not map to a rectangle in raster space. We would still be
able to crop using JAI's crop on this polygon bounds but, depending on how
this rectangle is built, we would be highly inefficient. In order to overcome
this problems we use a combination of JAI's crop and mosaic since the mosaic
can be used to crop a raster using a general ROI instead of a simple
rectangle. There is a negative effect though. Crop would not create a new
raster but simply forwards requests back to the original one (it basically
create a viewport on the source raster) while the mosaic operation creates a
new raster. We try to address this trade-off by providing the parameter
ROI_OPTIMISATION_TOLERANCE
, which basically tells this
operation "Use the mosaic operation only if the area that we would load with
the Mosaic is strictly smaller then (ROI_OPTIMISATION_TOLERANCE)* A' where A'
is the area of the polygon resulting from converting the crop area from the
model space to the raster space.
Meaning of the CONSERVE_ENVELOPE parameter
Deprecated.
NOTE that in case we will use the Mosaic operation with a
ROI, such a ROI will be added as a synthetic property to the resulting
coverage. The key for this property will be GC_ROI and the type of the object
Polygon
.
ScaleDescriptor
,
Serialized Form
Field Summary | |
---|---|
static ParameterDescriptor<Boolean> |
CONSERVE_ENVELOPE
Deprecated. |
static ParameterDescriptor<Envelope> |
CROP_ENVELOPE
The parameter descriptor used to pass this operation the envelope to use when doing the spatial crop. |
static ParameterDescriptor<Double> |
ROI_OPTIMISATION_TOLERANCE
The parameter descriptor used to tell this operation to optimize the crop using a Mosaic in where the area of the image we would not load is smaller than ROI_OPTIMISATION_TOLERANCE*FULL_CROP. |
Fields inherited from class Operation2D |
---|
PRIMARY_SOURCE_INDEX, SOURCE_0 |
Fields inherited from class AbstractOperation |
---|
descriptor |
Constructor Summary | |
---|---|
Crop()
Constructs a default "Crop" operation. |
Method Summary | |
---|---|
Coverage |
doOperation(ParameterValueGroup parameters,
Hints hints)
Applies a crop operation to a coverage. |
Methods inherited from class Operation2D |
---|
computeOnGeophysicsValues, extractSources, getFactory |
Methods inherited from class AbstractOperation |
---|
ensureNonNull, equals, getDescription, getDocURL, getName, getNumSources, getParameters, getProcessor, getVendor, getVersion, hashCode, toString |
Methods inherited from class Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final ParameterDescriptor<Envelope> CROP_ENVELOPE
public static final ParameterDescriptor<Double> ROI_OPTIMISATION_TOLERANCE
public static final ParameterDescriptor<Boolean> CONSERVE_ENVELOPE
Note that this might mean obtaining a coverage whose grid to world 2D has been slightly changed to account for the rounding which is applied in order to get integer coordinate for the raster to crop.
See this class javadocs for an explanation.
Constructor Detail |
---|
public Crop()
"Crop"
operation.
Method Detail |
---|
public Coverage doOperation(ParameterValueGroup parameters, Hints hints)
doOperation
in class AbstractOperation
parameters
- List of name value pairs for the parameters required for the operation.hints
- A set of rendering hints, or null
if none. The DefaultProcessor
may provides hints for the following keys: Hints.COORDINATE_OPERATION_FACTORY
and Hints.JAI_INSTANCE
.
AbstractOperation.doOperation(org.opengis.parameter.ParameterValueGroup,
org.geotools.factory.Hints)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |