【问题标题】:Geotools Sort By issueGeotools 按问题排序
【发布时间】:2014-08-21 13:03:21
【问题描述】:

我在 postgis 中有一个简单的 SQL 查询:

"Select * from table1 order by filed1 desc, ABS(filed2 - 10) asc"

在上面的查询中,我首先根据field1排序,然后field2的绝对值减去10,这在postgis中可以正常工作。

我将使用 geotools 来模拟这个,但我无法实现 ABS 功能。这是我的代码的一部分:

final SortBy sortByField1 = ff.sort("field1", SortOrder.DESCENDING);

final SortBy sortByField2 = ff.sort("ABS(field2 -10)", SortOrder.ASCENDING);

seconds 语句引发异常,因为 sort 只识别字段名称而不识别表达式。 我查看了文档,发现我们可以使用表达式来处理它,但我无法实现它:

   PropertyName name = sortByField2.getPropertyName();  
   name.evaluate(object)
    final SortBy newSort  = new SortByImpl(name, SortOrder.ASCENDING);

我知道 Geotools 中有 FilterFunction_abs 和 Add 函数,但我不知道如何使用它们来评估 ABS 和减去函数。

如果有人可以帮助我找到解决方案,那就太好了。

谢谢,

【问题讨论】:

    标签: geotools


    【解决方案1】:

    Abs 应该已经存在(如果您查看 GeoServer documentation),具体取决于您需要 abs_3 或 abs_4 的列类型。您还需要将 field2 - 10 分解为子函数(这是 standard 的内置部分)。

    如果一切都失败了,您可以使用此tutorial 编写自定义过滤器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-16
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 2011-11-23
      相关资源
      最近更新 更多