我无法使 CQL 参数 IN 工作

Posted

技术标签:

【中文标题】我无法使 CQL 参数 IN 工作【英文标题】:I cannot make the CQL parameter IN work 【发布时间】:2014-10-13 13:19:17 【问题描述】:

在我的 URL 中使用 CQL IN 运算符时,我没有得到任何结果。如果我使用 CQL_FILTER=id=229539 该 URL 工作正常。我真的需要指定一个列表,所以我尝试使用 CQL IN 运算符,但没有运气。我尝试了 CQL_FILTER=id IN (229539)CQL_FILTER=id IN ('229539'),都不起作用 - 为什么?

【问题讨论】:

可能更适合gis.stackexchange.com 我必须用双引号将名称 id 括起来,它起作用了。我认为id 是 GeoServer 中的保留名称,因此您可以通过这种方式解决问题。另请参阅gis.stackexchange.com/q/373005/9518。 【参考方案1】:

CQL

id IN ('229539')

实际上应该没问题,我们有这样的查询并且它们确实有效。

您可以做些什么来排除故障:

确保 URL 编码正确。可能某些引号或括号被错误地解释了。 确保查询中没有其他任何内容与您的查询交互。 确保您没有请求两个或更多层。 打开并查看 GeoServer 日志。我不能给你确切的指针,但可以打开详细日志记录,你会看到查询是如何处理的(直到 SQL)。这可能会提供很好的提示。

如果没有任何帮助,请发布您的元数据 (WFS GetCapabilities) 和您正在尝试的确切 URL。

您可能还想ask here。

【讨论】:

【参考方案2】:

问题不在于 CQL。 CQL 是正确的。问题是用于请求的视图的定义。

CREATE OR REPLACE VIEW data.yellowgreen AS 
  SELECT 
    markblok.id AS id,
    temp_kvadrats.value,
    st_intersection(markblok.geom, temp_kvadrats.geom) AS geom,
    temp_kvadrats.session_id
FROM data.temp_kvadrats
  JOIN data.markblok ON st_intersects(markblok.geom, temp_kvadrats.geom);

CQL 仅适用于“ma​​rkblok.id AS id”,而不能仅适用于“ma​​rkblok.id”,尽管列显示的视图名称列表 id。

【讨论】:

以上是关于我无法使 CQL 参数 IN 工作的主要内容,如果未能解决你的问题,请参考以下文章

使硬币减速旋转的代码无法正常工作

如何在CQL 3预处理语句中绑定IN子句值?

无法使用 Sklearn 和 Keras Wrappers 使 pipeline.fit() 工作

如何使 nrepl-ritz-jack-in 通过 TRAMP / Emacs 远程工作

无法让 OpenGL 中的 Gouraud 着色工作

CQL3 SELECT...IN 子句中的元组数量是不是有任何限制?