我正在使用Opeonlayers 3.18 + GeoServer。我可以制作一个ogc过滤器来比较字段和值。我如何比较两个字段?
下面的代码显示了我正在寻找的内容:
var f = ol.format.ogc.filter.greaterThan('Field1', 100); // this works nicely
var f = ol.format.ogc.filter.greaterThan('Field1', 'Field2'); // this doesn't work
等效工作CQL过滤器是:' Field1>字段2'
此致
答案 0 :(得分:0)
这种过滤应该有效。我注意到许多数据库可能无法以最佳方式执行该过滤器,因此,此类过滤器的处理可能不正确。
要检查的第一件事是GeoServer日志是否有任何其他信息。对于大多数请求,有一些日志消息将提供请求的所有详细信息(包括过滤器)。
如果OL3发出无意义请求,则应首先出现某种解析错误。如果数据存储区遇到请求问题,您可能会看到异常。
为了进一步提供帮助,您使用的是哪个版本的GeoServer和哪个数据存储?此外,日志中还有其他信息吗?
更新:根据以下评论,我查看了Open Layers 3来源。如果你看here,看起来OL3将第一个参数视为properyName而第二个参数视为文字。可能值得填写项目的GitHub页面上的错误/功能请求。