如何在 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'
基本上我想合并同一层的 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'