|
There are two system architecture patterns in use:
|
Xavier has asked for an overview of the geotools models, a break down into layers. |
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:
Note: Main offers implements its own extentions, this is how default implementations are provided. |
|
| 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.