Coordinate reference system handlingFilters and expressions may contain heterogeneous coordinate reference systems. Apache SIS tries to handle differences in the following way:
- If at least one geometry does not has a CRS, then SIS assumes that the geometries are in the same space.
- If all geometries are in the same CRS, no coordinate operation is applied.
- If geometries have non-null but different CRS, then SIS tries to project the geometries in a common space:
In expressions like
ST_Intersects(A,B) where the A and B parameters are two
sub-expressions evaluating to geometry values, if one of those expressions is a literal, then that literal
should be B. The reason is because SQLMM specification requires us to project B
in the Coordinate Reference System of A. If B is a literal, Apache SIS can do
this transformation only once before to start any evaluation instead of every time that the expression
needs to be evaluated.
Data store implementations should apply
Optimization on the filters
before to evaluate them.
Thread-safetyAll filter and expression implementations provided by Apache SIS are thread-safe. They are not necessarily stateless however; for example a filter may remember which warnings have been reported in order to avoid to report the same warning twice.
G, T>A filter factory operating on
V>A literal or a named procedure that performs a distinct computation.Filter<R>Identification of a subset of resources from a collection of resources whose property values satisfy a set of logically connected predicates.Description of optimizations or simplifications to attempt on filters and expressions.Expression that can be optimized.Filter that can be optimized.