【发布时间】:2016-06-20 15:24:07
【问题描述】:
我有一个 Geoserver WFS 请求,其中包含基于跨层过滤器的 cql,如下所示:
...&CQL_FILTER=INTERSECTS(the_geom, querySingle('myLayerName','the_geom','the_id = F338'))
这不起作用。 Geoserver 给了我这个错误信息:
java.lang.NullPointerException: PropertyDescriptor 为空 - 你有吗 请求一个不存在的属性?
如果我将过滤器更改为:
&CQL_FILTER=INTERSECTS(the_geom, querySingle('myLayerName','the_geom','INCLUDE'))
它正在工作。
第一个示例中可能出了什么问题?具有值 F338 的 id 实际上确实存在。
可能是 Geoserver 期望一个整数作为 id 吗?在 CQL 中,过滤器可以是字符串,但它们必须被引用。在我的示例中,我显然不能真正引用该值,因为 querySingle 函数的整个参数本身就是一个引号。
【问题讨论】:
-
如果你使用 '"the_id"="F338"' 作为过滤器会发生什么? the_id也是fid吗?如果是这样,您可能想使用 'IN (F338)'
-
当
the_id是number类型时它可以工作。你的第一个猜测也不起作用。我如何在图层上设置fid来尝试您的第二次猜测?谢谢