span8
span4
本文是由5部分组成的系列文章的第3部分,帮助您开始学习基本的Python和FME。本文是关于在Workbench中使用脚本化参数功能的,并包括一个脚本化参数的两个示例应用程序的演练。
当我们希望根据从另一个或多个参数派生或计算的内容在FME中设置参数时,脚本化参数非常有用。例如,您可能希望用户选择主题或层组,并让您的脚本设置要在这些组中读取的各个特性类型。对于Python脚本,在FME模块,其中一个返回FME参数及其值的字典。有关更多信息,请查看Python和FME基础知识介绍文章。
请注意脚本化的参数被执行之前Python启动脚本和翻译。
附加工作区:ScriptedParameter1.fmwt
ScriptedParameter1.fmwt是根据用户选择的组编写脚本以读取参数的功能类型的一个很好的示例。工作区模板,ScriptedParameter1.fmwt,包括在ScriptedParameter_Workspaces.zip文件(参见上面的下载部分)。
此工作区将选择性地与脚本参数读取特征类型。
使用运行>与提示符下运行以查看发布的参数。一个转换参数窗口将会出现。单击窗口中的省略号打开选择“图层”项目窗口。注意,你可以选择的层是组:
特征类型,以读出由用户通过一个用户发布的参数来选择。
选择步行和骑自行车并运行工作区。请注意,工作区同时读取了自行车道和PublicStreets功能类型。
的自行车道和PublicStreets特征类型被选择“徒步与单车”作为参数后读取。
让我们看看用于告诉FME选择的脚本化参数步行和骑自行车应该将这两种功能类型都返回到特征类型为READ参数。在航海家窗格扩展用户参数>私人参数您将看到一个名为的Python脚本化参数feature_types_to_read。请注意,此参数链接到实际的特征类型为READ工作区中阅读器的参数。无论脚本返回什么值,AUTOCAD阅读器都将使用它来确定要读取的特性类型。
要读取参数的特性类型链接到私有的脚本化参数“feature_types_to_read”。
返回脚本化的参数,双击它,然后单击省略号打开编辑器。下面是内部使用的脚本:
导入fme功能类型= " if fme. macrovalues ['layers'] "。find('Walking and Biking') != -1: featureTypes += 'PublicStreets Bikeways ' if fme.macroValues['layers'].find('Rapid Transit') != -1: featureTypes += 'RapidTransitLine RapidTransitStations ' if fme.macroValues['layers'].find('All Methods') != -1: featureTypes += 'PublicStreets Bikeways RapidTransitLine RapidTransitStations ' #Debug #print(featureTypes) return featureTypes
你可以看到我们有一系列如果语句其中发现该层中的用户使用所述选择fme基金。macroValues[ ]字典,然后设置的值featureTypes这将被退回。最后一行是最重要的,因为这是我们“回归”的发言脚本参数的实际值:
返回featureTypes
这个返回声明必须始终存在在Python脚本参数,因为它是这里的参数值是给FME。此外,通知注释掉打印功能。您可以使用打印功能可帮助用户通过返回变量值的转换日志窗格调试脚本。欲了解更多与Python记录看到这篇文章:
附加工作区:ScriptedParameter2.fmwt
当写文件时,您可能希望确保您的输出是唯一命名的。这样做的一个方法是使用脚本参数追加的日期和时间,输出数据集的名称。所附的工作区ScriptedParameter2.fmwt接受输出数据集的名称和一个私人脚本参数发布的参数追加一个唯一的值(日期和时间)所公布的参数值。工作区本身找到落在公园多边形内并输出CSV文件的点(饮水机)。
该工作区将通过附加文件名转换的日期和时间来创建唯一命名的输出数据集。
打开工作区,并确保运行提示(Run菜单下找到)启用。运行工作区和转换参数窗口将会出现。单击确定以接受默认的输出数据集的名称。您可以修改转换参数,如果你愿意的话,那么输出会比下面描述的略有不同。
看看翻译日志窗格一旦工作区已经完成运行。根据该特点在日志的末尾书面总结,你会看到写入的输出CSV文件的名称。这将是以下格式:<文件名> _ <名称> _ <HHMMSS>,其中<文件名>是所公布的参数(值测试在示例工作区),<名称>是当前日期,和<HHMMSS>是翻译的开始时间。
通过使用脚本化的参数追加日期和时间来创建唯一的输出数据集名称。
前往导航>用户参数>私有参数> nameWithTime并双击打开脚本编辑器。下面是内部使用的脚本:
#导入FME模块和日期时间进口datetime.datetime类进口FME日期时间#获取发布的参数OutFileName = fme.macroValues [“OutFileName”]#使用的价值现在()方法来获得当前的日期和时间#格式化日期 as YYYYMMDD_HHMMSS with strftime method curTime = datetime.now().strftime("%Y%m%d_%H%M%S") # Concatenate the published parameter, an underscore, date time OutFileName = OutFileName + '_' + curTime # Return unique file name which becomes the value of the scripted parameter # This scripted parameter is linked to the destination dataset name return OutFileName
该脚本使用公布的参数的值变fme.macroValues []字典和当前的日期和时间通过调用datetime.now ()方法。它加到两个值并返回独特价值(fileName_YYYYMMDD_HHMMSS)与作家返回声明。请记住,return语句必须在脚本参数存在。
前往导航>输出[CSV2] >功能类型> $(nameWithTime) >参数>通用> CSV文件名。请注意CSV文件名是链接到私人用户参数nameWithTime。
CSV文件名参数链接到私有脚本化的参数nameWithTime',该参数使用Python创建惟一的文件名。
注:添加日期和时间到一个输出文件名,也可以不使用Python的脚本参数(例如。通过使用DateTimeNow ()功能可在文本编辑器)。
有关日期/时间功能在工作台的更多信息,请参阅帮助文档:
对于使用Python FME对象,你可以找到Python的FME的完整文档对象这里API:FME对象Python API
这里使用源自从公开数据中的数据由提供温哥华的城市, 不列颠哥伦比亚省。它包含了开放政府许可协议进行许可信息 - 温哥华。
©2019安全亚搏在线软件公司法律