转换器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进行换算






猜你喜欢

转载自blog.csdn.net/fmechina/article/details/80963871