斯潘8
第4排
FME 2014 SP4或更早版本
表达式计算器对一个或多个属性执行数学计算。它能做相当高级的数学。可以使用提供的接口设置表达式,但您也可以手动编辑它们。
请记住,当使用ExpressionEvaluator时,使用整数值会产生整数输出。
例如。。。
10/4=2
10/4=2.5
如果使用属性值,当属性实际上是浮点数时,ExpressionEvaluator仍可能执行整数数学。为了避免得到错误的结果,在这个过程中,可能需要乘以1.0。
记住ACO,阿森,atan函数以弧度返回值!
使用角度转换器将弧度值转换为十进制。
(acos((&&u endx-&&u startx)/&&u length)
(45-15)/50
(45-15)/50.00000000001
…返回的值只有一点错误。
表达式计算器中的rand函数生成一个介于0和1之间的随机值。如果你需要更多的灵活性,尝试使用随机数发生器就在估价员面前。
fmod函数计算x/y的浮点余数f,因此您需要选择两个属性[fmod(x,y)],即使放置函数时,您只会“提示”一个[fmod(x)]。
计算余数有助于确定一个数的奇偶性,即是奇数还是偶数?
&X×10
ExpressionEvaluator的一个缺点是它使用TCL,因此使用TCL解释器。每次一个特性通过它时,必须先“编译”表达式,然后才能进行计算。所以100万个特性=100万个编译!
当您将一个表达式拆分为多个表达式评估器(为了便于使用和澄清)时,这尤其有问题。
有两种解决方案:
本节展示了表达式评估器变压器替代测试器.
A=B+C A=B-C A=B*C
上面:设置为计算a=b+c的ExpressionEvaluator(请注意a定义为“目标属性”)。
A=B&C(和)A=B C(或)
然而,本页更关注的是使用一个条件运算符,它可以有效地将ExpressionEvaluator转换为ExpressionEvaluator加上任意数量的测试人员的组合。
A=X?B:C
A=(X>4)?B:C
…如果x>4,则a=b,否则a=c。从技术上讲,在x>4时不需要支架,但为了清楚起见,也包括在内。
上面:设置为计算的ExpressionEvaluator(x>4)?B:C
上面:当然b和c可以是常量值而不是属性-这里如果x>4,则a=1,否则a=2。
注意:您发现上面的错误了吗?缺少右大括号-最后一个”)“字符?确保您的左括号和右括号的数字相等!
a=(x==4)?B:C
…如果x等于4,则a=b,否则a=c
对于更专业的来说,这是因为一个等号是为赋值而保留的(例如x=4表示赋值x,4的值)。
a=(x==4)?1:(y= 4)?2:3
…意味着如果x=4,那么a=1,否则,如果y=4,则a=2,否则a=3
上面:在ExpressionEvaluator中定义的上述嵌套表达式
一个好问题。它看起来可能比使用测试器等更复杂(事实如此),但它显著减少了您需要使用的变压器的数量,因此是FME最佳实践的一个很好的候选者。
上面:在ExpressionEvaluator中定义上述嵌套表达式的工作区
上面:具有上述嵌套表达式的工作区定义为测试人员和属性设置人员。
?2019安全亚搏在线软件公司|法律