ExpressionEvaluator

对由FME特性函数、字符串函数、数学函数和数学运算符组成的表达式执行数学计算。操作数和函数实参由输入特性的属性、常量字面值、发布形参和私有形参,以及函数和操作符组成。您可以使用GUI界面来设置表达式,但也可以手动编辑表达式。表达式的结果存储在用户指定的属性中。

ExpressionEvaluator有两种主要的用法:

  1. 将一个表达式应用于一个属性
    • 评价模式要么创建新的属性覆盖现有的属性,但只覆盖一个属性。
    • 表达式可以使用@ value ()功能,但不使用@CurrentAttribute ()函数。
    • 例如,如果想在单个属性的值上加1,请使用表达式@ value (attr) + 1,设置评价模式覆盖现有的属性,并设置属性来覆盖attr
  2. 将一个表达式应用于多个属性
    • 评价模式覆盖现有的属性并且只选择将被新值覆盖的属性。未选中的属性将保持其原始值。
    • 表达式可以使用@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不存在于特性中,或为空字符串。

参数

数学编辑器

有关更多信息,请参见算术编辑器。

表达式编辑器

表达式由操作符和操作数、函数和参数以及括号组成。操作数、运算符和括号之间可以使用空格,表达式处理程序会忽略空格。

在可能的情况下,操作数被解释为整数值。整数值可以用小数指定,例如123,如果操作数的前两个字符为,则为八进制0啊(0后面跟着字母o),如果操作数的前两个字符是,则用十六进制表示0 x

如果操作数不具有上述整数格式之一,则在可能的情况下将其视为浮点数。浮点数可以用符合ansi标准的C编译器所接受的任何方式指定,除了“f”,“f”,“l”和“l”后缀在大多数安装中是不允许的。例如,以下所有数字都是有效的浮点数:2.13.6 e47.91 e + 16.如果不能进行数字解释,则操作数将保留为字符串,并应导致表达式的计算结果为空。

操作数和参数可以通过以下方式指定:

  • 作为常量数值,可以是整数,也可以是浮点数。
  • 作为FME特征属性的值,使用@ value ()@CurrentAttribute ()符号。属性的值用作操作数或参数。
  • 作为FME的特征函数,如@Area ().函数被求值,结果用作操作数或实参。
  • 作为一个数学函数,例如@sin (1)

FME特性函数

有关更多信息,请参见FME特性函数

字符串函数

有关更多信息,请参见字符串函数

数学函数

有关更多信息,请参见数学函数

数学运算符

有关更多信息,请参见数学运算符

例子

FME社亚搏国际在线官网区有一个很好的ExpressionEvaluator的例子。

相关的变形金刚

如果要设置多个属性,请考虑使用AttributeCreator,其中包含相同的功能数学编辑器

编辑变压器参数

使用一组菜单选项,可以通过引用工作空间中的其他元素来分配转换器参数。更高级的函数,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击除适用参数外。有关更多信息,请参见变压器参数菜单选项

变压器的分类

计算值

字符串

技术的历史

ExpressionEvaluator中的数学运算符基于工具命令语言(Tcl) expr命令。1Tcl及其文件的版权归美国加州大学董事会、太阳微系统公司和其他各方所有。但是,作者已经允许任何一方重新使用和修改代码和文档,前提是原始版权所有者得到承认。

相关的FME函数或工厂:@EvaluateExpression

标签算术

FME社区搜索:亚搏国际在线官网

上搜索有关此变压器的示例和信息FME社亚搏国际在线官网区