wfs gml datastore - STEMLab/geotools GitHub Wiki
WFS DataStore Design
- Prepared by: David Zwiers, Refractions Research
Introduction
For the upcoming uDig project we intend to create a WFS DataStore following the GeoTools DataStore API. This document outlines an overview of the design for the proposed DataStore, as well as documenting the effects this will have on other GeoTools modules.
Module Overview
Currently GML is parsed using the GMLDataSource. It is my understanding that this is to be phased out. As such I intend to create a new module with a set of GML parsers, GML Writers, a GMLDataStore and a WFSDataStore. An overview of the module interactions can be seen in the following diagram:\
As can be seen in the preceding diagram, the GMLDataStore and WFSDataStore both use the GML parsers and writers. We can also see that there is not a functional dependence between the parsers and writers, or the GMLDataStore and the WFSDataStore.
Schedule
GMLDataStore for Milestone 1 / Geotools 2.0 rc1
WFSDataStore for Milestone 2 / Geotools 2.1 branch
GML Parser
For the use of GML Datastore and WFS Datastore our parser is required to handle the following:
- Feature
- Geometry
- Filter
To further handle the needs of a WFS DataStore our parser will be extended to handle:
- FeatureType
Our parser can be extended with additional GML 2.1 constructs as required.
Other non-functional development goals for this module include:
- Scaleable
- Streamable
Parser Class Diagram
At this time we envision the GMLParser module to resemble the class structure depicted in the following Figure.
GML Writer
Although a complete GML Writer is not required, our parser should as a minimum print the following GML 2.1 constructs:
- Feature
- Geometry
- Filter
The GeoServer project will require this library provide:
- FeatureType
Other non-functional development goals for this module include:
- Scaleable
- Streamable
Writer Class Diagram
At this time we envision the GMLWriter module to resemble the class structure depicted in the following Figure.
GMLDataStore
The GMLDataStore is intended to provide access to GML parser/writer in a convenient way. For the most part, the GMLDataStore will be a wrapper for the GML parsers and writers. The GMLDataStore is intended to be OGC GML 2.1 compliant.
GMLDataStore functional requirements:
- GML 2.1 Compliant
- Reads/Writes from a URL
- Parses/Writes results made available via GMLFeatureReader/GMLFeatureWriter
GMLDataStore Class Diagram
At this time we envision the GMLDataStore module to resemble the class structure depicted in the following Figure.
WFSDataStore
The WFSDataStore is a new module indented to communicate with OGC compliant WFS servers. This module
will make extensive use of the GML parsers, and will implement the DataSource API.
WFSDataStore functional requirements:
- WFS 1.0.0, GML 2.1 Compliant
- Reads and Writes to a WFS
- Parses and Writes WFS Requests
- GetCapabilities
- DescribeFeatureType
- GetFeature
- LockFeature
- Transaction
WFSDataStore non-functional requirements
- Scaleable
- Streamable
- Self-initializing
WFSDataStore Class Diagram
At this time we envision the WFSDataStore module to resemble the class structure depicted in the following Figure.