span8
span4
功能强大的一对——FeatureReader和FeatureWriter(在FME 2016中新增)——允许将第三方命令行工具简单地集成到FME中。
任何能够以FME支持的格式读取、处理和保存数据的工具和库都可以成为FME工作流的一部分。亚搏在线为了获得更好的可用性,这些外部工具可以封装到自定义转换器中,因此用户只需处理熟悉的FME接口,而不需要了解工具所需的任何复杂语法细节。
这种集成的一般工作流亚搏在线程如下所示。请注意,依赖于工作流的大多数组件都可以被跳过(以蓝色显示)。亚搏在线唯一需要的部分是组装命令行并执行它(以红色显示)。
以下是三个最常见的场景:
上面的集成工作流图中的每个步骤都在这里进行了描述。亚搏在线
当命令行界面被transformer GUI替换时,创建看起来用户友好的参数是有意义的:与其使用简短的选项,不如使用它们的扩展描述。“带有别名的选择”用户参数允许显示这样的描述,而参数获得的值可以直接在命令行中使用。
下面是这样一个参数在命令行中的样子:
在编辑选择对话框:
并在变压器的GUI中向用户公开:
有些参数可能需要额外的处理。例如,我们可能需要通过FME“颜色选择器”(例如,“1,0.5,0.25”)来重新计算规范化的颜色集,以达到RGB24表示(255,127,63)。在这种情况下,可以使用ParameterFetcher获取参数,使用AttributeSplitter将参数分割为R、G和B部分,使用AttributeCreator将其组装成所需的字符串。更多细节见下面的SVGReader。
外部工具的路径可能需要也可能不需要作为参数发布。对于在组织中使用自定义转换器,最好在转换器的命令行中向没有经验的用户隐藏路径。FME专业人员将负责变压器的安装。如果一个工具要在组织间共享(例如通过FME Store),最好发布路径:
虽然可以使用常规的FME转换器为临时输入和输出文件生成惟一的名称,但是在TCLCaller转换器中使用特殊的TCL命令更可靠。该命令的语法如下:
FME_TempFilename
它在FME临时文件夹中创建一个具有唯一名称的空文件。
例如,如果我们想创建一个临时文件来使用ImageMagick工具,我们可以编写以下TCL表达式:
表达式将生成一个类似的名称:
C:\Users\username\AppData\Local\Temp\ ImageMagick_1453409310204_7104.png
现在,这个名称可以用于生成命令行、设置transformer参数并使用一些内容填充文件。
根据工作流的不同,可能需要将中亚搏在线间文件保存到某个临时位置,或者直接使用源文件。例如,当我们使用LAStools进行地面分类时,我们可以首先裁剪感兴趣的区域,然后只对原始点云的这一部分进行分类。另一个例子是,当LAStools不支持源格式时。在这些情况下,我们需要制作临时的LAS文件。
使用TCL命令保留的文件名(见上面)和FilenamePartExtractor转换器,我们可以创建属性,指定临时输出数据集的路径和文件的根名称:
之后,在FeatureWriter中很容易使用这些属性:
命令行可以直接写在SystemCaller转换器中,或者使用AttributeCreator作为属性,然后在SystemCaller中使用。
命令行应包括:
这里有几个例子:
"美元(IMAGEMAGICKCONVERT)” -delay $(DELAY) @Value(_ImageMagick_sequence_file) -loop $(LOOP) $(GIFOUTPUT)”
"美元(LASTOOL)” -i "@Value(_input)" -o "@Value(_lastools_temp_output)" -scale_u $(HEIGHTSTORAGESCALE) $(HEIGHTSTORAGE)"
始终确保命令中的路径和整个命令周围都有双引号——这有助于避免路径中的某些字符(如空格)可能出现的问题。
在某些情况下,组装的命令行可能会变得太长,超过允许的限制。在Windows上,限制是8192个字符。有几种可能的方法来解决这个限制。例如,与其在命令行中列出所有文件,还可以使用通配符,参见AnimatedGIFWriter示例。或者通过选择靠近根目录的FME_TEMP文件夹位置来为文件夹和文件使用更短的名称。例如,而不是C:\Users\username\AppData\Local\Temp\使用E: \ FME_TEMP \
组装好的命令行属性转到SystemCaller,它执行该过程并等待结果,然后继续处理工作区的其他部分。外部工具也可以向日志窗口报告作业或错误消息的状态。
一旦外部工具完成它的工作并产生一些输出,FME就可以使用FeatureReader将输出带回来进行进一步处理。在某些情况下,可能需要将处理后的数据与原始数据合并。
例如,LAStools不支持的格式的点云可能需要与处理过的数据连接以保存原始组件。这可以通过源和处理过的点云的X、Y和Z进行pointcloudmerge来完成。
外部流程完成后,数据被带回正常的FME工作流,我们可能需要删除临时文件。亚搏在线可以通过操作系统命令,如SystemCaller中的“del”,例如:
德尔“@ value (_lastools_temp_input)”/ Q
在某些情况下,当处理点云和栅格时,使用FMEFunctionCaller发出以下FME命令更可靠:
@Geometry (DELETE_SOURCE_DATASET)
这个变形器可以在读取几何图形后立即放置,或者稍后放置——在任何仍然存在几何图形的地方。一旦不再需要临时文件,transformer就会立即删除它——例如,如果它的几何结构在FME工作流中被破坏,或者转换结束。亚搏在线
注意,应该谨慎使用OS“del”命令和@Geometry(DELETE_SOURCE_DATASET)函数,以避免在外部进程使用原始源数据或临时文件之前或期间删除它们。
本文中描述的通用集成工作流不必放在定制的转换器中亚搏在线。然而,创建这样一个转换器可以更容易地将外部工具完成的任务与主工作区分离开来。与整个工作空间相比,调试、更新或修改单个自定义转换器要容易得多,因为整个工作空间可能非常大且复杂。这里显示的所有示例都可以通过右键单击自定义转换器并选择“Edit”轻松修改。转换器将在新的工作台选项卡中打开。了解它是如何工作的,并可以随意更改它-添加或删除选项,更改执行转换的工具,将参数转换为其他语言,或者将一些工具链接到一个单一的转换器(如果这在您的工作环境中有意义的话)。
SVG(可缩放矢量图形)是XML格式-基于矢量图像格式用于支持交互和动画的二维图形。FME支持写入SVG文件,但不支持读取。我们可以使用raster读取SVG文件图像魔术,一个免费的开源软件套件,用于显示、转换和编辑光栅图像和矢量图像文件。它可以读写超过200种图像文件格式。
注意ImageMagick不是FME的一部分。你可以从这里下载你的产品副本-http://www.imagemagick.org/
SVGReader自定义转换器允许读取一个或多个svg文件,并使用FeatureReader将它们作为raster导入FME。然后可以以任何支持的光栅格式存储光栅。请注意,某些格式可能需要调整其光栅解释(请参见光栅解释转换器)。此自定义转换器中未使用FeatureWriter。
还值得注意的是,我们如何设置背景的颜色和透明度-该参数设置为标准化的FME颜色,然后更改为ImageMagick rgba模型,其中包含attributeslift和AttributeCreator:
“rgba(@Evaluate(@floor(@Value(@color{0})*255)),@Evaluate(@floor(@Value(@color{1})*255)),@Evaluate(@floor(@Value(@color{2})*255)),$(ALPHA))”
下载模板:svgreader.fmwt公司
另一个使用ImageMagick的例子。通过添加动画GIF支持,AnimatedGIFWriter扩展了FME的编写功能。
使用FME可以更容易地创建地理参考动画,例如驾驶地图。
工作区示例显示如何将背景范围传递到动画的移动部分,以便用户不必计算动画中光栅化特征的位置。
自定义转换器使用FeatureWriter将背景和所有动画帧保存到临时PNG文件中。图像魔术将它们组合成GIF。
FME 2016不支持动画GIF,因此将文件读回并在数据检查器中显示是没有意义的。查看动画的最简单方法是通过web浏览器:
下载模板:工作之家.fmwt
大众拉斯托尔软件套件被许多组织广泛用于处理激光雷达数据。对于FME 2016,我们制作了几个定制的变压器,其中包括一些LAStools仪器。
注意,LAStools套件不是FME的一部分。你可以从http://rapidlasso.com网站/.有关定价和许可信息,请访问http://rapidlasso.com/pricing/和http://www.cs.unc.edu/~isenburg/lastools/LICENSE.txt.
LAStools_lasground_Caller调用lasground.exe,它将点分为地面和非地面。
在本例中,如果在输入转换器之前更改了源文件,或者LAStools不支持源点云格式,则使用FeatureWriter。在这两种情况下,临时LAS文件是在TEMP文件夹中创建的,lasground.exe运行在这些文件上,否则它直接与源文件一起工作:
FeatureReader始终用于将lasground.exe生成的结果返回到FME。
此工作流的一个有趣部分是将原始点云与生成的LAS文件合并亚搏在线。如果源具有LAS不支持的组件,则在lasground.exe完成其工作后,这些组件将丢失。PointCloudMerger允许将原始点云与X、Y和Z的结果结合起来:
请注意,如果工具更改了其中一个组件,则XYZ合并将不起作用。
下载LAStools包装变压器:lastoolstransformers.zip
下载模板(包含带有5个LAStools包装器转换器的工作区):拉斯托尔斯德莫.fmwt
©2019安全亚搏在线软件公司法律