Interface Filter<R>

Type Parameters:
R - the type of resources (e.g. Feature) to filter.
All Superinterfaces:
Predicate<R>
All Known Subinterfaces:
BetweenComparisonOperator<R>, BinaryComparisonOperator<R>, BinarySpatialOperator<R>, ComparisonOperator<R>, DistanceOperator<R>, LikeOperator<R>, LogicalOperator<R>, NilOperator<R>, NullOperator<R>, ResourceId<R>, SpatialOperator<R>, TemporalOperator<R>

@Classifier(ABSTRACT) @UML(identifier="Filter", specification=ISO_19143) public interface Filter<R> extends Predicate<R>
Identification of a subset of resources from a collection of resources whose property values satisfy a set of logically connected predicates. Often a filter is used to define a set of Feature instances that are to be operated upon. The operating set can be comprised of one or more enumerated features or a set of features defined by specifying spatial and non-spatial constraints on the geometric and scalar properties of a FeatureType.

Roughly speaking, a filter encodes the information present in the WHERE clause of a SQL statement. There are various sub-interfaces of this interface that represent many types of filters, such as simple property comparisons or spatial queries.

The second use of Filter focuses on expressing constraints (or Facets). This use places restrictions on the allowable and is captured as part of schema information FeatureType. This is similar to the XML concept of "facets".

Parameter types

Filters are typically used for filtering feature instances. In such case, the <R> type parameter should be Feature. However it is legal to use filters for other kinds of resources, for example coverage's geometry-value pairs. The latter are sometime considered as a kind of features.

The value of <? super R> can be obtained at runtime by a call to getResourceClass().

Since:
3.1
Convenience extension to OGC/ISO standard In ISO specification, Filter contains a "filter" property of type Operator. Then various Operator subclasses are provided such as SpatialOperator, etc. GeoAPI removes this indirection level and extends Filter directly instead.