-
Notifications
You must be signed in to change notification settings - Fork 1
GSIP 128
Nicola Lagomarsini, Daniele Romagnoli
This proposal is for GeoServer 2.8-beta.
- Under Discussion
- In Progress
- Completed
- Rejected
- Deferred
JAI-EXT is a new project developed by GeoSolutions team of a new Java API for high performance image processing. Our aim is to totally replace all the JAI[1] operations with the new JAI-EXT[2] ones. The most important feature introduced by JAI-EXT is support for ROI and NoData, which are key points of the GeoSpatial raster data processing.
This proposal has been written as the GeoServer counterpart of the GeoTools related proposal[1]. Below the main changes to the GeoServer code which will be done with this proposal will be described.
The JAIInfo class, which contains all the JAI related settings, will be modified in order to accept a new JAIEXTInfo object, containing the JAI-EXT related settings.
/**
* JAI-EXT section
*/
JAIEXTInfo getJAIEXTInfo();
void setJAIEXTInfo(JAIEXTInfo jaiext);
Also JAIEXTInfo will be a new Interface
public interface JAIEXTInfo extends Serializable, Cloneable {
Set<String> getJAIOperations();
void setJAIOperations(Set<String> operations);
Set<String> getJAIEXTOperations();
void setJAIEXTOperations(Set<String> operations);
Since new JAI-EXT operations are present, JAIInitializer class must be able to handle which JAI-EXT operations must be registered based on the definitions stored in the JAIEXTInfo class. Those definitions will be depersisted from the global.xml file in the GEOSERVER_DATA_DIRECTORY.
A new panel will be added to the JAI Page. This panel will allow users to choose if an operation must be done using JAI or JAI-EXT.
The removal of the OperationDescriptors is needed since it allows to quickly switch between JAI and JAI-EXT operations without any registration issue.
BEFORE:
RenderedOp cropped = GTCropDescriptor
.create(metaTileImage, Float.valueOf(x), Float.valueOf(y),
Float.valueOf(tileWidth), Float.valueOf(tileHeight), NO_CACHE);
AFTER:
ImageWorker w = new ImageWorker(metaTileImage);
w.crop(Float.valueOf(x), Float.valueOf(y), Float.valueOf(tileWidth), Float.valueOf(tileHeight));
RenderedOp cropped = w.getRenderedOperation();
The only backward incompatibility present is the JAIInfo interface change which is reflected in the related global.xml file. Any attempt to parse this new version of the XML file will result in an exception.
Project Steering Committee:
- Alessio Fabiani
- Andrea Aime
- Ben Caradoc-Davies
- Christian Mueller
- Gabriel Roldán
- Jody Garnett
- Jukka Rahkonen
- Justin Deoliveira
- Phil Scadden
- Simone Giannecchini
©2020 Open Source Geospatial Foundation