转换器ExpressionEvaluator的几点巧用

原文发布时间:2011-01-26

作者:跑

联系QQ:44295133


u 介绍

ExpressionEvaluator(表达式计算器),这个转换器允许你对现有字段或指定数值进行运算并返回结果。

对话框下方依次显示了属性字段、运算符、以及数学函数,其中属性框将列出输入端的所有字段。

关于ExpressionEvaluator的基本使用,可参照帮助文件FME Transformers。以下列出本人在使用过程中的一点心得,供大家讨论。

u 几点巧用

1)  (嵌套)条件运算

 

上述功能描述中,x作为判断条件,凡符合的运算结果取值y,否则为z。相当于加上Tester分别进行AttributeSetter,从Best Practice角度看,它简化了工作空间。关于这点,fmepedia上有详例http://www.fmepedia.com/index.php/ExpressionEvaluator

这里再举一个反三角转换器的例子。我们知道,acos要求输入值范围为[-1,1],计算结果范围为[0,π]。在计算线段斜率或倾斜角度的时候,我们考虑到实际角度范围值为0~360°,即[0,2π]。这样我们就需要根据⊿y(=y2-y1)的正、负进行判断


              


2)  FME Functions扩展

ExpressionEvaluator对话框中我们看到右下角列出了常用的数学函数,实际情况是FME Functions拥有近百个函数,详见帮助文件FME Functions and Factories

这里列举一个比较常用的

@Coordinate((x|y|z),(<index>|END),[FLATTEN_AGGREGATE]),在(2)中我们已经看见表达式中包含该转换器,在我们知道结点索引号的情况下,它可以直接调取坐标值,而不需要事先CoordinateExtractor

u 

我们知道,FME有两个关于度分秒、十进制度换算的计算类函数,它要求度分秒按三个属性字段存放,如图






而实际情况往往是
12.345656(12°3456.56)12.34(12°34)这样的形式,不便于分别提取出相应字段。这时候,仍然可以通过ExpressionEvaluator进行换算






  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Expression Evaluator 是一个用 Java 编写的库,可以解析和计算数学表达式,并支持自定义函数和变量。它可以用于在 Java 应用程序动态计算数学表达式,例如计算器或科学计算应用程序。使用 Java Expression Evaluator,您可以轻松地解析和计算包含各种数学函数和运算符的表达式,并在运行时添加自定义函数和变量。 Java Expression Evaluator 支持各种数学函数和运算符,例如加法、减法、乘法、除法、幂运算、三角函数、对数函数等。它还支持自定义函数和变量,您可以在运行时添加自己的函数和变量,并将它们包含在表达式计算。 Java Expression Evaluator 的使用非常简单。您只需要创建一个 ExpressionEvaluator 对象,然后使用 evaluate() 方法计算表达式。例如: ``` ExpressionEvaluator ee = new ExpressionEvaluator(); double result = ee.evaluate("2 + 3 * 4"); ``` 以上代码将计算表达式 2 + 3 * 4,结果为 14。您也可以添加自定义函数和变量,例如: ``` ExpressionEvaluator ee = new ExpressionEvaluator(); ee.putFunction("square", new Function() { public double apply(double... args) { return args[0] * args[0]; } }); ee.putVariable("x", 5); double result = ee.evaluate("square(x) + 3"); ``` 以上代码将添加一个名为 square 的自定义函数,该函数计算参数的平方。然后,它将添加一个名为 x 的变量,并将其设置为 5。最后,它将计算表达式 square(x) + 3,结果为 28。 Java Expression Evaluator 是一个非常有用的库,可以帮助您轻松地解析和计算数学表达式,并支持自定义函数和变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值