Class ImagePyramidReader
- All Implemented Interfaces:
GridCoverageReader,GridCoverage2DReader
Specifically this plugin relies on the image mosaic plugin to handle each single level of resolutions available, hence all the magic is done inside the mosaic plugin.
For information on how to build a mosaic, please refer to the ImageMosaicReader documentation.
If you are looking for information on how to create a pyramid, here you go.
The pyramid itself does no magic. All the magic is performed by the single mosaic readers that are polled depending on the requeste resolution levels. Therefore the first step is having a mosaic of images like geotiff, tiff, jpeg, or png which is going to be the base for the pyramid.
The second step is to build the next (lower resolution) levels for the pyramid.
If you look inside the spike dire of the geotools project you will find a (growing) set of tools that can be used for
doing processing on coverages.
Specifically there is one tool called PyramidBuilder that can be used to build the pyramid level by level.
Last step is providing a prj file with the projection of the pyramid (btw all the levels has to be in the same projection) as well as a properties file with this structure:
#
#Mon Aug 21 22:23:27 CEST 2006
#name of the coverage
Name=ikonos
#different resolution levels available
Levels=1.2218682749859724E-5,9.220132503102996E-6 2.4428817977683634E-5,1.844026500620314E-5 4.8840552865873626E-5,3.686350299024973E-5 9.781791400307775E-5,7.372700598049946E-5 1.956358280061555E-4,1.4786360643866836E-4 3.901787184256844E-4,2.9572721287731037E-4
#where all the levels reside
LevelsDirs=0 2 4 8 16 32
#number of levels available
LevelsNum=6
#envelope for this pyramid
Envelope2D=13.398228477973406,43.591366397808976 13.537912459169803,43.67121274528585
Starting with 16.x ImagePyramid can now support ImageMosaics with inner overviews. See ImageLevelsMapper
for additional details of the Levels entry of a pyramid of mosaics with inner overviews.
- Since:
- 2.3
- Author:
- Simone Giannecchini, Stefan Alfons Krueger (alfonx), Wikisquare.de : Support for jar:file:foo.jar/bar.properties like URLs
-
Field Summary
Fields inherited from class AbstractGridCoverage2DReader
closeMe, coverageFactory, coverageName, crs, dtLayout, EPS, gzipped, highestRes, hints, inStream, inStreamSPI, numOverviews, offsets, originalEnvelope, originalGridRange, overViewResolutions, raster2Model, scales, sourceFields 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
ConstructorsConstructorDescriptionImagePyramidReader(Object source) Constructor for anImagePyramidReader.ImagePyramidReader(Object source, Hints uHints) Constructor for anImagePyramidReader. -
Method Summary
Modifier and TypeMethodDescriptionvoiddispose()Disposes this reader.getCoordinateReferenceSystem(String coverageName) Retrieves theGeneralBoundsfor thisAbstractGridCoverage2DReader.DatasetLayoutgetDatasetLayout(String coverageName) Returns theDatasetLayoutfor the specified coverage.getDynamicParameters(String coverageName) Return the set of dynamic parameterDescriptors (the ones related to domains) for this reader.Returns the format handled by thisGridCoverageReader.intRetrieve the number of coverages contained within the input source.String[]Retrieve the list of coverages contained within the input source.ImageLayoutgetImageLayout(String coverageName) Retrieve theImageLayoutfor the specified coverage.getImageMosaicReaderForLevel(Integer imageChoice) Retrieve the ImageMosaicReader for the requested Level and load if necessarygetImageMosaicReaderForLevel(String coverageName, Integer imageChoice) Retrieve the ImageMosaicReader for the requested Level and load if necessaryString[]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.getMetadataValue(String name) Retrieve data value for requested metadatagetMetadataValue(String coverageName, String name) Retrieve meta data value from requested coverage and for requested metadatagetOriginalEnvelope(String coverageName) Retrieves theGeneralBoundsfor thisAbstractGridCoverage2DReader.getOriginalGridRange(String coverageName) Retrieves theGeneralGridEnvelopethat represents the raster grid dimensions of the highest resolution level in this dataset.getOriginalGridToWorld(String coverageName, PixelInCell pixInCell) Retrieves the original grid to world transformation for thisAbstractGridCoverage2DReader.double[][]getResolutionLevels(String coverageName) Retrieve the resolution levels for the specified coverage.read(String coverageName, GeneralParameterValue... params) Retrieves theGridEnvelopeassociated to the specified coverageName for thisGridCoverage2DReader.read(GeneralParameterValue... params) Read the current grid coverage from the stream.Methods inherited from class AbstractGridCoverage2DReader
addAllSiblings, addSiblings, checkName, collectScaleOffset, createImageCoverage, createImageCoverage, createImageCoverage, createImageCoverage, decimationOnReadingControl, finalize, getCoordinateReferenceSystem, getDatasetLayout, getDynamicParameters, getFiles, getGroundControlPoints, getGroundControlPoints, getHighestRes, getHighestRes, getImageLayout, getInfo, getInfo, getMultiLevelROIProvider, getOriginalEnvelope, getOriginalGridRange, getOriginalGridToWorld, getOverviewGridEnvelope, getOverviewGridEnvelope, getPamDataset, getPamDataset, getReadingResolutions, getReadingResolutions, getRescaledRasterToModel, getResolution, getResolutionLevels, getSibling, getSource, getSourceAsFile, setlayout, setLayout, setReadParams, setReadParamsMethods inherited from class Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface GridCoverageReader
getSource
-
Constructor Details
-
ImagePyramidReader
Constructor for anImagePyramidReader.- Parameters:
source- The source object.uHints-Hintsto control the behaviour of this reader.- Throws:
IOException
-
ImagePyramidReader
Constructor for anImagePyramidReader.- Parameters:
source- The source object.- Throws:
IOException
-
-
Method Details
-
getFormat
Description copied from interface:GridCoverageReaderReturns the format handled by thisGridCoverageReader.- Specified by:
getFormatin interfaceGridCoverageReader- See Also:
-
read
Description copied from class:AbstractGridCoverage2DReaderRead the current grid coverage from the stream.Example:
- Specified by:
readin interfaceGridCoverage2DReader- Specified by:
readin interfaceGridCoverageReader- Specified by:
readin classAbstractGridCoverage2DReader- Parameters:
params- Optional parameters matchingFormat.getReadParameters().- Returns:
- a grid coverage from the input source.
- Throws:
IOException- if a read operation failed for some other input/output reason, includingFileNotFoundExceptionif no file with the givennamecan be found, orIIOExceptionif an error was thrown by the underlying image library.
-
getOriginalGridRange
Description copied from class:AbstractGridCoverage2DReaderRetrieves theGeneralGridEnvelopethat represents the raster grid dimensions of the highest resolution level in this dataset.- Specified by:
getOriginalGridRangein interfaceGridCoverage2DReader- Overrides:
getOriginalGridRangein classAbstractGridCoverage2DReader- Parameters:
coverageName- the name of the coverage to work with- Returns:
- the
GeneralGridEnvelopethat represents the raster grid dimensions of the highest resolution level in this dataset.
-
getCoordinateReferenceSystem
Description copied from class:AbstractGridCoverage2DReaderRetrieves theGeneralBoundsfor thisAbstractGridCoverage2DReader.- Specified by:
getCoordinateReferenceSystemin interfaceGridCoverage2DReader- Overrides:
getCoordinateReferenceSystemin classAbstractGridCoverage2DReader- Returns:
- the
GeneralBoundsfor thisAbstractGridCoverage2DReader.
-
getOriginalEnvelope
Description copied from class:AbstractGridCoverage2DReaderRetrieves theGeneralBoundsfor thisAbstractGridCoverage2DReader.- Specified by:
getOriginalEnvelopein interfaceGridCoverage2DReader- Overrides:
getOriginalEnvelopein classAbstractGridCoverage2DReader- Parameters:
coverageName- the name of the coverage to work on.- Returns:
- the
GeneralBoundsfor thisAbstractGridCoverage2DReader.
-
getOriginalGridToWorld
Description copied from class:AbstractGridCoverage2DReaderRetrieves the original grid to world transformation for thisAbstractGridCoverage2DReader.- Specified by:
getOriginalGridToWorldin interfaceGridCoverage2DReader- Overrides:
getOriginalGridToWorldin classAbstractGridCoverage2DReader- Parameters:
coverageName- the name of the coverage to work withpixInCell- specifies the datum of the transformation we want.- Returns:
- the original grid to world transformation for this
AbstractGridCoverage2DReader.
-
getDynamicParameters
Description copied from class:AbstractGridCoverage2DReaderReturn the set of dynamic parameterDescriptors (the ones related to domains) for this reader. Default implementation returns an empty set of parameters- Specified by:
getDynamicParametersin interfaceGridCoverage2DReader- Overrides:
getDynamicParametersin classAbstractGridCoverage2DReader- Parameters:
coverageName- the name of the coverage to work with- Returns:
- the
Setof dynamic read parameters supported by thisGridCoverage2DReader.
-
getDatasetLayout
Description copied from interface:GridCoverage2DReaderReturns theDatasetLayoutfor the specified coverage.- Specified by:
getDatasetLayoutin interfaceGridCoverage2DReader- Overrides:
getDatasetLayoutin classAbstractGridCoverage2DReader- Parameters:
coverageName- the name of the coverage for which we do want to get theDatasetLayout- Returns:
- a
DatasetLayoutobject containing info about Overview number and Image masks.
-
getImageLayout
Description copied from interface:GridCoverage2DReaderRetrieve theImageLayoutfor the specified coverage.Throw an
IllegalArgumentExceptionin case the name is wrong and/or no such a coverage exists.- Specified by:
getImageLayoutin interfaceGridCoverage2DReader- Overrides:
getImageLayoutin classAbstractGridCoverage2DReader- Parameters:
coverageName- the name of the coverage for which we want to know theGridEnvelope.- Returns:
- an
ImageLayoutthat is useful for actually knowing theColorModel, theSampleModelas well as the tile grid for a certain coverage. - Throws:
IOException
-
getResolutionLevels
Description copied from interface:GridCoverage2DReaderRetrieve the resolution levels for the specified coverage.Throw an
IllegalArgumentExceptionin case the name is wrong and/or no such a coverage exists.- Specified by:
getResolutionLevelsin interfaceGridCoverage2DReader- Overrides:
getResolutionLevelsin classAbstractGridCoverage2DReader- 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
-
read
Description copied from interface:GridCoverage2DReaderRetrieves theGridEnvelopeassociated to the specified coverageName for thisGridCoverage2DReader.- Specified by:
readin interfaceGridCoverage2DReader- Specified by:
readin interfaceGridCoverageReader- Overrides:
readin classAbstractGridCoverage2DReader- Parameters:
coverageName- the name of the coverage to work withparams- an array ofGeneralParameterValuethat uses a subset of the available read params for thisGridCoverage2DReaderas specified by theFormat- Returns:
- a
GridCoverage2Dfor the underlying default coverage for thisGridCoverage2DReaderornullin case noGridCoverage2Dcan be read for the provided parameters. - Throws:
IOException- if a read operation failed for some other input/output reason, includingFileNotFoundExceptionif no file with the givennamecan be found, orIIOExceptionif an error was thrown by the underlying image library.
-
dispose
public void dispose()Description copied from class:AbstractGridCoverage2DReaderDisposes this reader.This method just tries to close the underlying
ImageInputStream.- Specified by:
disposein interfaceGridCoverageReader- Overrides:
disposein classAbstractGridCoverage2DReader- See Also:
-
getGridCoverageNames
Description copied from interface:GridCoverageReaderRetrieve 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:
getGridCoverageNamesin interfaceGridCoverageReader- Overrides:
getGridCoverageNamesin classAbstractGridCoverage2DReader- Returns:
- The list of grid coverages contained within the input source.
-
getGridCoverageCount
public int getGridCoverageCount()Description copied from interface:GridCoverageReaderRetrieve the number of coverages contained within the input source.- Specified by:
getGridCoverageCountin interfaceGridCoverageReader- Overrides:
getGridCoverageCountin classAbstractGridCoverage2DReader- Returns:
- the number of coverages for this reader.
- See Also:
-
getMetadataValue
Retrieve meta data value from requested coverage and for requested metadata- Specified by:
getMetadataValuein interfaceGridCoverageReader- Overrides:
getMetadataValuein classAbstractGridCoverage2DReadername- 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().
-
getMetadataValue
Retrieve data value for requested metadata- Specified by:
getMetadataValuein interfaceGridCoverageReader- Overrides:
getMetadataValuein classAbstractGridCoverage2DReader- 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:
-
getMetadataNames
Description copied from interface:GridCoverageReaderReturns 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:
getMetadataNamesin interfaceGridCoverageReader- Overrides:
getMetadataNamesin classAbstractGridCoverage2DReader- Returns:
- The list of metadata keywords for the input source.
-
getMetadataNames
Description copied from interface:GridCoverageReaderReturns 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:
getMetadataNamesin interfaceGridCoverageReader- Overrides:
getMetadataNamesin classAbstractGridCoverage2DReader- Returns:
- The list of metadata keywords for the input source.
- See Also:
-
getImageMosaicReaderForLevel
Retrieve the ImageMosaicReader for the requested Level and load if necessary- Returns:
- ImageMosaicReader for level
- Throws:
IOException
-
getImageMosaicReaderForLevel
public ImageMosaicReader getImageMosaicReaderForLevel(String coverageName, Integer imageChoice) throws IOException Retrieve the ImageMosaicReader for the requested Level and load if necessary- Returns:
- ImageMosaicReader for level
- Throws:
IOException
-