Added by jgarnett, last edited by Cory Horner on Jan 10, 2007  (view change)

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.

There are two system architecture patterns in use:

  • layers for data abstraction
  • plugins for extendability

Xavier has asked for an overview of the geotools models, a break down into layers.
This is a little bit hard, the architecture inside the main module is aranged into layers. The other modules hook into this architecture via a plugin mechanism.

To make matters a bit more exciting the data abstractions are defined by the OGC, and as often as possible we make use of GeoAPI in order to co-operate with other toolkits.

Geotools Main Layer Model

We literally mean module/main as compiled into gt2-main.jar.

Geotools does not do everything – to form the complete data stack we make use of other GIS projects (like JTS) where possible. We want to succeed – we don't want to implement everything.

Plugin Extension Model

Plugins only ever offer extensions based on the "implements" relationship.

How to use this table:

  • plugin/shapefile implements DataStoreFactory (an interface defined in the data layer)
  • plugin/epsg implements CRSAuthorityFactory
  • plugin/wfs implements DataStoreFactory (an interface defined in the data layer)
  • plugin/wfs implements XMLSchema (an interface defined by the xml layer)

Note: Main offers implements its own extentions, this is how default implementations are provided.

extends indicated data model
uses an out dated API, so needs updating before use
extends in a experimental or untested manner
Module renderer style grid data filter feature geometry crs parameter units xml
main    
Plugin renderer style grid data filter feature geometry CRS parameter units xml
arcgrid                    
arcsde                    
directory                    
epsg                    
geomedia                    
geometryless                    
geotiff                    
gml                    
gtopo30                    
image                    
mapinfo                    
shapefile                    
wms                    
wfs                  

Note: If plugins have dependencies between each other it is always "requires".

Q: So nobody implements geometry?
A: Correct we use the JTS Topology Suite (JTS) to capture Simple Feature for SQL Geometry
A2: GeoAPI has a set of Geometry Interfaces that we plan to migrate to for Geotools 2.2

Q: And what about units?
A: We use the javax units package, an implemention of ISO units.

Layered Data Abstraction Model

From Highest to Lowest (Detailed Model...)

Rendering   No formal extention point
Map   no comment
Layer   visualization of a single georeference
Style Model   No formal extention point
Style Geotools Captures SLD styling model
Rule Geotools Rule limits application based on Filter
Stylizer Geotools actual information for rendering a Geometry
Grid   Extentions provided by ...
GridCoverageExchange GeoAPI Based on new CoordinateReferenceSystem model
GridCoverage GeoAPI An actual Raster
Data   Extentions provided by DataStoreFactory
Repository Geotools Collection of known services
DataStore Geotools A provider of Geographic information
FeatureSource Geotools High-level data access for a single GeoResource
FeatureSource Geotools GeoResource read/write access
FeatureLocking Geotools GeoResource long term locking support
FeatureReader Geotools Low-level read only representation of stream of features
FeatureWriting Geotools stream based modification, and creation of features
Filter Model   Extented via FilterFactory, geoapi has one too
Filter Geotools Yes/No based on filter accepting a Feature
Expression Geotools Evaluation syntax built on FeatureType
Feature Model   Extentions provided by FeatureFactory
Feature Geotools Feature supportes nested attributes & xpath access
FeatureType Geotools Schema for feature
AttributeType Geotools Represent simple types, nested types or POJO
GeometryAttributeType Geotools Schema info for Geometry w/ CRS
Geometry Model   No extentions, model split between Geotools & JTS
GeometryAttributeType Geotools Schema info for Geometry w/ CRS
Geometry JTS Implements Simple Feature For SQL based Geometry classes
CRS Model (Pending)   ISO based CoordinateReferenceSystem model
CoordinateReferenceSystem GeoAPI ISO interfaces (shared with Degree)
CoordinateReferenceSystem Geotools .. with implementations
Units JSR? ISO based units
ParameterGroup GeoAPI Based on an ISO origional
ParameterValue GeoAPI Based on an ISO origional

GeoAPI is working on additional shared interfaces - many of which duplicate the classes above. See the [GEOTOOLS:Roadmap] for our schedule of evaulation and possible adoption.