Geoserver sql 查看参数搞乱了 postgis 函数调用

Geoserver sql view parameters messing up postgis function calls

我已经设置了一个与地理服务器平台通信的 openlayers html window。 Geoserver 通过参数视图连接到数据库,其中整个 "where" 子句是一个参数。

我的问题是,当我在我的数据库上创建一个 sql 查询时,其形式为 "Select b.the_geom from "Beta" b 其中 b.point_id < 100" 它有效。

如果我向地理服务器发送视图参数:

参数是我刚开始演示的 sql 查询的 where 子句,一切正常。

所以我知道我的程序可以发送参数(完整的 "where" 子句)并计算出查询。例如,当 id < 40 时显示 4 分中的 3 分,如果 id 小于 100 时显示全部 4 分。

但是,当我使用任何 postgis 函数比较几何图形时,pgadmin 中的 sql 查询完美运行,并且 returns 与第一部分中成功查询的数据类型相同。例如,它 returns 所有具有相同 the_geom 数字的几何图形。

但是,当我实际将包含 ST_CROSSES(b.the_geom,c.the_geom) 之类的 postgis 函数的 where 子句从 html 发送到地理服务器时,没有任何显示在开放层 window。

怎么会这样?

好的,以防万一有人遇到同样的问题,在按照建议查看日志后,我找到了罪魁祸首。 Geoserver 抱怨有两个参数,这意味着 where 子句中的逗号必须被转义。看了其他有类似问题的人,我发现你必须转义三次逗号“\ \ ”,本质上是确保“\,”在你通过javascript发送请求后仍然保持转义。