GeoTools : Replacing the OLD GCE interfaces


The Grid Coverage Exchange specification is dead; we need a replacement along the lines of DataStore


Simone Giannecchini, Jody Garnett



GCE is dead, lets move on

This page describes the work that is being carried out in order to replace the actual GCE API with a new one. For the moment it just tries to capture what people are doing as well as the various opinions and feedback.


This proposal:

  • introduces new interface in a manner consistent with Data Access Design Goals
  • where possible abstractions and method names are taken from various OGC-ISO specifications, namely:
    • WCS 1.1.1
    • ISO 19123
    • ISO 19111
    • ISO 19108
    • ISO 19103


This proposal is under construction; please help put it together. You may find the previous proposal Dry Run at DataAccess Story informative, as well as this email thread. Anyway, the API as well as some helper can be found under the spike directory of GeoTools trunk.

Voting has not started yet:


This section is used to make sure your proposal is complete (did you remember documentation?) and has enough paid or volunteer time lined up to be a success


no progress






lack mandate/funds/time


volunteer needed

  1. Define interface based from the WCS specification
  2. Produce initial prototype for world + image
  3. Roll out the above prototype for a round of community feedback and review
  4. Port the existing coverage formats one by one, either:
    • as a wrapper around existing GridCoverageReaders / GridCoverageWriter implementations
    • or direct implementation of CoverageStore / CoverageSource and CoverageStore


 A UML diagram capturing the actual version of the API can be found here below:


Relevant classes are:

  1. Class/Interface



    A driver adding the ability to work with a coverage format or service.
    Classes implementing this interface basically act as factory for creating connections to coverage sources like files, WCS services, WMS services,  databases, etc...
    This class also offers basic create / delete functionality (which can be  useful for file based coverage formats).
    Purpose of this class is to provide basic information about a certain coverage service/format as well as about the parameters needed in order to connect to a source which such a service/format is able to work against.
    Notice that as part as the roll of a "factory" interface this class makes available an isAvailable() method which should check if all the needed dependencies which can be jars as well as native libs or configuration files.


    Represents a Physical storage of coverage data (that we have a connection to).
    Please note that this service may be remote (or otherwise slow). You are doing IO here and should treat this class with respect - please do not access these methods from a display thread.


    Allows read-only access to a Coverage


    Provides read-write access to a coverage data product


    Describes the capabilities of this CoverageSource


    Captures the base elements of a request for a coverage source subclass.
    The request can be a request for reading data, a request for writing data, etc.
    Notice that using additional parameters and Hints a user can customize the request behavior and meaning.


    Captures element of a request to read data from an underlying coverage.


    Captures the status of the response to a coverage request.


    Defines the fields (categories, measures, or values) in the range records available for each location in the coverage domain.


We still need to cope with some topics:

  • How to/Where to handle Ground Control Points and management of unrectified coverage
  • Support for a tree of coverage with real and fake nodes to better suit WCS 1.1.2
  • Harmonize with range with Record/RecordType from ISO 19103 and also look at the SimpleFeatureType work in geotools
  • Statistics information management
  • Overviews management
  • Metadata management should be improved. Actually it has been copied from old GCE API.

See TBD comments on CoverageSource javadoc.

Javadocs are available at as anonymous user, under /incoming/javadoc/

UML Diagrams 

Here below, more detailed UML class diagrams with available methods:

Out of scope

The following extentions are possible:

  • GridServiceInfo - we will wait for experience to dictate what extra information is useful
  • GridResourceInfo - we will wait for experience to dictate what extra information is useful

Documentation Changes

list the pages effected by this proposal


coverage-api.PNG (image/png)
details.PNG (image/png)
requests.PNG (image/png)
range-type.PNG (image/png)
requests.PNG (image/png)
requests.PNG (image/png)
details.PNG (image/png)
requests.PNG (image/png)