temporal filters - STEMLab/geotools GitHub Wiki
-
Motivation: Temporal filter support based on FES 2.0 spec
-
Contact: Justin Deoliveira
-
Tagline: Temporal filter support based on FES 2.0 spec
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
This section is used to make sure your proposal is complete (did you remember documentation?) and has enough paid or volunteer time lined up to be a success
- :white_check_mark: Roll gt-temporal into gt-main
- :white_check_mark: Add temporal filter interfaces to gt-opengis
- :white_check_mark: Implement filter interfaces in gt-main
- :white_check_mark: 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:
FilterVisitor {
...
}
AFTER:
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