Gold Star Quality Assurance Check:
The Image I/O-Ext project
The Image I/O-Ext project leverages existing native APIs to extend the set of formats that the JAI ImageIO API can read. At the moment, the project is building on top of GDAL java bindings and ImageMagick java bindings, and hopefully the list will grow in the future. The project is compatible with GeoTools both from the license point of view (LGPL) and the API point of view, since most of the current coverage readers are leveraging ImageIO already.
At the moment Image I/O-Ext does not support all the formats GDAL provides, but adding a new format is usually a matter of few hours of work (for a complete list see of the currently supported formats see https://imageio-ext.dev.java.net/index.html#Supported_Formats).
Actual version of Image I/O-Ext is 1.0.6-18.
Libraries and native bindings
- A set of ready-to-use distribution files containing requested DLLs/SOs are available in the ImageI/O-ext Document & Files download Ext Download page . (Read available notes and download the proper distribution).
- Step-by-step instructions provided in the ImageI/O-Ext setup guide, available either as an OpenOffice document or as a PDF document. This option suits people that have the build tools ready, are proficient with them, and need custom builds for some reasons (for example, license ones, the Kakadu JPEG 2000 readers are not open source so they cannot be redistributed along with Image I/O Ext).
Note that, due to the licensing issues introduced before, the GDAL Libraries available in the distribution section doesn't contain JP2KAK library. See ImageIO-EXT Setup Guide, sections GDAL Requirements and GDAL Configurations for further information on enabling Kakadu support on GDAL.
The proposed module is composed of a main abstract BaseGridCoverage2DReader (extending AbstractGridCoverage2DReader) which allows to read coverages by leveraging on proper coverage requestes (represented by instances of RasterLayerRequest class) computed returning coverage responses (represented by instances of RasterLayerResponse class). [see the related javadoc for further details: GT ImageI/O-Ext-GDAL Javadoc]. BaseGridCoverage2DReader is extended by BaseGDALGridCoverage2DReader which leverages on the core of the ImageI/O-EXT Ext project: the gdalframework module. Since, the hard work of data access and management is performed by the GdalFramework, the Geotools reader simply needs to query it to obtain all the needed information (such as CRS, Envelope, raster properties) and delegate the read to the ImageI/O-Ext.
Here are a couple of class diagrams showing how ImageIO-Ext GDAL framework is set up (see the related javadoc for further details: ImageI/O-Ext Javadoc)
... and how the MrSid plugin is using it.