首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多重过滤器的Geotools wfs插件

使用多重过滤器的Geotools wfs插件
EN

Stack Overflow用户
提问于 2014-01-17 11:19:57
回答 1查看 694关注 0票数 1

我正在使用Geotool来开发wfs应用程序,我使用比较过滤器对象进行wfs特性属性筛选。例如,Shape_Area >0或CITY =“安卡拉”查询工作良好,但如果我定义了另一个过滤器问题,则会出现问题。

代码语言:javascript
复制
System.out.println("type name:"+data.getTypeNames()[3]);
features = data.getFeatureSource(data.getTypeNames()[3]);
//count features
col = features.getFeatures();
System.out.println("# All feature's count= "+col.size());
//create the filter
filter = filterFactory.createCompareFilter(CompareFilter.COMPARE_GREATER_THAN);
FeatureType featureType = features.getFeatures().getSchema();
filter.addLeftValue(filterFactory.createAttributeExpression("Shape_Area"));
filter.addRightValue(filterFactory.createLiteralExpression(100000));
//count filtered features
col = features.getFeatures(filter);
System.out.println("# Filtered results "+col.size());

另一个过滤器(Filter2)定义代码示例

代码语言:javascript
复制
 filter2 =filterFactory.createCompareFilter(CompareFilter.COMPARE_EQUALS);
 filter2.addLeftValue(filterFactory.createAttributeExpression("CITY"));
 filter2.addRightValue(filterFactory.createLiteralExpression("ANKARA"));

用多个滤波器得到结果

col = features.getFeatures(filter.and(filter2));

我哪里做错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-19 22:54:20

您一定是在使用GeoTools的一个非常老的副本--自从我们使过滤器接口在GeoTools 2.3中不可变之后,我还没有看到filter.and(filter2)的使用吗?

您能试着使用过滤器工厂来设置它吗?

代码语言:javascript
复制
filter = ff.and(
  ff.greater( ff.property("Shape_Area"), ff.literal(100000)),
  ff.equal( ff.property("CITY"), ff.literal("ANKARA"));

或使用CQL:

代码语言:javascript
复制
filter = CQL.toFilter(" Shape_Area > 100000 AND CITY = 'ANKARA'")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21184666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档