ExpressionEvaluator
对由FME特性函数、字符串函数、数学函数和数学运算符组成的表达式执行数学计算。操作数和函数实参由输入特性的属性、常量字面值、发布形参和私有形参,以及函数和操作符组成。您可以使用GUI界面来设置表达式,但也可以手动编辑表达式。表达式的结果存储在用户指定的属性中。
ExpressionEvaluator有两种主要的用法:
- 将一个表达式应用于一个属性
- 集评价模式要么创建新的属性或覆盖现有的属性,但只覆盖一个属性。
- 表达式可以使用@ value ()功能,但不使用@CurrentAttribute ()函数。
- 例如,如果想在单个属性的值上加1,请使用表达式@ value (attr) + 1,设置评价模式来覆盖现有的属性,并设置属性来覆盖来attr.
- 将一个表达式应用于多个属性
- 集评价模式来覆盖现有的属性并且只选择将被新值覆盖的属性。未选中的属性将保持其原始值。
- 表达式可以使用@CurrentAttribute ()函数,但通常不会使用@ value ()函数。
- 例如,如果您想在一些属性的值上加1,请使用表达式@CurrentAttribute () + 1,设置评价模式来覆盖现有的属性,并选择要应用此属性的属性。
注意:如果想将不同的表达式应用于不同的属性,可以使用多个ExpressionEvaluators,也可以使用单个ExpressionEvaluatorsAttributeCreator.
受支持的操作符是C表达式中允许的操作符的子集。它们与相应的C操作符具有相同的含义和优先级,但有一个明显的例外:它们支持数字空值。
表达式期望产生数值结果。FME支持数字空值,允许表达式返回null作为结果。例如,表达式8.2 + 6返回14.2,而表达式@ value (nullAttr) * 1返回null。
注意:构建无效表达式很容易,因此您可能需要再次检查表达式,特别是在使用@ value (attr)在表达式中,一些属性可能有意外值。如果表达式无效,则相应的result属性将被设置为空。当结果为null时,将设置以下属性来指示出错的地方:
•fme_expression_warnings {} .attrName
•fme_expression_warnings {} .message
•fme_expression_warnings {} .transformerName
在ExpressionEvaluator内部,null、missing和空字符串属性都被认为是null。因此,@ value (attr) * 1会导致null ifattr不存在于特性中,或为空字符串。
参数
选择创建新的属性计算指定的表达式并将计算结果放入指定的属性中。
选择覆盖现有的属性对每个选定的属性求值一次指定的表达式。计算的结果将被放回属性中。
这是将包含结果的属性。使用默认名称,或键入新名称。
该参数允许对每个选定的属性计算一次相同的表达式。对于指定的每个属性,表达式的结果将存储到该属性中。
如果表达式需要当前属性的值,则使用函数检索它@CurrentAttribute ().例如,如果传入的特性具有属性X和Y,我们希望每个属性加1,选择两个属性,并将表达式设置为@CurrentAttribute () + 1.这将设置属性X来X + 1和Y来Y + 1.
警告:评估的顺序是不确定的。如果覆盖attr,@ value (attr)不应使用。
数学编辑器
有关更多信息,请参见算术编辑器。
表达式编辑器
表达式由操作符和操作数、函数和参数以及括号组成。操作数、运算符和括号之间可以使用空格,表达式处理程序会忽略空格。
在可能的情况下,操作数被解释为整数值。整数值可以用小数指定,例如123,如果操作数的前两个字符为,则为八进制0啊(0后面跟着字母o),如果操作数的前两个字符是,则用十六进制表示0 x.
如果操作数不具有上述整数格式之一,则在可能的情况下将其视为浮点数。浮点数可以用符合ansi标准的C编译器所接受的任何方式指定,除了“f”,“f”,“l”和“l”后缀在大多数安装中是不允许的。例如,以下所有数字都是有效的浮点数:2.1,3.,6 e4,7.91 e + 16.如果不能进行数字解释,则操作数将保留为字符串,并应导致表达式的计算结果为空。
操作数和参数可以通过以下方式指定:
- 作为常量数值,可以是整数,也可以是浮点数。
- 作为FME特征属性的值,使用@ value ()或@CurrentAttribute ()符号。属性的值用作操作数或参数。
- 作为FME的特征函数,如@Area ().函数被求值,结果用作操作数或实参。
- 作为一个数学函数,例如@sin (1).
FME特性函数
有关更多信息,请参见FME特性函数.
字符串函数
有关更多信息,请参见字符串函数.
数学函数
有关更多信息,请参见数学函数.
数学运算符
有关更多信息,请参见数学运算符.
例子
FME社亚搏国际在线官网区有一个很好的ExpressionEvaluator的例子。
相关的变形金刚
如果要设置多个属性,请考虑使用AttributeCreator,其中包含相同的功能数学编辑器.
编辑变压器参数
使用一组菜单选项,可以通过引用工作空间中的其他元素来分配转换器参数。更高级的函数,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击除适用参数外。有关更多信息,请参见变压器参数菜单选项.
变压器的分类
技术的历史
ExpressionEvaluator中的数学运算符基于工具命令语言(Tcl) expr命令。1Tcl及其文件的版权归美国加州大学董事会、太阳微系统公司和其他各方所有。但是,作者已经允许任何一方重新使用和修改代码和文档,前提是原始版权所有者得到承认。
相关的FME函数或工厂:@EvaluateExpression
标签算术
FME社区搜索:亚搏国际在线官网
上搜索有关此变压器的示例和信息FME社亚搏国际在线官网区.