Motivation: | Temporal filter support based on FES 2.0 spec | ||
|---|---|---|---|
Contact: | |||
Tracker: | http://jira.codehaus.org/browse/GEOT-2367 | ||
Tagline: |
|
| Section | |||||||||
|---|---|---|---|---|---|---|---|---|---|
|
Description
The new version of the filter encoding specification (FES 2.0) adds 14 filter operators for temporal filters. Operations take a mix of two types of operands:
- A single instance in time (TM_Instant)
- A time range or period (TM_Period)
The following table outlines the semantics of the new operators:
Operation | t1,t2 | t1[],t2 | t1,t2[] | t1[],t2[] |
|---|---|---|---|---|
After | t1 > t2 | t1.start > t2 | t1 > t2.end | t1.start > t2.end |
Before | t1 < t2 | t1.end < t2 | t1 < t2.start | t1.end < t2.start |
Begins |
|
| t1 = t2.start | t1.start = t2.start and t1.end < t2.end |
BegunBy |
| t1.start = t2 |
| t1.start = t2.start and t1.end > t2.end |
TContains |
| t1.start < t2 < t1.end |
| t1.start < t2.start and t2.end < t1.end |
During |
|
| t2.start < t1 < t2.end | t1.start > t2.start and t1.end < t2.end |
EndedBy |
| t1.end = t2 |
| t1.start < t2.start and t1.end = t2.end |
Ends |
|
| t1 = t2.end | t1.start > t2.start and t1.end = t2.end |
TEquals | t1 = t2 |
|
| t1.start = t2.start and t1.end = t2.end |
Meets |
|
|
| t1.end = t2.start |
MetBy |
|
|
| t1.start = t2.end |
TOverlaps |
|
|
| t1.start < t2.start and t1.end > t2.start and t1.end < t2.end |
OverlappedBy |
|
|
| t1.start > t2.start and t1.start < t2.end and t1.end > t2.end |
AnyInteracts |
|
|
|
|
The gt-temporal module contains classes that implement many of the parts of .... They are used as the basis of implementing above operators.
Status
This proposal is completed.
- Andrea Aime +1
- Ben Caradoc-Davies +0
- Christian Mueller +1
- Ian Turton +0
- Justin Deoliveira +1
- Jody Garnett +1
- Simone Giannecchini +0
Tasks
| no progress | | done | | impeded | | lack mandate/funds/time | | volunteer needed |
|---|
Roll gt-temporal into gt-main
Add temporal filter interfaces to gt-opengis
Implement filter interfaces in gt-main
Update FilterVisitor implementations- Update wiki module matrix
- Add to the upgrade to 8.0 instructions
- jg: Update the user guide sphinx docs and java examples
Roll gt-temporal into gt-main
Currently the gt-temporal module sits standalone and is not used by any existing module. To prevent the proliferation of another core module the classes from gt-temporal will be rolled into gt-main.
Add temporal filter interfaces to gt-opengis
The existing filter model interfaces are defined in gt-opengis. Following suite the new filter interfaces will be defined alongside. This involves the core set of interfaces and updates to FilterFactory, FilterVisitor, and FilterCapabilities.
Implement filter interfaces in gt-main
To compliment the new interfaces. The filter operations will utilize gt-temporal classes... most notably TemporalOrder.relativePosition() which is used to compute the relatioships described above between two temporal objects.
Update FilterVisitor implementations
There are a number of filter visitor implementations that require update with the new methods. In some cases where temporal constructs are not supported directly or do not apply to the visitor the new methods will simply throw UnsupportdOperationException.
API Changes
FilterVisitor
BEFORE:
| Code Block |
|---|
FilterVisitor {
...
}
|
AFTER:
| Code Block |
|---|
FilterVisitor {
visit(After)
visit(Before)
...
}
|
The only breaking change will be the FilterVisitor implementations. All other api changes are additions.
Documentation Changes
- Add to the upgrade to 8.0 instructions
- gt-opengis filter api update with a section for temporal filters
- gt-main filter examples update with temporal examples
- gt-main will need a new page for the utility classes from gt-temporal