首页 文章

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

提问于
浏览
1

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

我的问题是,当我在我的数据库上创建一个sql查询时,形式为“选择b.the_geom来自”Beta“b,其中b.point_id <100”它的工作原理 .

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

  • 从"Beta" b%参数%< - 中选择b.the_geom

并且参数是我刚开始演示的sql查询的where子句,一切都很完美 .

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

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

但是,当我实际上将包含像st_CROSSES(b.the_geom,c.the_geom)这样的postgis函数的where子句从html发送到geoserver时,openlayers窗口中没有显示任何内容 .

怎么会这样?

1 回答

  • 2

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

相关问题