tccaller调用程序
运行工具命令语言(TCL)命令并将其返回值赋给属性。
tcl命令可以使用tcl语言提供的任何内置tcl函数以及fme提供的任何tcl工具,对特性的几何体和/或属性进行操作。
参见TCL语言参考手册(www.tcl.tk网站)fme tcl变量和函数下面一节详细介绍这些功能。
常见的tcl示例用法包括:
- 从属性中修剪空格:
fme_setattribute trimmedattribute[字符串修剪[fme_getattribute originalattribute]]
- 将属性中的所有非数字字符替换为空格:
fme\u setattribute属性[regsub-all{[^0-9]}[fme\u getattribute属性]{}]
注意,在这种情况下,返回值是实际进行替换的次数。
- 将正则表达式与属性匹配:
regexp{^[a-za-z]$}[fme_getattribute anattribute]
此正则表达式测试属性的整个值是否仅由字母字符组成。
注意,当匹配正则表达式时,如果表达式匹配,则返回值为1,否则为0。
- 将自定义消息记录到日志窗口:
FME日志信息FME通知{这是我的信息}
操作特征属性的推荐方法是通过为此目的提供的函数:
属性属性名称
fme_setattribute属性名newval
fme_copyattribute目标属性名称srcatrname
fme_renameattribute目标属性名称srcatrname
fme_unsetattributes属性名称1[属性名称2属性名称3…]
参数
输出特征参数
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
将为每个功能求值的tcl表达式。表达式的值将存储在目的地属性是的。
注意:您可以通过全局FME_MacroValues美元阵列。如果fme返回错误不能读”FME_MacroValues (text_param)”:没有这样的变量,替换FME_MacroValues美元与美元:FME_MacroValues是的。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
附加代码也可以在源代码编辑。此代码将在翻译开始时编译一次,因此比在tcl表达式参数。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
可以选择提供tcl源文件。在执行tcl命令之前将读取该文件。这可用于引用保存在公共外部文件中的tcl函数。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
将存储tcl表达式计算后的参数。如果tcl表达式不返回值,则destination属性可以留空。
复制控件
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
可以使用tcl表达式的副本数参数。此表达式在输入功能的上下文中求值。它返回一个数字,指示要使用转换器的tcl表达式是的。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
如果指定,则拷贝号属性将保存每个输出功能的副本号。例如,如果制作了一个输入要素的3个副本,则输出副本将分别具有0、1和2,分配给它们的“副本号”属性。tcl表达式可以检查该属性,以确定它正在处理的输出特性编号。
高级的
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
公开由tcl表达式被执行以供其他变压器使用。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
隐藏可能被tcl表达式被处决。其他变压器将无法使用这些属性。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
隐藏可能被tcl表达式被处决。其他变压器将无法使用这些列表。
请注意,如果选择隐藏列表,则您的选择将包括任何列表属性或嵌套列表。例如,如果选择隐藏名为{}列表然后{}.attr列表或{}列表.sublist {}也会被隐藏起来。
fme tcl变量和函数
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
四个tcl全局变量在fme特性和tcl脚本之间提供了一个网关:fme_featuretype、fme_coordsys、fme_attrEncoding和fme_attrNameEncoding变量。为了在tcl过程中使用它们,必须将它们声明为全局的;否则,变量将被视为局部变量,不会影响或与运行函数的fme特性交互。要在函数中使用它们,请使用以下模式:
程序剂量{
全球FME_功能类型
全球fme_coordsys
#剩下的功能在这里…
}
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
这个全局变量定义了字符编码的名称,在使用fme_getattribute和fme_setattribute函数时,tcl假定特性的属性是指定的。由于tcl在内部使用utf-8,这意味着当使用fme_getattribute函数获取属性值时,它将把属性值从给定的编码转换为utf-8,当使用fme_setattribute函数设置属性值时,它将把值从utf-8转换为给定的编码。
当已知字符编码时,此变量的值不会影响属性的设置或检索,无论是在检索到的属性上,还是在fme_getattribute或fme_setattribute参数的指导下。
默认属性编码与执行fme的系统的默认字符编码相同,并且可能被tcl的内置“encoding system”命令覆盖。可以通过执行命令“encoding names”获得支持的编码的完整列表。
变量可以设置、读取或取消设置:
设置FME_属性编码ISO8859-2
放入$fme_attrcoding
未设置fme_属性编码
如果fme_attrEncoding未设置或设置为空字符串,则它将还原为默认系统编码。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此函数用于确定特性上是否存在属性。
FMEY属性存在的语法是:
FME-属性存在
如果特征上存在属性,则返回值1;否则,返回0。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此函数用于确定属性值是否为空。
fme_isattributenull的语法为:
伊萨特努尔
如果属性值为空,则返回值1;否则,返回0。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此函数用于检索所有功能属性的名称,并将其作为tcl列表返回。
fme_attributename的语法为:
属性名
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此全局变量定义字符编码的名称,TCL假定在使用fme_getattribute和fme_setattribute函数时指定了特征的属性名称。由于tcl在内部使用utf-8,这意味着它将把属性名从utf-8转换为给定的编码系统,并在引用实际特性的属性时使用转换后的名称。
默认属性编码与执行fme的系统的默认字符编码相同,并且可能被tcl的内置“encoding system”命令覆盖。可以通过执行命令“encoding names”获得支持的编码的完整列表。
变量可以设置、读取或取消设置:
设置fme_attrnamencoding iso8859-2
放入$fme_attrnamencoding
取消设置fme_attrnamencoding
如果fme_attrnamencoding未设置或设置为空字符串,则它将还原为默认系统编码。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此全局变量设置为镜像特征的坐标系。与fme_featuretype变量一样,可以设置、读取和取消设置:
设置fme_coordsys utm10-83
放入$fme_coordsys
取消设置fme_coordsys
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
在tclcaller调用的任何tcl过程中,fme_coordinates函数都可以用来读取和写入特性的坐标。它提供了几个选项,如下所示:
尺寸(2 3)
设置特征的尺寸-2或3。
努姆科德
返回特征中的坐标数。
重置坐标
从要素中删除所有当前坐标。
注意:调用resetCoords对fme_geometry或fme_type属性没有影响。这些必须由脚本显式重置或重新调整,以便功能不会处于不一致的状态。
格特考德(X Y Z)
返回指定轴上指定的坐标值
艾德考德
将指定的坐标添加到特征几何图形的末端。
几何类型
返回特征的几何类型-它将是FME几何模型属性:
fme_点
FME_线
多边形
甜甜圈
fme_聚合
FME_未定义
几何类型
设置几何类型的功能传入的价值。没有完整性检查完成。重要的是,这种谨慎,因为设置了不正确的几何类型可以在以后阻碍FME来完成。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此功能用于复制的功能属性。该属性的原始内部数据存储类型使用此功能保留。高精度浮点值时,这可能是显著。
对于FME_CopyAttribute的语法是:
FME_CopyAttribute
如果该功能并没有包含名为使用oldName的属性,则函数什么都不做。它不会创建一个新的空白值属性。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
该功能用于解码作为部分所述已编码的字符串在映射文件中替换字符串是的。所述函数的结果是输入参数的一个副本,其中转换回它们所代表的字符的字符串取代序列。
对于FME_DecodeText的语法是:
FME_DecodeText
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
该功能用于生成如在部分所述已被编码的字符串在映射文件中替换字符串是的。所述函数的结果是输入参数的一个副本,其中转换成干净地穿过FME的文件解析器取代的串序列的特殊字符,并且可以以任何ANSI字符集表示。
对于FME_EncodeText的语法是:
FME_EncodeText
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此功能用于从Tcl过程中调用任何FME功能。这允许标准FME功能反复在同一个功能调用。
对于FME_Execute的语法是:
FME_Execute
任何其余的参数传递给函数。例如,@Generalize函数被调用是这样的:
FME_Execute期广义道格拉斯10
并且这将完成仿佛@Generalize(道格拉斯,10)分别在映射文件别处调用的相同的效果。
如果要调用的函数使特征被删除,翻译将被中止。该@Generalize功能可以做到这一点,如果要素的总长度小于传入的公差值。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
这个全局变量建立镜像特征的特征类型。与其他变量,它可以设置,读取和取消设置:
设置FME_FeatureType“跑车”
把$ FME_FeatureType
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此功能可用于从Tcl过程中获得的属性上的特征值。
对于FME_GetAttribute的语法是:
FME_GetAttribute
如果属性是不存在的功能,一个空字符串作为返回值。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
该FME_LogMessage功能用于将消息写入FME日志文件。它可以以两种方式之一进行调用:
FME_LogMessage
或
FME_LogMessage
当使用第一种形式,该消息数必须存在于FME安装文件夹下的子文件夹中的消息文件。其余参数是用来填充任何%0%1,...%正参数持有者在消息中。例如,如果该消息是:
3011,打开文件%0为模式%1
然后FME_LogMessage可以被称为是这样的:
FME_LogMessage fme_inform 3011 /tmp/cacher.txt阅读
在第二种形式中,该消息是直接输出到日志文件中。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此功能用于重命名功能属性。该属性的原始内部数据存储类型使用此功能保留。高精度浮点值时,这可能是显著。
对于FME_RenameAttribute的语法是:
FME_RenameAttribute
如果该功能并没有包含名为使用oldName的属性,则函数什么都不做。它不会创建一个新的空白值属性。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
该功能用于设置上的特征的属性的值。
对于FME_SetAttribute的语法是:
FME_SetAttribute [-notranscode]
如果指定了-notranscode选项时,Tcl变量的字节被逐字拷贝到所得到的属性中,代替从Tcl的内部UTF-8编码的目标字符编码字符编码转换。当Tcl变量已知包含在一个特定的字符编码,而不是UTF-8字符的通常的序列字节数组,这是有用的。
结果属性通常具有附加的字符编码信息。如果
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此函数用于将功能的属性值设置为空。如果属性不存在,它将被创建。
fme_setattributenull的语法为:
设置属性
如果该属性不存在,它将被创建,并且它的类型将是字符串。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此函数在fme临时文件夹中生成临时文件名。
文件名保证是唯一的新文件。
注意:fme将创建一个具有给定名称的空文件;完成后必须将其删除。
fme_tempfilename的语法为:
FME临时文件名[
如果没有提供前缀和后缀,文件名将作为fme临时文件夹中任意唯一命名的文件返回。(有关此文件夹所在位置的信息,请参阅临时文件夹的决心(第三章)
如果提供了前缀,则该前缀将用作临时文件夹中文件名的开始部分,而后缀将用作结束部分。通常后缀用于附加扩展名,在这种情况下,它还必须包含句点“。
例如,此调用:
fme_tempfilename raster.png格式
会返回如下内容:
C:/文档和设置/username/local settings/temp/rastera05921.png
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_Transformers/Skins/Default/Stylesheets/Images/transparent.gif)
此函数用于从要素中删除一个或多个属性。
fme_unsetattributes的语法是:
未设置属性
如果功能不包含列出的任何属性,则不会生成错误。fme_unsetattributes只会忽略未在功能上指定属性的任何参数。
使用说明
%性格
由于fme解析器的限制,tcl表达式不能包含百分比(%)字符。如果需要%字符,则应将表达式编码为tcl过程,并将其放入外部文件中,以“source”形式输入。请注意,可以使用字符串格式化程序transformer,它提供了访问tcl“format”命令的便捷方法。
编辑变压器参数
使用一组菜单选项,可以通过引用工作区中的其他元素来指定变压器参数。一些转换器中还提供了更高级的功能,如高级编辑器和算术编辑器。要访问这些选项的菜单,请单击在适用参数旁边。有关详细信息,请参见变压器参数菜单选项是的。
变压器类别
搜索FME知识中心
在上搜索有关此转换器的示例和信息FME知识中心是的。