【问题标题】:Geoserver WFS Cross Layer Filtering and String IDsGeoserver WFS 跨层过滤和字符串 ID
【发布时间】: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_idnumber 类型时它可以工作。你的第一个猜测也不起作用。我如何在图层上设置fid 来尝试您的第二次猜测?谢谢

标签: cql geoserver


【解决方案1】:

对于字符串比较,你需要放两个单引号,即 'the_id = ''F338'''。 (一个双引号不起作用)

这个愚蠢的无证小东西花了我 5 个小时的尝试和错误......

【讨论】:

  • 看起来有点奇怪。我会试试这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 2017-06-17
  • 1970-01-01
  • 2016-10-03
  • 2019-01-16
相关资源
最近更新 更多