|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ObjectAbstractGridCoverage2DReader
public abstract class AbstractGridCoverage2DReader
This class is a first attempt for providing a way to get more informations out of a single 2D raster datasets (x,y). It is worth to remark that for the moment this is thought for 2D rasters not for 3D or 4D rasters (x,y,z,t).
The main drawback I see with the current GeoApi GridCoverageReader interface
is that there is no way to get real information about a raster source unless
you instantiate a GridCoverage. As an instance it is impossible to know the
envelope, the number of overviews, the tile size. This information is needed
in order to perform decimation on reading or to use built-in overviews
This really impacts the ability to exploit raster datasets in a desktop
environment where caching is crucial.
Field Summary | |
---|---|
protected boolean |
closeMe
Temp variable used in many readers. |
protected GridCoverageFactory |
coverageFactory
GridCoverageFactory instance. |
protected String |
coverageName
Coverage name |
protected CoordinateReferenceSystem |
crs
crs for this coverage |
protected static Color[] |
demColors
Default color ramp. |
static double |
EPS
|
protected boolean |
gzipped
In case we are trying to read from a GZipped file this will be set to true. |
protected double[] |
highestRes
Highest resolution availaible for this reader. |
protected Hints |
hints
Hints used by the AbstractGridCoverage2DReader subclasses. |
protected ImageInputStream |
inStream
Input stream that can be used to initialize subclasses of AbstractGridCoverage2DReader . |
protected int |
numOverviews
This contains the number of overviews.aaa |
protected GeneralEnvelope |
originalEnvelope
Envelope read from file |
protected GridEnvelope |
originalGridRange
The original GridRange for the GridCoverage2D of this
reader. |
protected double[][] |
overViewResolutions
Resolutions avialaible through an overviews based mechanism. |
protected MathTransform |
raster2Model
2DGridToWorld math transform. |
protected Object |
source
Source to read from |
Constructor Summary | |
---|---|
AbstractGridCoverage2DReader()
|
Method Summary | |
---|---|
protected GridCoverage |
createImageCoverage(PlanarImage image)
Creates a GridCoverage for the provided PlanarImage using
the originalEnvelope that was provided for this coverage. |
protected GridCoverage2D |
createImageCoverage(PlanarImage image,
MathTransform raster2Model)
Creates a GridCoverage for the provided PlanarImage using
the raster2Model that was provided for this coverage. |
protected void |
decimationOnReadingControl(Integer imageChoice,
ImageReadParam readP,
double[] requestedRes)
This method is responsible for evaluating possible subsampling factors once the best resolution level has been found, in case we have support for overviews, or starting from the original coverage in case there are no overviews available. |
void |
dispose()
Disposes this reader. |
protected void |
finalize()
Forcing disposal of this AbstractGridCoverage2DReader which may
keep an ImageInputStream open. |
CoordinateReferenceSystem |
getCrs()
Retrieves the CoordinateReferenceSystem for dataset pointed by
this AbstractGridCoverage2DReader . |
String |
getCurrentSubname()
|
int |
getGridCoverageCount()
|
ServiceInfo |
getInfo()
Information about this source. |
String[] |
getMetadataNames()
|
String |
getMetadataValue(String name)
|
GeneralEnvelope |
getOriginalEnvelope()
Retrieves the GeneralEnvelope for this
AbstractGridCoverage2DReader . |
GridEnvelope |
getOriginalGridRange()
Retrieves the GeneralGridRange that represents the raster grid
dimensions of the highest resolution level in this dataset. |
MathTransform |
getOriginalGridToWorld(PixelInCell pixInCell)
Retrieves the original grid to world transformation for this AbstractGridCoverage2DReader . |
protected static double[] |
getResolution(GeneralEnvelope envelope,
Rectangle2D dim,
CoordinateReferenceSystem crs)
This method is responsible for computing the resolutions in for the provided grid geometry in the provided crs. |
Object |
getSource()
Retrieves the source for this AbstractGridCoverage2DReader . |
boolean |
hasMoreGridCoverages()
|
String[] |
listSubNames()
|
abstract GridCoverage2D |
read(GeneralParameterValue[] parameters)
Read the current grid coverage from the stream. |
protected Integer |
setReadParams(OverviewPolicy overviewPolicy,
ImageReadParam readP,
GeneralEnvelope requestedEnvelope,
Rectangle requestedDim)
This method is responsible for preparing the read param for doing an ImageReader.read(int, ImageReadParam) . |
void |
skip()
|
Methods inherited from class Object |
---|
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface GridCoverageReader |
---|
getFormat |
Field Detail |
---|
public static final double EPS
protected static final Color[] demColors
protected int numOverviews
protected MathTransform raster2Model
protected CoordinateReferenceSystem crs
protected GeneralEnvelope originalEnvelope
protected String coverageName
protected Object source
protected Hints hints
AbstractGridCoverage2DReader
subclasses.
protected double[] highestRes
protected boolean closeMe
protected boolean gzipped
protected GridEnvelope originalGridRange
GridRange
for the GridCoverage2D
of this
reader.
protected ImageInputStream inStream
AbstractGridCoverage2DReader
.
protected double[][] overViewResolutions
protected GridCoverageFactory coverageFactory
GridCoverageFactory
instance.
Constructor Detail |
---|
public AbstractGridCoverage2DReader()
Method Detail |
---|
public abstract GridCoverage2D read(GeneralParameterValue[] parameters) throws IllegalArgumentException, IOException
Example:
The method hasMoreGridCoverages()
should be invoked first in order to verify that a
coverage is available.
read
in interface GridCoverageReader
parameters
- Optional parameters matching Format.getReadParameters()
.
InvalidParameterNameException
- if a parameter in parameters
doesn't have a recognized name.
InvalidParameterValueException
- if a parameter in parameters
doesn't have a valid value.
ParameterNotFoundException
- if a parameter was required for the operation but was not provided in the parameters
list.
CannotCreateGridCoverageException
- if the coverage can't be created for a logical reason (for example an unsupported
format, or an inconsistency found in the data).
IOException
- if a read operation failed for some other input/output reason, including
FileNotFoundException
if no file with the given name
can be
found, or IIOException
if an error was thrown by the
underlying image library.
IllegalArgumentException
protected Integer setReadParams(OverviewPolicy overviewPolicy, ImageReadParam readP, GeneralEnvelope requestedEnvelope, Rectangle requestedDim) throws IOException, TransformException
ImageReader.read(int, ImageReadParam)
.
This method is responsible for preparing the read param for doing an
ImageReader.read(int, ImageReadParam)
. It sets the passed
ImageReadParam
in terms of decimation on reading using the
provided requestedEnvelope and requestedDim to evaluate the needed
resolution. It also returns and Integer
representing the index of
the raster to be read when dealing with multipage raster.
overviewPolicy
- it can be one of Hints#VALUE_OVERVIEW_POLICY_IGNORE
,
Hints#VALUE_OVERVIEW_POLICY_NEAREST
,
Hints#VALUE_OVERVIEW_POLICY_QUALITY
or
Hints#VALUE_OVERVIEW_POLICY_SPEED
. It specifies the
policy to compute the overviews level upon request.readP
- an instance of ImageReadParam
for setting the
subsampling factors.requestedEnvelope
- the GeneralEnvelope
we are requesting.requestedDim
- the requested dimensions.
IOException
TransformException
protected final void decimationOnReadingControl(Integer imageChoice, ImageReadParam readP, double[] requestedRes)
imageChoice
- readP
- requestedRes
- protected final GridCoverage createImageCoverage(PlanarImage image) throws IOException
GridCoverage
for the provided PlanarImage
using
the originalEnvelope
that was provided for this coverage.
image
- contains the data for the coverage to create.
GridCoverage
IOException
protected final GridCoverage2D createImageCoverage(PlanarImage image, MathTransform raster2Model) throws IOException
GridCoverage
for the provided PlanarImage
using
the raster2Model
that was provided for this coverage.
This method is vital when working with coverages that have a raster to model transformation that is not a simple scale and translate.
image
- contains the data for the coverage to create.raster2Model
- is the MathTransform
that maps from the raster space
to the model space.
GridCoverage
IOException
protected static final double[] getResolution(GeneralEnvelope envelope, Rectangle2D dim, CoordinateReferenceSystem crs) throws DataSourceException
It is worth to note that the returned resolution array is of length of 2
and it always is lon, lat for the moment.
It might be worth to remove the axes reordering code when we are
confident enough with the code to handle the north-up crs.
TODO use orthodromic distance?
envelope
- the GeneralEnvelopedim
- crs
-
DataSourceException
public final CoordinateReferenceSystem getCrs()
CoordinateReferenceSystem
for dataset pointed by
this AbstractGridCoverage2DReader
.
CoordinateReferenceSystem
for dataset pointed by this
AbstractGridCoverage2DReader
.public final GridEnvelope getOriginalGridRange()
GeneralGridRange
that represents the raster grid
dimensions of the highest resolution level in this dataset.
GeneralGridRange
that represents the raster grid
dimensions of the highest resolution level in this dataset.public final GeneralEnvelope getOriginalEnvelope()
GeneralEnvelope
for this
AbstractGridCoverage2DReader
.
GeneralEnvelope
for this
AbstractGridCoverage2DReader
.public final MathTransform getOriginalGridToWorld(PixelInCell pixInCell)
AbstractGridCoverage2DReader
.
pixInCell
- specifies the datum of the transformation we want.
AbstractGridCoverage2DReader
.public final Object getSource()
AbstractGridCoverage2DReader
.
getSource
in interface GridCoverageReader
AbstractGridCoverage2DReader
.public void dispose()
This method just tries to close the underlying ImageInputStream
.
dispose
in interface GridCoverageReader
public void skip()
skip
in interface GridCoverageReader
GridCoverageReader.skip()
public boolean hasMoreGridCoverages()
hasMoreGridCoverages
in interface GridCoverageReader
GridCoverageReader.hasMoreGridCoverages()
public String[] listSubNames()
listSubNames
in interface GridCoverageReader
GridCoverageReader.listSubNames()
public String getCurrentSubname()
getCurrentSubname
in interface GridCoverageReader
GridCoverageReader.getCurrentSubname()
public String[] getMetadataNames()
getMetadataNames
in interface GridCoverageReader
GridCoverageReader.getMetadataNames()
public String getMetadataValue(String name)
getMetadataValue
in interface GridCoverageReader
GridCoverageReader.getMetadataValue(java.lang.String)
public int getGridCoverageCount()
org.opengis.coverage.grid.GridCoverageReader#getGridCoverageCount()
public ServiceInfo getInfo()
Subclasses should provide additional format specific information.
protected void finalize() throws Throwable
AbstractGridCoverage2DReader
which may
keep an ImageInputStream
open.
finalize
in class Object
Throwable
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |