ExpressionEvaluator.
对由FME特征函数,字符串函数,数学函数和数学运算符组成的表达式执行数学计算。操作数和函数参数由输入功能,常量文字,发布和私有参数以及函数和运算符组成的属性。您可以使用GUI接口设置表达式,但您也可以手动编辑表达式。表达式的结果存储在用户指定的属性内。
ExpressionEvaluator有两个主要用途:
- 将一个表达式应用于一个属性
- 放评估模式到任一创建新属性或者覆盖现有属性,但只覆盖一个属性。
- 表达可能会使用@价值()功能,但不使用@currentattribute()功能。
- 例如,如果要在单个属性中将1添加到值,请使用表达式@Value(attr)+ 1, 放评估模式到覆盖现有属性和集合覆盖的属性到景点。
- 将一个表达式应用于多个属性
- 放评估模式到覆盖现有属性并仅选择使用新值覆盖的属性。未选择的属性将保持原始值。
- 表达可能会使用@currentattribute()功能,但通常不会使用@价值()功能。
- 例如,如果要在少量属性中添加1到值,请使用表达式@currentattribute()+ 1, 放评估模式到覆盖现有属性,并选择将其应用于的属性。
笔记:如果要将不同的表达式应用于不同的属性,则可以使用多个ExpressionEvaluators或使用单个attributecreator.。
支持的运营商是C表达式允许的运算符的子集。它们具有相同的含义和优先级,作为相应的C运算符,具有一个值得注意的例外:它们支持数字NULLS。
预计表达将产生数字结果。FME支持数字NULLS,允许表达式返回NULL的结果。例如,表达式8.2 + 6.回报14.2,而表达@Value(无烟区)* 1返回null。
笔记:易于构建无效表达式,因此您可能需要仔细检查您的表达式,特别是如果您使用的是@Value(attr)在表达式中,因为某些属性可能具有意外值。如果表达式无效,则相应的结果属性将设置为null。当结果为null时,将设置以下属性以指示出现问题,以及以下位置:
•fme_expression_warnings {}。attrname
•fme_expression_warnings {}。消息
•fme_expression_warnings {}。变换名称
在ExpressionEvaluator内部,null,缺少和空字符串属性都被认为是null。因此,@Value(attr)* 1如果如果景点不存在于特征上,也不是空字符串。
参数
选择创建新属性要评估指定的表达式,并将计算出的结果放在指定的属性中。
选择覆盖现有属性每次选定属性一次评估指定的表达式。评估结果将被送回属性。
这是包含结果的属性。使用默认名称或键入新名称。
此参数允许评估相同的表达式,每次选定属性一次。对于指定的每个属性,表达式的结果将存储在该属性中。
如果表达式需要当前属性的值,请使用该函数检索它@currentattribute()。例如,如果传入功能有属性X和y,我们希望递增一个,选择两个属性,并将表达式设置为@currentattribute()+ 1。这将设置属性X到x + 1和y到Y + 1。
如果使用@Value(attr)并重写景点以及其他属性,那么结果将是迭代的。后景点用表达式的新值覆盖,所有后续应用程序@Value(attr),在处理其余属性时,将使用该新值景点,而不是它的原始价值。属性的顺序会影响结果。
例如,如果您有以下属性和值:
attr0 = 0.
attr1 = 1
attr2 = 2
attr3 = 3
和表达:
@Value(attr1)+ 1
当所有四个属性选择覆盖,其结果将是:
attr0 = 2(计算1 + 1并覆盖景点)
attr1 = 2(计算1 + 1并覆盖attr1.)
attr2 = 3.(使用新价值attr1., 所以2 + 1)
attr3 = 3(使用新价值attr1., 所以2 + 1)
算术编辑器
有关更多信息,请参阅算术编辑器。
表达式编辑器
表达式由运算符和操作数,函数和参数以及括号组成的组合。可以在操作数,运算符和括号之间使用白色空格,并由表达式处理器忽略。
在可能的情况下,操作数被解释为整数值。整数值可以以十进制指定,例如123.,在八进阶中,如果操作数的前两个字符是0o.(归零后跟字母o),如果操作数的前两个字符是的,则在十六进制中0x.。
如果操作数没有上面给出的整数格式之一,那么它将被视为可能的浮点数。浮点数可以以符合ANSI标准的C编译器接受的任何方式指定,但在大多数安装中不允许允许“F”,“F”,“L”和“L”后缀。例如,以下所有内容都是有效的浮点数:2.1那3.那6E4.那7.91E + 16.。如果不可能进行数字解释,则操作数留为字符串,并且应导致表达式评估为NULL。
可以通过以下方式指定操作数和参数:
- 作为常数数值,整数或浮点。
- 作为FME功能属性的值,使用@价值()或者@currentattribute()符号。属性的值用作操作数或参数。
- 作为FME功能功能,例如@区域()。函数被评估,结果用作操作数或参数。
- 作为数学函数,如@sin(1)。
FME功能功能
有关更多信息,请参阅FME功能功能。
字符串函数
有关更多信息,请参阅字符串函数。
数学函数
有关更多信息,请参阅数学函数。
数学运营商
有关更多信息,请参阅数学运营商。
例子
FME知识中心具有ExpressionEvaluator的一个很好的例子。
相关变压器
如果要设置多个属性,请考虑使用attributecreator.,其中包含相同的功能算术编辑器。
编辑变换器参数
使用一组菜单选项,可以通过引用工作区中的其他元素来分配变压器参数。一些变压器也可提供更高级的功能,例如高级编辑器和算术编辑器。要访问这些选项的菜单,请单击除适用的参数旁边。有关更多信息,请参阅变压器参数菜单选项。
变压器类别
技术历史
ExpressionEvaluator中的数学运算符基于工具命令语言(tcl)expr命令。1TCL及其文件受加州大学,Sun Microsystems,Inc。和其他各方的受版权保护。但是,如果原始版权持有人确认,作者向任何一方授予任何聚会来重用和修改代码和文件。
标签算术
搜索FME知识中心
搜索有关此变压器的样本和信息FME知识中心。