gpt4 book ai didi

java - 使用多个过滤器的 Geotools wfs 插件

转载 作者:太空宇宙 更新时间:2023-11-04 15:12:25 26 4
gpt4 key购买 nike

我正在使用 Geotools 开发 wfs 应用程序。我正在使用比较过滤器对象来进行 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());

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

 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 中使过滤器接口(interface)变得不可变以来,我还没有看到使用 filter.and(filter2) ?

您可以尝试使用过滤器工厂来进行设置吗:

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'")

关于java - 使用多个过滤器的 Geotools wfs 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21184666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com