org.opengis.filter.Filter类的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(10.2k)|赞(0)|评价(0)|浏览(242)

本文整理了Java中org.opengis.filter.Filter类的一些代码示例,展示了Filter类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Filter类的具体详情如下:
包路径:org.opengis.filter.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);
}

相关文章

微信公众号

最新文章

更多