Class AbstractGridCoverage2DReader
- Object
-
- AbstractGridCoverage2DReader
-
- All Implemented Interfaces:
GridCoverageReader
,GridCoverage2DReader
- Direct Known Subclasses:
ArcGridReader
,BaseGridCoverage2DReader
,GeoPackageReader
,GeoTiffReader
,GrassCoverageReader
,ImageMosaicReader
,ImagePyramidReader
,JP2KReader
,MBTilesReader
,NetCDFReader
,PGRasterReader
,TPKReader
,WMSCoverageReader
,WMTSCoverageReader
,WorldImageReader
public abstract class AbstractGridCoverage2DReader extends Object implements GridCoverage2DReader
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.- Since:
- 2.3
- Author:
- Simone Giannecchini, GeoSolutions
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
closeMe
Temp variable used in many readers.protected GridCoverageFactory
coverageFactory
GridCoverageFactory
instance.protected String
coverageName
Coverage nameprotected CoordinateReferenceSystem
crs
crs for this coverageprotected DatasetLayout
dtLayout
CoverageDatasetLayout
containing information about Overviews and Mask managementprotected static double
EPS
Small number used for double comparisonsprotected boolean
gzipped
In case we are trying to read from a GZipped file this will be set to true.protected double[]
highestRes
Highest resolution available for this reader.protected Hints
hints
Hints used by theAbstractGridCoverage2DReader
subclasses.protected ImageInputStream
inStream
Input stream that can be used to initialize subclasses ofAbstractGridCoverage2DReader
.protected ImageInputStreamSpi
inStreamSPI
protected int
numOverviews
This contains the number of overviews.aaaprotected Double[]
offsets
protected GeneralBounds
originalEnvelope
Envelope read from fileprotected GridEnvelope
originalGridRange
The originalGridRange
for theGridCoverage2D
of this reader.protected double[][]
overViewResolutions
Resolutions avialaible through an overviews based mechanism.protected MathTransform
raster2Model
2DGridToWorld math transform.protected Double[]
scales
scales and offsets for rescalingprotected Object
source
Source to read from-
Fields inherited from interface GridCoverage2DReader
ELEVATION_DOMAIN, ELEVATION_DOMAIN_MAXIMUM, ELEVATION_DOMAIN_MINIMUM, ELEVATION_DOMAIN_RESOLUTION, FILE_SOURCE_PROPERTY, HAS_ELEVATION_DOMAIN, HAS_TIME_DOMAIN, MULTICRS_EPSGCODES, MULTICRS_READER, PAM_DATASET, REPROJECTING_READER, SOURCE_URL_PROPERTY, TIME_DOMAIN, TIME_DOMAIN_MAXIMUM, TIME_DOMAIN_MINIMUM, TIME_DOMAIN_RESOLUTION
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractGridCoverage2DReader()
Default protected constructor.AbstractGridCoverage2DReader(Object input)
Creates a new instance of aAIGReader
.AbstractGridCoverage2DReader(Object input, Hints hints)
Creates a new instance of aAIGReader
.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
addAllSiblings(File file, List<File> files, String... extensions)
Adds all the siblings that could be found to exist to the given file listprotected void
addSiblings(List<File> files, File... siblings)
Adds the specified siblings, if not null, and existingprotected boolean
checkName(String coverageName)
This method is responsible for checking the provided coverage name against the coverage name for thisGridCoverage2DReader
.protected void
collectScaleOffset(IIOMetadata iioMetadata)
Collects the scales and offsets for value rescaling from the metadata, if presentprotected GridCoverage
createImageCoverage(String coverageName, PlanarImage image)
Creates aGridCoverage
for the providedPlanarImage
using theoriginalEnvelope
that was provided for this coverage.protected GridCoverage2D
createImageCoverage(String coverageName, PlanarImage image, MathTransform raster2Model)
Creates aGridCoverage
for the providedPlanarImage
using theraster2Model
that was provided for this coverage.protected GridCoverage
createImageCoverage(PlanarImage image)
Creates aGridCoverage
for the providedPlanarImage
using theoriginalEnvelope
that was provided for this coverage.protected GridCoverage2D
createImageCoverage(PlanarImage image, MathTransform raster2Model)
Creates aGridCoverage
for the providedPlanarImage
using theraster2Model
that was provided for this coverage.protected void
decimationOnReadingControl(String coverageName, 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 thisAbstractGridCoverage2DReader
which may keep anImageInputStream
open.CoordinateReferenceSystem
getCoordinateReferenceSystem()
Retrieves theGeneralBounds
for thisAbstractGridCoverage2DReader
.CoordinateReferenceSystem
getCoordinateReferenceSystem(String coverageName)
Retrieves theGeneralBounds
for thisAbstractGridCoverage2DReader
.DatasetLayout
getDatasetLayout()
Returns theDatasetLayout
for the coverage.DatasetLayout
getDatasetLayout(String coverageName)
Returns theDatasetLayout
for the specified coverage.Set<ParameterDescriptor<List>>
getDynamicParameters()
Return the set of dynamic parameterDescriptors (the ones related to domains) for this reader.Set<ParameterDescriptor<List>>
getDynamicParameters(String coverageName)
Return the set of dynamic parameterDescriptors (the ones related to domains) for this reader.protected List<FileGroupProvider.FileGroup>
getFiles()
Returns a list of files making up the source data for this reader (as a whole).int
getGridCoverageCount()
Retrieve the number of coverages contained within the input source.String[]
getGridCoverageNames()
Retrieve the list of coverages contained within the input source.GroundControlPoints
getGroundControlPoints()
Return the ground control points for the default coverage, or null if there are noneGroundControlPoints
getGroundControlPoints(String coverageName)
Return the ground control points for the specified, or null if there are noneprotected double[]
getHighestRes()
protected double[]
getHighestRes(String coverageName)
ImageLayout
getImageLayout()
Retrieve theImageLayout
for the default coverage.ImageLayout
getImageLayout(String coverageName)
Retrieve theImageLayout
for the specified coverage.ServiceInfo
getInfo()
Information about this source.ResourceInfo
getInfo(String coverageName)
Default implementation returns a FileResourceInfo containing same fileGroup list contained in the ServiceInfo object.String[]
getMetadataNames()
Returns the list of metadata keywords associated with the input source as a whole (not associated with any particular grid coverage).String[]
getMetadataNames(String coverageName)
Returns the list of metadata keywords associated with a specific gridCoverage referred by name.String
getMetadataValue(String name)
Retrieve the metadata value for a given metadata name.String
getMetadataValue(String coverageName, String name)
Retrieve the metadata value for a given metadata name for a specified coverage.protected MultiLevelROIProvider
getMultiLevelROIProvider(String coverageName)
GeneralBounds
getOriginalEnvelope()
Retrieves theGeneralBounds
for thisAbstractGridCoverage2DReader
.GeneralBounds
getOriginalEnvelope(String coverageName)
Retrieves theGeneralBounds
for thisAbstractGridCoverage2DReader
.GridEnvelope
getOriginalGridRange()
Retrieves theGeneralGridEnvelope
that represents the raster grid dimensions of the highest resolution level in this dataset.GridEnvelope
getOriginalGridRange(String coverageName)
Retrieves theGeneralGridEnvelope
that represents the raster grid dimensions of the highest resolution level in this dataset.MathTransform
getOriginalGridToWorld(String coverageName, PixelInCell pixInCell)
Retrieves the original grid to world transformation for thisAbstractGridCoverage2DReader
.MathTransform
getOriginalGridToWorld(PixelInCell pixInCell)
Retrieves the original grid to world transformation for thisAbstractGridCoverage2DReader
.GridEnvelope
getOverviewGridEnvelope(int overviewIndex)
GridEnvelope
getOverviewGridEnvelope(String coverageName, int overviewIndex)
static PAMDataset
getPamDataset(TIFFImageMetadata metadata)
If available, parses the GDAL_METADATA tag contents and transforms it into a PAMDatasetstatic PAMDataset
getPamDataset(File sourceFile, IIOMetadata metadata)
Method that looks for an externalPAMDataset
first, and if not found, checks for an internalGDALMetadata
inside a custom tag.double[]
getReadingResolutions(String coverageName, OverviewPolicy policy, double[] requestedResolution)
Returns the actual resolution used to read the data given the specified target resolution and the specified overview policydouble[]
getReadingResolutions(OverviewPolicy policy, double[] requestedResolution)
Returns the actual resolution used to read the data given the specified target resolution and the specified overview policyprotected AffineTransform
getRescaledRasterToModel(RenderedImage coverageRaster)
Computes the raster to model of a rescaled output raster, based on the original transform and output raster scaling factorprotected static double[]
getResolution(GeneralBounds envelope, Rectangle2D dim, CoordinateReferenceSystem crs)
This method is responsible for computing the resolutions in for the provided grid geometry in the provided crs.double[][]
getResolutionLevels()
Retrieve the resolution levels for the default coverage.double[][]
getResolutionLevels(String coverageName)
Retrieve the resolution levels for the specified coverage.protected static File
getSibling(File file, String extension)
Retrieves the sibling of the specified file, if available, or null otherwiseObject
getSource()
Retrieves the source for thisAbstractGridCoverage2DReader
.protected File
getSourceAsFile()
Returns the source as a File, if it can be converted to one, and it existsGridCoverage2D
read(String coverageName, GeneralParameterValue[] parameters)
Retrieves theGridEnvelope
associated to the specified coverageName for thisGridCoverage2DReader
.abstract GridCoverage2D
read(GeneralParameterValue[] parameters)
Read the current grid coverage from the stream.protected void
setlayout(ImageLayout layout)
Set the provided layout for thisGridCoverage2DReader
-protected void
setLayout(ImageReader reader)
Extract the ImageLayout from the provided reader for the first available image.protected Integer
setReadParams(String coverageName, OverviewPolicy overviewPolicy, ImageReadParam readP, GeneralBounds requestedEnvelope, Rectangle requestedDim)
This method is responsible for preparing the read param for doing anImageReader.read(int, ImageReadParam)
.protected Integer
setReadParams(OverviewPolicy overviewPolicy, ImageReadParam readP, GeneralBounds requestedEnvelope, Rectangle requestedDim)
This method is responsible for preparing the read param for doing anImageReader.read(int, ImageReadParam)
.-
Methods inherited from class Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface GridCoverageReader
getFormat
-
-
-
-
Field Detail
-
EPS
protected static double EPS
Small number used for double comparisons
-
numOverviews
protected int numOverviews
This contains the number of overviews.aaa
-
raster2Model
protected MathTransform raster2Model
2DGridToWorld math transform.
-
crs
protected CoordinateReferenceSystem crs
crs for this coverage
-
originalEnvelope
protected GeneralBounds originalEnvelope
Envelope read from file
-
coverageName
protected String coverageName
Coverage name
-
source
protected Object source
Source to read from
-
hints
protected Hints hints
Hints used by theAbstractGridCoverage2DReader
subclasses.
-
highestRes
protected double[] highestRes
Highest resolution available for this reader.
-
closeMe
protected boolean closeMe
Temp variable used in many readers.
-
gzipped
protected boolean gzipped
In case we are trying to read from a GZipped file this will be set to true.
-
originalGridRange
protected GridEnvelope originalGridRange
The originalGridRange
for theGridCoverage2D
of this reader.
-
inStream
protected ImageInputStream inStream
Input stream that can be used to initialize subclasses ofAbstractGridCoverage2DReader
.
-
overViewResolutions
protected double[][] overViewResolutions
Resolutions avialaible through an overviews based mechanism.
-
coverageFactory
protected GridCoverageFactory coverageFactory
GridCoverageFactory
instance.
-
scales
protected Double[] scales
scales and offsets for rescaling
-
offsets
protected Double[] offsets
-
inStreamSPI
protected ImageInputStreamSpi inStreamSPI
-
dtLayout
protected DatasetLayout dtLayout
CoverageDatasetLayout
containing information about Overviews and Mask management
-
-
Constructor Detail
-
AbstractGridCoverage2DReader
protected AbstractGridCoverage2DReader()
Default protected constructor. Useful for wrappers.
-
AbstractGridCoverage2DReader
public AbstractGridCoverage2DReader(Object input) throws DataSourceException
Creates a new instance of aAIGReader
. I assume nothing about file extension.- Parameters:
input
- Source object for which we want to build anAIGReader
.- Throws:
DataSourceException
-
AbstractGridCoverage2DReader
public AbstractGridCoverage2DReader(Object input, Hints hints) throws DataSourceException
Creates a new instance of aAIGReader
. I assume nothing about file extension.- Parameters:
input
- Source object for which we want to build anAIGReader
.hints
- Hints to be used by this reader throughout his life.- Throws:
DataSourceException
-
-
Method Detail
-
checkName
protected boolean checkName(String coverageName)
This method is responsible for checking the provided coverage name against the coverage name for thisGridCoverage2DReader
.- Parameters:
coverageName
- the coverage name to check.- Returns:
true
if thisGridCoverage2DReader
contains the provided coverage name,false
otherwise.
-
read
public GridCoverage2D read(String coverageName, GeneralParameterValue[] parameters) throws IllegalArgumentException, IOException
Description copied from interface:GridCoverage2DReader
Retrieves theGridEnvelope
associated to the specified coverageName for thisGridCoverage2DReader
.- Specified by:
read
in interfaceGridCoverage2DReader
- Specified by:
read
in interfaceGridCoverageReader
- Parameters:
coverageName
- the name of the coverage to work withparameters
- an array ofGeneralParameterValue
that uses a subset of the available read params for thisGridCoverage2DReader
as specified by theFormat
- Returns:
- a
GridCoverage2D
for the underlying default coverage for thisGridCoverage2DReader
ornull
in case noGridCoverage2D
can be read for the provided parameters. - Throws:
IllegalArgumentException
- if the specified coverageName does not existIOException
- if a read operation failed for some other input/output reason, includingFileNotFoundException
if no file with the givenname
can be found, orIIOException
if an error was thrown by the underlying image library.
-
read
public abstract GridCoverage2D read(GeneralParameterValue[] parameters) throws IllegalArgumentException, IOException
Read the current grid coverage from the stream.Example:
- Specified by:
read
in interfaceGridCoverage2DReader
- Specified by:
read
in interfaceGridCoverageReader
- Parameters:
parameters
- Optional parameters matchingFormat.getReadParameters()
.- Returns:
- a grid coverage from the input source.
- Throws:
InvalidParameterNameException
- if a parameter inparameters
doesn't have a recognized name.InvalidParameterValueException
- if a parameter inparameters
doesn't have a valid value.ParameterNotFoundException
- if a parameter was required for the operation but was not provided in theparameters
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, includingFileNotFoundException
if no file with the givenname
can be found, orIIOException
if an error was thrown by the underlying image library.InvalidParameterNameException
- if a parameter inparameters
doesn't have a recognized name.InvalidParameterValueException
- if a parameter inparameters
doesn't have a valid value.ParameterNotFoundException
- if a parameter was required for the operation but was not provided in theparameters
list.IllegalArgumentException
-
setReadParams
protected Integer setReadParams(OverviewPolicy overviewPolicy, ImageReadParam readP, GeneralBounds requestedEnvelope, Rectangle requestedDim) throws IOException, TransformException
This method is responsible for preparing the read param for doing anImageReader.read(int, ImageReadParam)
.This method is responsible for preparing the read param for doing an
ImageReader.read(int, ImageReadParam)
. It sets the passedImageReadParam
in terms of decimation on reading using the provided requestedEnvelope and requestedDim to evaluate the needed resolution. It also returns andInteger
representing the index of the raster to be read when dealing with multipage raster.- Parameters:
overviewPolicy
- it can be one ofHints#VALUE_OVERVIEW_POLICY_IGNORE
,Hints#VALUE_OVERVIEW_POLICY_NEAREST
,Hints#VALUE_OVERVIEW_POLICY_QUALITY
orHints#VALUE_OVERVIEW_POLICY_SPEED
. It specifies the policy to compute the overviews level upon request.readP
- an instance ofImageReadParam
for setting the subsampling factors.requestedEnvelope
- theGeneralBounds
we are requesting.requestedDim
- the requested dimensions.- Returns:
- the index of the raster to read in the underlying data source.
- Throws:
IOException
TransformException
-
setReadParams
protected Integer setReadParams(String coverageName, OverviewPolicy overviewPolicy, ImageReadParam readP, GeneralBounds requestedEnvelope, Rectangle requestedDim) throws IOException, TransformException
This method is responsible for preparing the read param for doing anImageReader.read(int, ImageReadParam)
.This method is responsible for preparing the read param for doing an
ImageReader.read(int, ImageReadParam)
. It sets the passedImageReadParam
in terms of decimation on reading using the provided requestedEnvelope and requestedDim to evaluate the needed resolution. It also returns andInteger
representing the index of the raster to be read when dealing with multipage raster.- Parameters:
overviewPolicy
- it can be one ofHints#VALUE_OVERVIEW_POLICY_IGNORE
,Hints#VALUE_OVERVIEW_POLICY_NEAREST
,Hints#VALUE_OVERVIEW_POLICY_QUALITY
orHints#VALUE_OVERVIEW_POLICY_SPEED
. It specifies the policy to compute the overviews level upon request.readP
- an instance ofImageReadParam
for setting the subsampling factors.requestedEnvelope
- theGeneralBounds
we are requesting.requestedDim
- the requested dimensions.- Returns:
- the index of the raster to read in the underlying data source.
- Throws:
IOException
TransformException
-
getReadingResolutions
public double[] getReadingResolutions(OverviewPolicy policy, double[] requestedResolution) throws IOException
Returns the actual resolution used to read the data given the specified target resolution and the specified overview policy- Specified by:
getReadingResolutions
in interfaceGridCoverage2DReader
- Parameters:
policy
- theOverviewPolicy
to use during evaluation.requestedResolution
- the requested resolution- Returns:
- an array of 2 double with the resolution of the selected overview.
- Throws:
IOException
- in case an error occurs.
-
getReadingResolutions
public double[] getReadingResolutions(String coverageName, OverviewPolicy policy, double[] requestedResolution) throws IOException
Returns the actual resolution used to read the data given the specified target resolution and the specified overview policy- Specified by:
getReadingResolutions
in interfaceGridCoverage2DReader
- Parameters:
coverageName
- the name of the coverage to work on.policy
- theOverviewPolicy
to use during evaluation.requestedResolution
- the requested resolution- Returns:
- an array of 2 double with the resolution of the selected overview.
- Throws:
IOException
- in case an error occurs.
-
decimationOnReadingControl
protected final void decimationOnReadingControl(String coverageName, 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.Anyhow this method should not be called directly but subclasses should make use of the setReadParams method instead in order to transparently look for overviews.
-
createImageCoverage
protected final GridCoverage createImageCoverage(PlanarImage image) throws IOException
Creates aGridCoverage
for the providedPlanarImage
using theoriginalEnvelope
that was provided for this coverage.- Parameters:
image
- contains the data for the coverage to create.- Returns:
- a
GridCoverage
- Throws:
IOException
-
createImageCoverage
protected final GridCoverage createImageCoverage(String coverageName, PlanarImage image) throws IOException
Creates aGridCoverage
for the providedPlanarImage
using theoriginalEnvelope
that was provided for this coverage.- Parameters:
image
- contains the data for the coverage to create.- Returns:
- a
GridCoverage
- Throws:
IOException
-
createImageCoverage
protected final GridCoverage2D createImageCoverage(PlanarImage image, MathTransform raster2Model) throws IOException
Creates aGridCoverage
for the providedPlanarImage
using theraster2Model
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.
- Parameters:
image
- contains the data for the coverage to create.raster2Model
- is theMathTransform
that maps from the raster space to the model space.- Returns:
- a
GridCoverage
- Throws:
IOException
-
createImageCoverage
protected final GridCoverage2D createImageCoverage(String coverageName, PlanarImage image, MathTransform raster2Model) throws IOException
Creates aGridCoverage
for the providedPlanarImage
using theraster2Model
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.
- Parameters:
image
- contains the data for the coverage to create.raster2Model
- is theMathTransform
that maps from the raster space to the model space.- Returns:
- a
GridCoverage
- Throws:
IOException
-
getResolution
protected static final double[] getResolution(GeneralBounds envelope, Rectangle2D dim, CoordinateReferenceSystem crs) throws DataSourceException
This method is responsible for computing the resolutions in for the provided grid geometry in the provided crs.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?
- Parameters:
envelope
- the GeneralEnvelope- Throws:
DataSourceException
-
getOriginalGridRange
public GridEnvelope getOriginalGridRange()
Retrieves theGeneralGridEnvelope
that represents the raster grid dimensions of the highest resolution level in this dataset.- Specified by:
getOriginalGridRange
in interfaceGridCoverage2DReader
- Returns:
- the
GeneralGridEnvelope
that represents the raster grid dimensions of the highest resolution level in this dataset.
-
getOriginalGridRange
public GridEnvelope getOriginalGridRange(String coverageName)
Retrieves theGeneralGridEnvelope
that represents the raster grid dimensions of the highest resolution level in this dataset.- Specified by:
getOriginalGridRange
in interfaceGridCoverage2DReader
- Parameters:
coverageName
- the name of the coverage to work with- Returns:
- the
GeneralGridEnvelope
that represents the raster grid dimensions of the highest resolution level in this dataset.
-
getCoordinateReferenceSystem
public CoordinateReferenceSystem getCoordinateReferenceSystem()
Retrieves theGeneralBounds
for thisAbstractGridCoverage2DReader
.- Specified by:
getCoordinateReferenceSystem
in interfaceGridCoverage2DReader
- Returns:
- the
GeneralBounds
for thisAbstractGridCoverage2DReader
.
-
getCoordinateReferenceSystem
public CoordinateReferenceSystem getCoordinateReferenceSystem(String coverageName)
Retrieves theGeneralBounds
for thisAbstractGridCoverage2DReader
.- Specified by:
getCoordinateReferenceSystem
in interfaceGridCoverage2DReader
- Returns:
- the
GeneralBounds
for thisAbstractGridCoverage2DReader
.
-
getOriginalEnvelope
public GeneralBounds getOriginalEnvelope()
Retrieves theGeneralBounds
for thisAbstractGridCoverage2DReader
.- Specified by:
getOriginalEnvelope
in interfaceGridCoverage2DReader
- Returns:
- the
GeneralBounds
for thisAbstractGridCoverage2DReader
.
-
getOriginalEnvelope
public GeneralBounds getOriginalEnvelope(String coverageName)
Retrieves theGeneralBounds
for thisAbstractGridCoverage2DReader
.- Specified by:
getOriginalEnvelope
in interfaceGridCoverage2DReader
- Parameters:
coverageName
- the name of the coverage to work on.- Returns:
- the
GeneralBounds
for thisAbstractGridCoverage2DReader
.
-
getOriginalGridToWorld
public MathTransform getOriginalGridToWorld(PixelInCell pixInCell)
Retrieves the original grid to world transformation for thisAbstractGridCoverage2DReader
.- Specified by:
getOriginalGridToWorld
in interfaceGridCoverage2DReader
- Parameters:
pixInCell
- specifies the datum of the transformation we want.- Returns:
- the original grid to world transformation for this
AbstractGridCoverage2DReader
.
-
getOriginalGridToWorld
public MathTransform getOriginalGridToWorld(String coverageName, PixelInCell pixInCell)
Retrieves the original grid to world transformation for thisAbstractGridCoverage2DReader
.- Specified by:
getOriginalGridToWorld
in interfaceGridCoverage2DReader
- Parameters:
pixInCell
- specifies the datum of the transformation we want.coverageName
- the name of the coverage to work with- Returns:
- the original grid to world transformation for this
AbstractGridCoverage2DReader
.
-
getSource
public final Object getSource()
Retrieves the source for thisAbstractGridCoverage2DReader
.- Specified by:
getSource
in interfaceGridCoverageReader
- Returns:
- the source for this
AbstractGridCoverage2DReader
.
-
dispose
public void dispose()
Disposes this reader.This method just tries to close the underlying
ImageInputStream
.- Specified by:
dispose
in interfaceGridCoverageReader
-
getGridCoverageNames
public String[] getGridCoverageNames()
Description copied from interface:GridCoverageReader
Retrieve the list of coverages contained within the input source. Each grid can have a different coordinate system, number of dimensions and grid geometry. For example, a HDF-EOS file (GRID.HDF) contains 6 grid coverages each having a different projection. An empty array will be returned if no sub names exist.- Specified by:
getGridCoverageNames
in interfaceGridCoverageReader
- Returns:
- The list of grid coverages contained within the input source.
-
getMetadataNames
public String[] getMetadataNames(String coverageName)
Description copied from interface:GridCoverageReader
Returns the list of metadata keywords associated with a specific gridCoverage referred by name. If no metadata is available, the array will be empty.- Specified by:
getMetadataNames
in interfaceGridCoverageReader
- Returns:
- The list of metadata keywords for the input source.
-
getMetadataNames
public String[] getMetadataNames()
Description copied from interface:GridCoverageReader
Returns the list of metadata keywords associated with the input source as a whole (not associated with any particular grid coverage). If no metadata is available, the array will be empty.- Specified by:
getMetadataNames
in interfaceGridCoverageReader
- Returns:
- The list of metadata keywords for the input source.
- See Also:
GridCoverageReader.getMetadataNames()
-
getMetadataValue
public String getMetadataValue(String name)
Description copied from interface:GridCoverageReader
Retrieve the metadata value for a given metadata name.- Specified by:
getMetadataValue
in interfaceGridCoverageReader
- Parameters:
name
- Metadata keyword for which to retrieve metadata.- Returns:
- The metadata value for the given metadata name. Should be one of the name returned by
GridCoverageReader.getMetadataNames()
. - See Also:
GridCoverageReader.getMetadataValue(java.lang.String)
-
getMetadataValue
public String getMetadataValue(String coverageName, String name)
Description copied from interface:GridCoverageReader
Retrieve the metadata value for a given metadata name for a specified coverage.- Specified by:
getMetadataValue
in interfaceGridCoverageReader
name
- Metadata keyword for which to retrieve metadata.- Returns:
- The metadata value for the given metadata name. Should be one of the name returned by
GridCoverageReader.getMetadataNames()
.
-
getGridCoverageCount
public int getGridCoverageCount()
Description copied from interface:GridCoverageReader
Retrieve the number of coverages contained within the input source.- Specified by:
getGridCoverageCount
in interfaceGridCoverageReader
- Returns:
- The number of coverages contained within the input source.
- See Also:
GridCoverageReader.getGridCoverageCount()
-
getInfo
public ServiceInfo getInfo()
Information about this source.Subclasses should provide additional format specific information.
- Specified by:
getInfo
in interfaceGridCoverage2DReader
- Returns:
- ServiceInfo describing getSource().
-
getFiles
protected List<FileGroupProvider.FileGroup> getFiles() throws IOException
Returns a list of files making up the source data for this reader (as a whole). The default implementation returns the source, if it can be made into a File object, or null otherwise.- Throws:
IOException
-
getSourceAsFile
protected File getSourceAsFile()
Returns the source as a File, if it can be converted to one, and it exists
-
getInfo
public ResourceInfo getInfo(String coverageName)
Default implementation returns a FileResourceInfo containing same fileGroup list contained in the ServiceInfo object.- Specified by:
getInfo
in interfaceGridCoverage2DReader
- Returns:
- ResourceInfo describing a specific coverage.
-
finalize
protected void finalize() throws Throwable
Forcing disposal of thisAbstractGridCoverage2DReader
which may keep anImageInputStream
open.
-
getDynamicParameters
public Set<ParameterDescriptor<List>> getDynamicParameters() throws IOException
Return the set of dynamic parameterDescriptors (the ones related to domains) for this reader. Default implementation returns an empty set of parameters- Specified by:
getDynamicParameters
in interfaceGridCoverage2DReader
- Returns:
- the
Set
of dynamic read parameters supported by thisGridCoverage2DReader
. - Throws:
IOException
- in case an error occurs while creating theSet
of dynamic parameters.
-
getDynamicParameters
public Set<ParameterDescriptor<List>> getDynamicParameters(String coverageName) throws IOException
Return the set of dynamic parameterDescriptors (the ones related to domains) for this reader. Default implementation returns an empty set of parameters- Specified by:
getDynamicParameters
in interfaceGridCoverage2DReader
- Parameters:
coverageName
- the name of the coverage to work with- Returns:
- the
Set
of dynamic read parameters supported by thisGridCoverage2DReader
. - Throws:
IOException
- in case an error occurs while creating theSet
of dynamic parameters.
-
getDatasetLayout
public DatasetLayout getDatasetLayout()
Description copied from interface:GridCoverage2DReader
Returns theDatasetLayout
for the coverage.- Specified by:
getDatasetLayout
in interfaceGridCoverage2DReader
- Returns:
- a
DatasetLayout
object containing info about Overview number and Image masks.
-
getDatasetLayout
public DatasetLayout getDatasetLayout(String coverageName)
Description copied from interface:GridCoverage2DReader
Returns theDatasetLayout
for the specified coverage.- Specified by:
getDatasetLayout
in interfaceGridCoverage2DReader
- Parameters:
coverageName
- the name of the coverage for which we do want to get theDatasetLayout
- Returns:
- a
DatasetLayout
object containing info about Overview number and Image masks.
-
getOverviewGridEnvelope
public GridEnvelope getOverviewGridEnvelope(int overviewIndex) throws IOException
- Throws:
IOException
-
getOverviewGridEnvelope
public GridEnvelope getOverviewGridEnvelope(String coverageName, int overviewIndex) throws IOException
- Throws:
IOException
-
getImageLayout
public ImageLayout getImageLayout(String coverageName) throws IOException
Description copied from interface:GridCoverage2DReader
Retrieve theImageLayout
for the specified coverage.Throw an
IllegalArgumentException
in case the name is wrong and/or no such a coverage exists.- Specified by:
getImageLayout
in interfaceGridCoverage2DReader
- Parameters:
coverageName
- the name of the coverage for which we want to know theGridEnvelope
.- Returns:
- an
ImageLayout
that is useful for actually knowing theColorModel
, theSampleModel
as well as the tile grid for a certain coverage. - Throws:
IOException
-
getImageLayout
public ImageLayout getImageLayout() throws IOException
Description copied from interface:GridCoverage2DReader
Retrieve theImageLayout
for the default coverage.Throw an
IllegalArgumentException
in case the name is wrong and/or no such a coverage exists.- Specified by:
getImageLayout
in interfaceGridCoverage2DReader
- Returns:
- an
ImageLayout
that is useful for actually knowing theColorModel
, theSampleModel
as well as the tile grid for the default coverage. - Throws:
IOException
-
setLayout
protected void setLayout(ImageReader reader) throws IOException
Extract the ImageLayout from the provided reader for the first available image.- Parameters:
reader
- an istance ofImageReader
- Throws:
IOException
- in case an error occurs
-
setlayout
protected void setlayout(ImageLayout layout)
Set the provided layout for thisGridCoverage2DReader
-- Parameters:
layout
- theImageLayout
to set. It must be nont null
-
getResolutionLevels
public double[][] getResolutionLevels() throws IOException
Description copied from interface:GridCoverage2DReader
Retrieve the resolution levels for the default coverage.Throw an
IllegalArgumentException
in case the name is wrong and/or no such a coverage exists.- Specified by:
getResolutionLevels
in interfaceGridCoverage2DReader
- Returns:
- the resolution levels for the default coverage.
- Throws:
IOException
-
getResolutionLevels
public double[][] getResolutionLevels(String coverageName) throws IOException
Description copied from interface:GridCoverage2DReader
Retrieve the resolution levels for the specified coverage.Throw an
IllegalArgumentException
in case the name is wrong and/or no such a coverage exists.- Specified by:
getResolutionLevels
in interfaceGridCoverage2DReader
- Parameters:
coverageName
- the name of the coverage for which we want to know the resolution levels.- Returns:
- the resolution levels for the specified coverage.
- Throws:
IOException
-
getHighestRes
protected double[] getHighestRes(String coverageName)
-
getHighestRes
protected double[] getHighestRes()
-
getGroundControlPoints
public GroundControlPoints getGroundControlPoints()
Return the ground control points for the default coverage, or null if there are none
-
getGroundControlPoints
public GroundControlPoints getGroundControlPoints(String coverageName)
Return the ground control points for the specified, or null if there are none
-
getRescaledRasterToModel
protected AffineTransform getRescaledRasterToModel(RenderedImage coverageRaster)
Computes the raster to model of a rescaled output raster, based on the original transform and output raster scaling factor
-
getSibling
protected static File getSibling(File file, String extension)
Retrieves the sibling of the specified file, if available, or null otherwise
-
addAllSiblings
protected void addAllSiblings(File file, List<File> files, String... extensions)
Adds all the siblings that could be found to exist to the given file list
-
addSiblings
protected void addSiblings(List<File> files, File... siblings)
Adds the specified siblings, if not null, and existing
-
getMultiLevelROIProvider
protected MultiLevelROIProvider getMultiLevelROIProvider(String coverageName)
-
collectScaleOffset
protected void collectScaleOffset(IIOMetadata iioMetadata)
Collects the scales and offsets for value rescaling from the metadata, if present
-
getPamDataset
public static PAMDataset getPamDataset(File sourceFile, IIOMetadata metadata)
Method that looks for an externalPAMDataset
first, and if not found, checks for an internalGDALMetadata
inside a custom tag.The method is tolerant to invalid metadata contents and will log at INFO level in case of invalid metadata structure: there might be files with invalid metadata that used to be read just fine before PAM dataset reading was implemented.
-
getPamDataset
public static PAMDataset getPamDataset(TIFFImageMetadata metadata)
If available, parses the GDAL_METADATA tag contents and transforms it into a PAMDataset
-
-