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

时间:2015-04-20 11:05:23

标签: postgresql view postgis geoserver

我已经设置了一个openlayers html窗口,它与geoserver平台进行通信。 Geoserver通过参数视图连接到数据库,其中整个“where”子句是参数。

我的问题是,当我在我的数据库上创建一个sql查询时,表单 “从”Beta“b中选择b.the_geom,其中b.point_id <100” 它有效。

如果我将视图参数发送到geoserver:

  • &GT;从“Beta”b%参数%&lt;中选择b.the_geom -

并且参数是我刚开始演示的sql查询的where子句,一切都运行良好。

所以我知道我的程序可以发送参数(完整的“where”子句)并查出查询。例如,当id <1时,它显示4个点中的3个。如果id为&lt; 40且全部为4。 100。

但是,当我使用任何postgis函数来比较几何时,pgadmin中的sql查询工作正常,并返回与第一部分中成功查询相同类型的数据。例如,它返回具有相同the_geom编号的所有几何。

但是,当我实际发送包含post_isus函数(如st.CROSSES(b.the_geom,c.the_geom))的where子句从html发送到geoserver时,openlayers窗口中没有显示任何内容。

怎么会这样?

1 个答案:

答案 0 :(得分:2)

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