【发布时间】: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