我已经设置了一个openlayers窗口,它可以与geoserver平台通信。Geoserver通过参数视图连接到数据库,其中整个" where“子句都是参数。
我的问题是,当我在我的数据库上创建一个sql查询时,表单“Selectb.the_geom from "Beta”b其中b.point_id < 100“就能工作了。
如果我向geoserver发送视图参数:
参数是我刚开始演示的sql查询的where子句,一切都很完美。
因此,我知道我的程序可以发送参数(完整的"where“子句)并显示出查询。例如,当id < 40时,它显示4点中的3点,如果id < 100,则显示全部4点。
但是,当我使用任何postgis函数比较几何图形时,pgadmin中的sql查询工作得很好,并返回与第一节中成功的查询相同的数据。例如,它返回具有相同the_geom数的所有几何图形。
但是,当我实际上从html向geoserver发送包含像ST_CROSSES(b.the_geom,c.the_geom)这样的postgis函数的where子句到geoserver时,打开层窗口中没有显示任何内容。
这怎么可能是?
发布于 2015-04-20 11:30:23
好的,如果有人碰巧有同样的问题,在查看日志后,我发现了罪魁祸首。Geoserver抱怨说有两个参数,这意味着where子句中的逗号必须转义。在查看了其他有类似问题的人之后,我发现您必须三次转义逗号,"\ \,“本质上是确保在通过javascript发送请求之后,"\,”将保持转义。
https://stackoverflow.com/questions/29746117
复制相似问题