斯潘8
第4排
本文是由5部分组成的系列文章的第3部分,旨在帮助您开始基本的Python和FME。本文将在Workbench中使用脚本化参数功能,并包含脚本化参数的两个示例应用程序的演练。
当我们想要在FME中基于从另一个或多个参数派生或计算的内容设置参数时,脚本化参数非常有用。例如,您可能希望用户选择主题或层组,并让您的脚本设置要在这些组中读取的单个功能类型。对于python脚本,许多FME变量在FME模块,其中一个返回FME参数及其值的字典。更多信息,请查看python和fme基础介绍文章.
请注意,已执行脚本化参数之前python启动脚本和翻译。
附加工作区:脚本参数1.fmwt
scriptedParameter1.fmwt是根据用户选择的组编写功能类型脚本以读取参数的好例子。工作区模板,脚本参数1.fmwt,包含在scriptedParameter\u workspaces.zip文件(请参阅上面的下载部分)。
此工作区将有选择地使用脚本参数读取功能类型。
使用运行>运行提示查看已发布的参数。A转换参数窗口将出现。单击窗口中的省略号以显示选择“层”项窗口。请注意,可以从中选择的层是组:
要读取的功能类型由用户通过发布的用户参数选择。
选择步行和骑自行车运行工作区。注意,工作区读取自行车道以及公共街道特征类型。
选择“步行和骑自行车”作为参数后,将读取自行车道和公共街道的功能类型。
让我们看一下用于告诉FME选择步行和骑自行车应将这两种功能类型返回到要读取的功能类型参数。在领航员窗格展开用户参数>私有参数您将看到一个名为功能类型.请注意,此参数链接到要读取的功能类型工作区中读卡器的参数。脚本返回的任何值都将由AutoCAD Reader用于确定要读取的功能类型。
要读取参数的功能类型链接到专用脚本参数,“Feature”(功能)键入“to”(读)。
返回脚本化参数,双击它,单击省略号打开编辑器。下面是内部使用的脚本:
导入fmeFeatureTypes='if fme.macrovalues['layers'].查找(“步行和骑自行车”)!=-1:FeatureTypes+='PublicStreets Bikway'如果是fme.macrovalues['layers']。查找('rapid transit')!=-1:FeatureTypes+='RapidTransitLine RapidTransitStations'如果是fme.macrovalues['layers'].查找(“所有方法”)!=-1:FeatureTypes+='PublicStreets Bikway RapidTransitLine RapidTransitStations'调试打印(FeatureTypes)返回FeatureTypes
你可以看到我们有一系列如果语句,找出用户使用宏观价值观字典,然后设置特征类型将被退回。最后一行是最重要的,因为这是我们用语句“返回”脚本参数的实际值的地方:
返回特征类型
这个返回语句必须始终存在于python脚本化参数中,因为这里的参数值是给定给fme的。也,注意注释掉了打印功能。你可以用打印函数通过将变量值返回到翻译日志窗格来帮助调试脚本。有关使用python进行日志记录的更多信息,请参阅本文:
附加工作区:scriptedParameter2.fmwt
写入文件时,您可能希望确保输出的名称是唯一的。一种方法是使用脚本化参数将日期和时间追加到输出数据集名称。附加的工作区脚本参数2.fmwt接受输出数据集名称的已发布参数,私有脚本参数将唯一值(日期和时间)附加到已发布参数值。工作空间本身会找到位于公园多边形内的点(饮水机),并输出一个csv文件。
此工作区将通过附加文件名转换的日期和时间来创建唯一命名的输出数据集。
打开工作区并确保提示运行(在运行菜单下找到)已启用。运行工作区和转换参数窗口将出现。单击“确定”接受默认输出数据集名称。如果愿意,可以修改翻译参数,然后输出将与下面描述的略有不同。
工作区运行完成后,请查看“翻译日志”窗格。在日志末尾的功能摘要下,您将看到输出csv文件的名称。它将采用以下格式:<文件名><YYYYMMD><HHMMSS>哪里<文件名>是已发布参数的值(测试在示例工作区中,<YYYYMMD>是当前日期,和<HHMMSS>是翻译的开始时间。
通过使用脚本参数附加日期和时间来创建唯一的输出数据集名称。
去导航器>用户参数>专用参数>名称随时间变化双击打开脚本编辑器。下面是内部使用的脚本:
#import fme module and date time.date time classimport fmefrom date time import date time获取已发布参数的值outfilename=fme.macrovalues['outfilename']使用now()方法获取当前日期和时间格式日期为y y y y m m d d_h h m m s s,strftime methodcurtime=date time.now().strftime(“%y%m%d_u%h%m%s”)连接p已发布参数,下划线,日期timeoutfilename=outfilename+''+curtime返回唯一文件名,该文件名成为脚本参数的值此脚本参数链接到目标数据集name返回outfilename
脚本使用宏观价值观通过调用字典和当前日期和时间日期时间方法。它连接两个值并返回唯一值(文件名_yymmdd_hhmmss)给作家的返回声明。记得,RETURN语句必须始终存在于脚本化参数中。
去导航器>输出[csv2]>功能类型>$(namewithtime)>参数>常规>csv文件名.注意,csv文件名链接到private用户参数命名时间.
csv file name参数链接到私有脚本参数name WithTime',它用python创建一个唯一的文件名。
注意:如果不使用脚本化的python参数(例如,通过使用日期时间现在()在文本编辑器中可用的函数)。
有关Workbench中日期/时间函数的更多信息,请参阅帮助文档:
在python中使用fme对象,您可以在这里找到python FME对象API的完整文档:fme对象python api
此处使用的数据源于温哥华市,请不列颠哥伦比亚省。它包含根据开放政府许可证(温哥华)获得许可的信息。
?2019安全亚搏在线软件公司|合法的