This is a proposal for a Google Summer of Code (GSoC) project. The Apache SIS library needs a module for efficient handling of large n-dimensional remote sensing data. The module shall:
- Provide a common approach to the reading and writing of grid coverages applicable to simple imagery as to multi-dimensional data structures.
- Allow operations that preserve the scientific meaning of data (e.g. distinguish between measurements and missing values, why the value is missing, estimation of accuracy).
- Be compliant with international standards, in particular (but not only) Schema for coverage geometry and functions (ISO 19123) and Web Coverage Services (WCS). The module should provide extensions to those standards only for aspects that are not covered by an existing standard.
This module will be a redesign of coverage module that existed in previous projects. In particular, the coverage module of the Geotk project will be used as a starting point. However an important focus of this project is to fix known limitations of previous projects, for example:
- Too strong reliance on javax.imageio API, which was designed for two-dimensional images. That API is difficult to generalize to three- or four-dimensional data accesses.
- Too strong reliance on javax.imageio.metadata API, which is basically a XML document. Ordinary Java objects are more convenient to use and the ISO 19115 international standard can be a good model for those objects.
- Too strong restriction on the grid geometry (in previous projects, the conversion from pixel coordinates to "real world" coordinates is restricted to an affine transform).
- Only quadrilateral grid coverages were supported.
The development language is Java. Operating system can be Linux, Windows or MacOS. The build tool is Maven. If a web application is created (see next section), the container would be Tomcat.
In order to ensure that the module is on the right track, a small application (either a desktop application for browsing images or a simple web application conforms to the WCS standard) will be created. This simple application will be created in collaboration with volunteers of space agency in Vietnam, Vietnam National Satellite Center (VNSC), for managing its geospatial database. The application should be able to:
- Read at least two image formats of that space agency (the API shall allow addition of more formats in the future).
- Allow diffusion of those data in time range, sub-area, sub-sampling and layers selected by the user.
- Allow searches in some metadata fields (to be selected according the needs of the space agency).
This GSoC project is not expected to create a fully functional coverage module in 3 months. Performance is not a concern for this initial stage (in particular, building index or storing information in a database is out of scope), except that the application shall not load all data in memory: the application should prove that it can work with only a small fraction of the data in memory and load the remaining parts when needed. For the prototype application, those data will be read from a specified directory (a more advanced application could a database or cloud).