如何在 GeoServer CQL 过滤器中使用 UNION ALL?

How to use UNION ALL in GeoServer CQL Filter?

基本上我想合并同一层的 2 个 cql 过滤器并将结果输出到我的地理服务器层。它类似于此 SQl 查询(我的案例使用 PostgreSQL):

select * from table1 where val = 'a'
union all  // union all means keeps duplicate
select * from table1 where val = 'b'  

我试过使用下面的 cql_filter 但没用

cql_filter="val"='a' union "val"='b'

我在 https://docs.geoserver.org/stable/en/user/filter/function_reference.html 中也没有找到 cql_filter 联合函数(不是几何并集)。像 GeoServer cql 过滤器中的 SQL 查询一样使用 UNION ALL 的正确方法是什么?

以下解决方案可行,但可能不是最好的。

我通过组合多个相同层而不是仅 1 个层来创建一个层组

(ns:myLayer)(ns:myLayer)

然后如下使用cql过滤器

cql_filter="val"='a';"val"='b'

这是完整的 URL 示例

http://localhost/geoserver/visualization/ows?service=WFS&version=1.1.0&request=GetFeature&typeNames=(ns:myLayer)(ns:myLayer)&outputFormat=text/javascript&format_options=callback:loadFeatures&srsname=EPSG:3857&cql_filter="val"='a';"val"='b'

您可以使用 or 加入您的过滤器:

 cql_filter="val"='a' or "val"='b'