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

Java 使用多重过滤器的Geotools wfs插件,java,plugins,filtering,geotools,Java,Plugins,Filtering,Geotools,我正在使用Geotools开发wfs应用程序。我正在使用compare filter对象进行wfs功能属性筛选。例如,Shape_Area>0或CITY=“ANKARA”查询工作正常,但如果我定义另一个过滤器,问题就会出现 System.out.println("type name:"+data.getTypeNames()[3]); features = data.getFeatureSource(data.getTypeNames()[3]); //count features col =

我正在使用Geotools开发wfs应用程序。我正在使用compare filter对象进行wfs功能属性筛选。例如,Shape_Area>0或CITY=“ANKARA”查询工作正常,但如果我定义另一个过滤器,问题就会出现

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());
另一个过滤器(过滤器2)定义代码示例

 filter2 =filterFactory.createCompareFilter(CompareFilter.COMPARE_EQUALS);
 filter2.addLeftValue(filterFactory.createAttributeExpression("CITY"));
 filter2.addRightValue(filterFactory.createLiteralExpression("ANKARA"));
使用多重过滤器获取结果

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


我哪里做错了?

您一定在使用一个非常旧的GeoTools副本-我没有看到过滤器。自从我们在GeoTools 2.3中使过滤器接口不可变以来,(过滤器2)使用了什么

您是否可以一直尝试使用filter factory进行设置:

filter = ff.and(
  ff.greater( ff.property("Shape_Area"), ff.literal(100000)),
  ff.equal( ff.property("CITY"), ff.literal("ANKARA"));
或使用CQL:

filter = CQL.toFilter(" Shape_Area > 100000 AND CITY = 'ANKARA'")