ExpressionEvaluator
对包含FME特征函数、字符串函数、数学函数和数学运算符的表达式进行数学计算。操作数和函数参数由输入特性的属性、常量文字、发布和私有参数以及函数和操作符组成。您可以使用GUI界面来设置表达式,但也可以手动编辑表达式。表达式的结果存储在用户指定的属性中。
ExpressionEvaluator主要有两种用法:
- 将一个表达式应用于一个属性
- 集评价模式要么创建新的属性或覆盖现有的属性,但只覆盖一个属性。
- 表达式可以使用@值()功能,但不使用@CurrentAttribute()函数。
- 例如,如果您想在单个属性的值中添加1,请使用表达式@ value (attr) + 1,设置评价模式至覆盖现有的属性,并设置属性来覆盖至attr。
- 将一个表达式应用于多个属性
- 集评价模式至覆盖现有的属性并且只选择将被新值覆盖的属性。未选择的属性将保留其原始值。
- 表达式可以使用@CurrentAttribute()函数,但通常不会使用@值()函数。
- 例如,如果您想在一些属性的值中添加1,那么可以使用表达式@CurrentAttribute () + 1,设置评价模式至覆盖现有的属性,并选择要将其应用于的属性。
注意:如果您想将不同的表达式应用于不同的属性,您可以使用多个expressionevaluator,也可以使用单个AttributeCreator。
支持的操作符是C表达式中允许的操作符的子集。它们与相应的C操作符具有相同的含义和优先级,但有一个值得注意的例外:它们支持数值null。
表达式将产生数值结果。FME支持数值null,允许表达式返回null作为结果。例如,表达式8.2 + 6返回14.2,而表达式@ value (nullAttr) * 1返回null。
注意:很容易构建一个无效的表达式,因此您可能想要对表达式进行双重检查,特别是在您使用的是@ value (attr)在表达式中,因为某些属性可能具有未预期的值。如果表达式无效,则相应的结果属性将设置为null。当结果为null时,将设置以下属性来指示哪里出错了,以及在哪里出错:
•fme_expression_warnings {} .attrName
•fme_expression_warnings {} .message
•fme_expression_warnings {} .transformerName
在ExpressionEvaluator内部,null、missing和空字符串属性都被认为是null。因此,@ value (attr) * 1会导致空如果attr在特性上不存在或为空字符串。
参数
选择创建新的属性评估指定的表达式,并有放于指定属性的计算结果。
选择覆盖现有的属性计算指定表达每所选属性一次。评价的结果将被放回属性。
这是将包含结果的属性。使用默认名称,或键入一个新的名称。
该参数允许同一表达进行评估,每所选属性一次。对于每个指定的属性,表达式的结果将被存储到该属性。
如果表达式需要当前属性的值,使用功能检索@CurrentAttribute()。举例来说,如果传入的特征具有的属性X和Y,我们希望通过一个来增加每个选择这两个属性,并设置表达式@CurrentAttribute () + 1。这将设置属性X至X + 1和Y至Y + 1。
如果使用@ value (attr)和覆盖attr以及其他属性,那么结果将是重复的。后attr改写从表达式的新值,在所有后续应用@ value (attr),处理剩余的属性时,将使用新的价值attr,而不是其原始值。属性的顺序会影响结果。
例如,如果您有以下属性和值:
attr0 = 0
attR1位= 1
attR2位= 2
attr3 = 3
和表达:
@value(attR1位)+ 1
当所有四个属性选择覆盖,其结果将是:
attr0 = 2(计算1 + 1并覆盖attr0)
attr1 = 2(计算1 + 1并覆盖attr1)
attr2 = 3(使用新的价值attr1,所以2 + 1)
attr3 = 3(使用新的价值attr1,所以2 + 1)
数学编辑器
有关更多信息,请参见算术编辑器。
表达式编辑器
表达式由运算符和操作数、函数和参数以及括号组成。空格可以在操作数、操作符和括号之间使用,表达式处理器会忽略它。
在可能的情况下,操作数被解释为整数值。整数值可以指定为十进制,例如123,在八进制中,如果操作数的前两个字符是0啊(0后跟字母o),如果操作数的前两个字符为十六进制,则为十六进制0 x。
如果操作数没有上面给出的整数格式,那么它将被视为浮点数(如果可能的话)。除了“f”、“f”、“l”和“l”后缀在大多数安装中不被允许外,浮点数可以用符合ansi的C编译器接受的任何方式指定。例如,下列所有数都是有效的浮点数:2.1,3.,6 e4,7.91 e + 16。如果无法进行数字解释,则操作数将作为字符串保留,并应使表达式的值为null。
操作数和参数可以通过以下方式指定:
- 作为常量数值,可以是整数,也可以是浮点数。
- 作为FME特性属性的值,使用@值()或@CurrentAttribute()符号。属性的值用作操作数或参数。
- 作为FME的特征函数,如@区域()。函数求值并将结果用作操作数或参数。
- 作为一个数学函数,如@sin(1)。
FME特性函数
有关更多信息,请参见FME特性函数。
字符串函数
有关更多信息,请参见字符串函数。
数学函数
有关更多信息,请参见数学函数。
数学运算符
有关更多信息,请参见数学运算符。
例子
FME知识中心有一个很好的例子。
相关的变形金刚
如果要设置多个属性,请考虑使用AttributeCreator,其中包含了相同的功能数学编辑器。
编辑变压器参数
使用一组菜单选项,可以通过引用工作空间中的其他元素来分配transformer参数。更高级的功能,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击在可适用的参数旁边。有关更多信息,请参见变压器参数菜单选项。
变压器的分类
技术的历史
ExpressionEvaluator中的数学运算符基于Tool Command Language (Tcl) expr命令。1Tcl和它的文档是由加州大学,Sun Microsystems公司的校委会拥有版权和其他各方。然而,作者进行了授权的任何一方重复使用和修改代码和文档,提供的原始版权持有人的认可。
标签算术
搜索FME知识中心
有关此变压器的示例和信息,请参阅FME知识中心。