本文整理了Java中org.opengis.filter.Filter
类的一些代码示例,展示了Filter
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Filter
类的具体详情如下:
包路径:org.opengis.filter.Filter
类名称:Filter
[英]Defines a constraint that can be checked against an instance of an object (Usually a Feature). Often a filter is used to to define a set 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 feature type.
Roughly speaking, a filter encodes the information present in the WHERE clause of a SQL statement. There are various subclasses of this class that implement 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 (@linkplain FeatureType). This is similar to the XML concept of "facets".
[中]
代码示例来源:origin: geoserver/geoserver
Filter filter = query.getFilter() != null ? query.getFilter() : Filter.INCLUDE;
Filter defaultedFilter = (Filter) filter.accept(defaultCRSVisitor, null);
Filter reprojectedFilter = (Filter) defaultedFilter.accept(reprojectingVisitor, null);
Query reprojectedQuery = new Query(query);
reprojectedQuery.setFilter(reprojectedFilter);
return reprojectedQuery;
代码示例来源:origin: geoserver/geoserver
private <T> Predicate<T> toPredicate(Filter filter) {
if (filter != null && filter != Filter.INCLUDE) {
return o -> filter.evaluate(o);
} else {
return CatalogInfoLookup.TRUE;
}
}
代码示例来源:origin: geotools/geotools
Filter filter = query.getFilter();
while (it.hasNext()) {
SimpleFeature feature = it.next();
if (filter.evaluate(feature)) {
count++;
count--;
} else {
modifiedFids.add(ff.featureId(feature.getID()));
if (filter.evaluate(feature)) {
modifiedPostCount++;
Id idFilter = ff.id(modifiedFids);
Query q = new Query(query);
q.setFilter(ff.and(idFilter, query.getFilter()));
int modifiedPreCount = getCountInternal(q);
if (modifiedPreCount == -1) {
代码示例来源:origin: geotools/geotools
private <T> void testOrOverlappingRanges(Class<T> type, T min, T max) throws Exception {
SimpleFeatureType schema = DataUtilities.createType("test", "a:" + type.getName());
SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor();
visitor.setRangeSimplicationEnabled(true);
visitor.setFeatureType(schema);
// excluding extrema, not possible to turn it into a between filter
Filter original =
ff.or(
Arrays.asList( //
(Filter) ff.greater(ff.property("a"), ff.literal(min)), //
ff.greater(ff.property("a"), ff.literal(max))));
Filter simplified = (Filter) original.accept(visitor, null);
assertEquals(ff.greater(ff.property("a"), ff.literal(min)), simplified);
}
代码示例来源:origin: geotools/geotools
(FeatureSource<FeatureType, Feature>) layer.getFeatureSource();
FeatureType schema = source.getSchema();
Query query = new Query(Query.ALL);
Filter filter = null;
query = new Query(schema.getName().getLocalPart());
query.setFilter(filter);
query.setProperties(attributes);
processRuleForQuery(styleList, query);
SimplifyingFilterVisitor simplifier = new SimplifyingFilterVisitor();
simplifier.setFeatureType(source.getSchema());
Filter simplifiedFilter = (Filter) query.getFilter().accept(simplifier, null);
query.setFilter(simplifiedFilter);
代码示例来源:origin: geotools/geotools
private <T> void testAndDisjointRanges(Class<T> type, T max, T min) throws Exception {
SimpleFeatureType schema = DataUtilities.createType("test", "a:" + type.getName());
SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor();
visitor.setRangeSimplicationEnabled(true);
Filter original =
ff.and(
ff.greater(ff.property("a"), ff.literal(max)),
ff.less(ff.property("a"), ff.literal(min)));
Filter simplified = (Filter) original.accept(visitor, null);
assertEquals(original, simplified);
visitor.setFeatureType(schema);
Filter simplified2 = (Filter) original.accept(visitor, null);
assertEquals(Filter.EXCLUDE, simplified2);
}
代码示例来源:origin: geotools/geotools
public void testDoubleNegation() {
PropertyIsEqualTo equal = ff.equals(ff.property("prop"), ff.literal(10));
Filter f = ff.not(ff.not(equal));
Filter result = (Filter) f.accept(simpleVisitor, null);
assertEquals(equal, result);
}
代码示例来源:origin: geotools/geotools
public Object visit(Not filter, Object data) {
Filter child = filter.getFilter();
if (child != null) {
data = child.accept(this, data);
}
return data;
}
代码示例来源:origin: geotools/geotools
@Test
public void testAndDisjoint() {
Coordinate[] coords = new Coordinate[] {new Coordinate(0, 0), new Coordinate(10, 10)};
LineString lineString = new GeometryFactory().createLineString(coords);
Filter filter = ff.disjoint(ff.property("name"), ff.literal(lineString));
filter = ff.and(filter, ff.bbox(ff.property("geom"), 50, 50, 150, 150, null));
Envelope env = (Envelope) filter.accept(visitor, null);
assertEquals(new Envelope(50, 150, 50, 150), env);
}
代码示例来源:origin: geotools/geotools
(Envelope)
renderingQuery
.getFilter()
.accept(ExtractBoundsFilterVisitor.BOUNDS_VISITOR, null);
Filter bbox = new FastBBOX(filterFactory.property(""), bounds, filterFactory);
optimizedQuery = new Query(null, bbox);
optimizedQuery.setHints(layerQuery.getHints());
代码示例来源:origin: geotools/geotools
@Test
public void testBeyond() {
Coordinate[] coords = new Coordinate[] {new Coordinate(0, 0), new Coordinate(10, 10)};
LineString lineString = new GeometryFactory().createLineString(coords);
Filter filter = ff.beyond(ff.property("name"), ff.literal(lineString), 100, "m");
Envelope env = (Envelope) filter.accept(visitor, null);
assertEquals(infinity, env);
}
代码示例来源:origin: geotools/geotools
final MosaicProducer dryRunVisitor = new MosaicProducer(true, collectors);
final Utils.BBOXFilterExtractor bboxExtractor = new Utils.BBOXFilterExtractor();
query.getFilter().accept(bboxExtractor, null);
query.setFilter(
FeatureUtilities.DEFAULT_FILTER_FACTORY.bbox(
FeatureUtilities.DEFAULT_FILTER_FACTORY.property(
rasterManager
.getGranuleCatalog()
.getName()),
bboxExtractor.getBBox()));
query.setMaxFeatures(1);
rasterManager.getGranuleDescriptors(query, dryRunVisitor);
if (dryRunVisitor.granulesNumber > 0) {
代码示例来源:origin: geotools/geotools
return null;
} else {
Query q = new Query(targetQuery);
if (q.getPropertyNames() != null) {
String[] names = Arrays.copyOf(q.getPropertyNames(), q.getPropertyNames().length);
for (int i = 0; i < names.length; i++) {
if (names[i].equals(target)) {
(Filter)
q.getFilter()
.accept(
new DuplicatingFilterVisitor() {
@Override
代码示例来源:origin: geotools/geotools
public void testNegateLessOrEqual() {
Filter f = ff.not(ff.lessOrEqual(ff.property("prop"), ff.literal(10)));
Filter result = (Filter) f.accept(simpleVisitor, null);
assertEquals(ff.greater(ff.property("prop"), ff.literal(10)), result);
// not simplified for complex features
result = (Filter) f.accept(complexVisitor, null);
assertEquals(f, result);
}
代码示例来源:origin: geotools/geotools
public Object visit(Not filter, Object extraData) {
FilterFactory2 ff = getFactory(extraData);
Filter inner = filter.getFilter();
if (inner instanceof Not) {
return innerNot.getFilter().accept(this, extraData);
} else if (inner instanceof And) {
List<Filter> negatedChildren = new ArrayList<>();
for (Filter child : children) {
negatedChildren.add((Filter) ff.not(child).accept(this, extraData));
return ff.or(negatedChildren);
} else if (inner instanceof Or) {
List<Filter> negatedChildren = new ArrayList<>();
for (Filter child : children) {
negatedChildren.add((Filter) ff.not(child).accept(this, extraData));
return ff.and(negatedChildren);
} else if (isSimpleFeature()) {
Filter simplified = (Filter) inner.accept(this, extraData);
if (simplified == Filter.INCLUDE) {
return Filter.EXCLUDE;
代码示例来源:origin: geotools/geotools
private <T> void testAndOverlappingRangesToBetween(Class<T> type, T min, T mid, T max)
throws Exception {
SimpleFeatureType schema = DataUtilities.createType("test", "a:" + type.getName());
SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor();
visitor.setRangeSimplicationEnabled(true);
visitor.setFeatureType(schema);
// excluding extrema, not possible to turn it into a between filter
Filter original =
ff.and(
Arrays.asList( //
(Filter) ff.greaterOrEqual(ff.property("a"), ff.literal(min)), //
ff.less(ff.property("a"), ff.literal(max)), //
ff.lessOrEqual(ff.property("a"), ff.literal(mid))));
Filter simplified = (Filter) original.accept(visitor, null);
assertEquals(ff.between(ff.property("a"), ff.literal(min), ff.literal(mid)), simplified);
}
代码示例来源:origin: geotools/geotools
public void testRangeExpression() throws Exception {
SimpleFeatureType schema = DataUtilities.createType("test", "pop:String");
SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor();
visitor.setRangeSimplicationEnabled(true);
visitor.setFeatureType(schema);
Function func = ff.function("parseLong", ff.property("pop"));
Filter f1 = ff.less(func, ff.literal(20000));
Filter f2 = ff.between(func, ff.literal(20000), ff.literal(50000));
Filter or = ff.or(f1, f2);
Filter simplified = (Filter) or.accept(visitor, null);
assertEquals(ff.lessOrEqual(func, ff.literal(50000)), simplified);
}
代码示例来源:origin: geotools/geotools
public void testNegateGreaterOrEqual() {
Filter f = ff.not(ff.greaterOrEqual(ff.property("prop"), ff.literal(10)));
Filter result = (Filter) f.accept(simpleVisitor, null);
assertEquals(ff.less(ff.property("prop"), ff.literal(10)), result);
// not simplified for complex features
result = (Filter) f.accept(complexVisitor, null);
assertEquals(f, result);
}
代码示例来源:origin: geotools/geotools
private Filter buildCombinedFilter(List<String> ids) {
// Ids in filter:
Filter idsIn = IndexQueryUtils.buildIdInExpression(ids, mapping);
// build new and/or operator
IndexCombinedFilterTransformerVisitor visitor =
new IndexCombinedFilterTransformerVisitor(
indexedParentLogicOperator, indexedFilters, idsIn);
Filter resultFilter = (Filter) query.getFilter().accept(visitor, ff);
return resultFilter;
}
}
代码示例来源:origin: geotools/geotools
private <T> void testAndTouchingRanges(Class<T> type, T value) throws Exception {
SimpleFeatureType schema = DataUtilities.createType("test", "a:" + type.getName());
SimplifyingFilterVisitor visitor = new SimplifyingFilterVisitor();
visitor.setRangeSimplicationEnabled(true);
visitor.setFeatureType(schema);
Filter original =
ff.and(
ff.greaterOrEqual(ff.property("a"), ff.literal(value)),
ff.lessOrEqual(ff.property("a"), ff.literal(value)));
Filter simplified = (Filter) original.accept(visitor, null);
assertEquals(ff.equal(ff.property("a"), ff.literal(value), false), simplified);
}
内容来源于网络,如有侵权,请联系作者删除!