GeoTools : Complex Feature Roadmap 08

The Complex Feature plan updated to reflect the state of affairs as of 2008.

Milestone 1: Simple Schema Mapping

This first chunk of work involves introducing the concept of schema mapping into GeoServer. Essentially allowing for the following use case:

  1. User uploads an application schema
  2. User configures a feature and points it to the application schema
  3. User provides mappings from feature type attributes to application schema elements
  4. All GML output conforms to the application schema

It is important to note that this round of work only involves simple and flat data. No complex attributes, multiplicity, or associations/joins are supported.


GML Encoding
  • modifications to binding for AbstractFeatureType to do feature type to application schema transformation

Alternative: use a retyping FeatureReader to morph the feature type before it enters the encoding pipeline

  • storing application schemas and mappings in configuration
User Interface
  • page for uploading and managing application schemas
  • additions to feature type editor for attribute mapping

Milestone 2: GeoServer Data Access

The next chunk of works involves abstracting how GeoServer accesses features. The current plan of how to do this is though use of the DataAccess which is now a super interface of DataStore.


DataStore/SimpleFeature to DataAccess/Feature
  • Change references to DataStore interface to DataAccess
  • Change references to SimpleFeature to Feature
  • Add instance checks to code that requires DataStore/SimpleFeature (ie simple data), throwing
    Exception when non-simple data is provided
Abstract Feature Access
  • Any output formats which can support complex content such as GML, GeoJSON need to be updated to access features through the Feature interface, and be able to follow relationships to other features, etc...

Milestone 3: Complex Data Store

The final step is to produce a data store capable of serving complex content. This involves representing associations, performing joins, etc...


Hibernate DataStore
  • A datastore backed directly onto hibernate
  • Custom feature implementation capable of lazy loading, etc...