span8
span4
FME 2014 SP4或更早版本
一个的ExpressionEvaluator上执行的一个或多个属性的数学计算。它能够做的,而先进的数学。您可以使用所提供的接口设置的表情,但你也可以手动编辑它们。
使用的ExpressionEvaluator,使用整数值给出了一个整数输出时,请记住。
例如...
10/4 = 2
10.0 / 4.0 = 2.5
如果您使用的属性值,则可能的ExpressionEvaluator仍然perfom整数运算时的属性实际上是浮点数。为了避免得到错误的结果,可能有必要通过在这个过程中某处1.0倍增。
请记住,ACOS,ASIN,ATAN功能弧度返回值!
使用AngleConverter变压器弧度值转换为十进制度。
(ACOS((&_ endx - &_ startx的)/&_长度))
(45 - 15)/ 50
(45 - 15)/ 50.0000000001
…which returns the only slightly incorrect value.
ExpressionEvaluator中的rand函数生成一个介于0和1之间的随机值。如果您需要更大的灵活性,请尝试使用RandomNumberGenerator在表现评估者之前。
fmod函数计算浮点数余数F (X/Y) -因此,您需要选择两个属性[fmod({X, Y})],即使在放置该函数时,您只会得到一个[fmod({X})]的“提示”。
计算余数可以帮助确定一个数字的奇偶性,即。它是奇数还是偶数。
值* 10
ExpressionEvaluator的一个缺点是它使用TCL,因此使用TCL解释器。每当一个特性通过它时,在进行计算之前必须“编译”表达式。所以100万个特性= 100万个编译!
当您将单个表达式拆分为多个expression evaluators(为了便于使用和澄清)时,这个问题尤其严重。
有两个解决办法:
本节将展示使用的ExpressionEvaluator变压器作为变压器的替代品测试人员。
a = b + c a = b - c a = b * c
以上:用来计算a = b + c的ExpressionEvaluator(注意a被定义为“Destination属性”)。
a = b & c (and) a = b | c (or)
然而,这个页面更关注于使用一个条件运算符,它可以有效地将ExpressionEvaluator转换成ExpressionEvaluator与任意数量的测试人员的组合。
a = X ?b: c
a = (x > 4) ?b: c
…which translates as if x > 4 then a = b else a = c.从技术上讲,在x > 4附近不需要括号,但是为了清晰起见,这里包含了括号。
以上:一个表达式计算器设置来计算(x > 4) ?b: c
以上:当然,b和c可以是常数值,而不是属性——这里如果x >为4,则a = 1,否则a = 2。
注你发现上面的错误了吗?缺少一个右括号——最后一个“)”字符?确保你的左括号和右括号的数目相等!
a = (x == 4) ?b: c
…giving if X is equal to 4 then a = b else a = c
对于更专业的来说,这是因为为赋值保留了一个等号(例如x = 4表示赋值x为4)
a = (x == 4) ?1:(y == 4) ?2:3
…meaning that if x = 4 then a = 1, else if y = 4 then a = 2 else a = 3
以上:在ExpressionEvaluator中定义的上述嵌套表达式
一个很好的问题。它可能看起来比使用测试器等更复杂(确实如此),但是它极大地减少了您需要使用的变压器的数量,因此它是FME最佳实践的一个很好的候选。
以上:在ExpressionEvaluator中定义了上述嵌套表达式的工作空间
以上:上面嵌套表达式定义为测试人员和属性设置者的工作空间
©2019安全亚搏在线软件公司|法律