【问题标题】:Geoserver sql view parameters messing up postgis function callsGeoserver sql视图参数弄乱了postgis函数调用
【发布时间】:2015-06-27 01:46:45
【问题描述】:

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

我的问题是,当我在我的数据库上创建一个 sql 查询时,形式为 “从“Beta”b 中选择 b.the_geom,其中 b.point_id

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

  • > 从“Beta”中选择 b.the_geom b %parameter%

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

所以我知道我的程序可以发送参数(完整的“where”子句)并找出查询。例如,id

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

但是,当我实际将包含诸如 ST_CROSSES(b.the_geom,c.the_geom) 之类的 postgis 函数的 where 子句从 html 发送到地理服务器时,openlayers 窗口中没有显示任何内容。

这怎么可能?

【问题讨论】:

  • 我要做的第一件事是检查日志以查看 a) 是否出现错误以及 b) 实际正在执行什么查询
  • 我上周尝试过,并设法打破了一切。您是在谈论 geoserver 日志还是 postgresql 日志?我无法终生启用 postgresql 日志记录,但使用 geoserver 我仍然有机会
  • 好的,我已经设法在地理服务器日志中找到可能相关的内容,它表明“请求了 1 个图层,但找到了指定的 2 个视图参数”

标签: postgresql view postgis geoserver


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 2015-04-12
    • 2013-09-07
    • 1970-01-01
    相关资源
    最近更新 更多