SPAN8.
SPAN4.
本文是由5部分组成的系列文章的第3部分,帮助您开始基本的Python和FME。本文将介绍如何在Workbench中使用脚本化参数功能,并介绍脚本化参数的两个示例应用程序。
当我们想要在FME中基于我们从另一个或多个参数派生或计算出来的东西设置一个参数时,脚本化参数非常有用。例如,您可能希望用户选择主题或层组,并让脚本设置要在这些组中读取的各个特性类型。对于Python脚本,在FME.模块,其中一个返回FME参数及其值的字典。欲了解更多信息,请浏览Python和FME基础介绍文章.
请注意执行脚本参数之前Python启动脚本和翻译。
附件工作区:scriptedparameter1.fmwt.
scriptedparameter1.fmwt.is基于用户选择的组脚本要读取参数的读取参数的一个很好的例子。工作区模板,scriptedparameter1.fmwt,包括在内scriptedparameter_workspaces.zip.文件(参见上面的下载部分)。
此工作区将使用脚本参数选择性地读取要素类型。
使用执行命令>,提示运行查看已发布的参数。一种翻译参数将出现窗口。单击窗口中的省略号以提起选择“层”项目窗口。注意,你可以选择的图层是组:
用户通过已发布的用户参数选择要读取的功能类型。
选择走路和骑自行车并运行工作区。注意工作区读取骑自行车和普通话功能类型。
选择“步行和骑车”作为参数后,将读取自行车道和公共街道的特征类型。
让我们看看用于告诉FME这种选择的脚本参数走路和骑自行车应该将这两种特性类型都返回要读取的功能类型范围。在里面航海家窗格扩展用户参数>私有参数你会看到一个Python脚本参数叫做feature_types_to_read.注意,此参数链接到实际要读取的功能类型工作区中读取器的参数。无论脚本返回的值如何,都将由AutoCAD Reader使用才能确定要读取的要素类型。
读取参数的功能类型链接到私人脚本参数'feature_types_to_read'。
返回到脚本化参数,双击该参数,并单击省略号以打开编辑器。下面是里面使用的脚本:
import fme featureTypes = " if fme. macrovalues ['layers']. "= -1: featureTypes += '公共街道自行车道' if fme.macroValues['图层']。= -1: featureTypes += 'RapidTransitLine RapidTransitStations ' if fme.macroValues['layers']。= -1: featureTypes += 'PublicStreets Bikeways RapidTransitLine RapidTransitStations ' #Debug #print(featureTypes)返回featureTypes
你可以看到我们有一系列如果发现用户选择的图层的陈述fme.macrovalues []字典,然后设置值Featurectypes.这将被退回。最后一行是最重要的,因为这是我们“返回”脚本参数的实际值与语句:
返回featureTypes
这返回语句必须始终存在于Python脚本化的参数中,因为参数值是在这里给FME的。另外,请注意注释被删除打印函数。您可以使用打印通过将变量值返回到Translical Log窗格来帮助您调试脚本。有关使用Python的更多信息,请参阅本文:
附加的工作区:scriptedparameter2.fmwt
在写文件时,您可能希望确保输出的名称是唯一的。一种方法是使用脚本参数将日期和时间附加到输出数据集名称。附加的工作空间ScriptedParameter2.fmwt接受输出数据集名称的已发布参数,私人脚本参数将唯一值(日期和时间)附加到已发布的参数值。工作空间本身找到落在Park多边形内的积分(饮水机)并输出CSV文件。
这个工作空间将通过附加文件名转换的日期和时间来创建唯一命名的输出数据集。
打开工作区并确保用提示运行(在Run菜单下找到)已启用。运行工作区和翻译参数将出现窗口。单击“确定”以接受默认输出数据集名称。如果您希望,您可以修改翻译参数,然后输出将略有不同于如下所述。
一旦工作空间完成运行,请查看翻译日志窗格。在“日志末尾的特征”摘要下,您将看到写入的输出CSV文件的名称。它将采用以下格式:<文件名> _ <.yyyymmdd.> _ <.HHMMSS>, <文件名>是已发布参数的值(测试在示例工作区中),<yyyymmdd.>是当前日期,<HHMMSS>是转换的开始时间。
通过使用脚本参数附加日期和时间来创建唯一的输出数据集名称。
去导航>用户参数>私有参数> nameWithTime然后双击打开脚本编辑器。下面是里面使用的脚本:
导入fme模块和datetime。datetime class import fme from datetime import datetime #获取发布参数OutFileName = fme的值。#使用now()方法获取当前日期和时间#格式为YYYYMMDD_HHMMSS, strftime方法curTime = datetime.now().strftime("%Y%m%d_%H% m% S") #连接发布的参数,一个下划线,date time OutFileName = OutFileName + '_' + curTime #返回唯一的文件名,它成为脚本参数的值#这个脚本参数链接到目标数据集名称返回OutFileName
属性获取已发布参数的值fme.macrovalues []字典和当前日期和时间的调用DateTime.Now()方法。它连接两个值并返回唯一值(filename_yyyyymmdd_hhmmss.)与作家返回陈述。请记住,返回语句必须始终存在于脚本参数中。
去Navigator>输出[CSv2]>功能类型> $(name)>参数>常规> CSV文件名.请注意,CSV文件名链接到私有用户参数nameWithTime.
CSV文件名参数链接到私有脚本参数nameWithTime',它用Python创建一个唯一的文件名。
注意:在不使用脚本的Python参数的情况下,也可以将日期和时间添加到输出文件名(例如,。通过使用DateTimeNow ()在文本编辑器中可用的函数)。
有关Workbench中的日期/时间函数的更多信息,请参阅帮助文档:
对于Python中使用FME对象,您可以在此处找到Python FME对象API的完整文档:FME对象Python API
这里使用的数据来源于温哥华的城市, 不列颠哥伦比亚省。它包含根据开放政府许可证的信息 - 温哥华。
©2019 S亚搏在线afe Software Inc |合法的