教程(四)——PythonCaller转换器

文内模板下载链接

https://pan.baidu.com/s/1FADN2Jb2cicCLEMZYD8DYA 

提取码:2021

 

 

前言

本文是五篇系列文章中的第四篇,主要介绍了如何在FME Workbench中使用PythonCaller转换器,并且分别列举了不同应用情景下使用函数或类的PythonCaller转换器的的三个示例。

介绍

除了脚本化参数外,FME中还提供了PythonCaller转换器同样可以通过编写Python脚本对要素或要素组进行操作。当然,通常情况下FME中的转换器已经足够我们完成我们想要的任务功能,所以一般情况下,我们建议优先使用FME自带的转换器,当确实没有转换器可以完成要执行的任务时再考虑使用PythonCaller转换器。

让我们来简单了解一下PythonCaller转换器。首先,PythonCaller转换器可以调用函数,您可以直接使用它来处理某一要素,也可以在一个类中调用该功能,以对一组要素进行处理。此外,PythonCaller可以使用完整的FME对象,包括许多方法和类。

PythonCaller可以通过两种不同的方式与Python脚本对接,一种是通过函数,一种是通过类。当我们打算一次处理一个要素时,请使用函数接口,而使用类接口可以提升程序处理的灵活性。

FME对象和Python

通过使用FME Objects Python API中的FME类和方法,可以在Python脚本中使用FME的许多核心功能。

示例1 通过Python函数给要素添加属性

(示例模板:PythonCaller1.fmw

同所有转换器一样,FME Workbench在“参数编辑器”窗口中包含了用于特定转换器的帮助按钮。在这里,我们将尝试使用帮助文档里“函数接口示例”部分下(如下图)包含的一部分示例代码为要素添加时间戳。当然,这并不是PythonCaller的理想用法,因为我们完全可以使用FME已有的 DateTimeStamper转换器完成此任务。不过,这确实可以简单直观地演示如何使用PythonCaller转换器。

这里您可以使用该示例代码通过创建自己的工作空间来进行练习,也可以查看我们提供地示例模板(PythonCaller1.fmw)来进行演示练习。

PythonCaller转换器帮助文档中的PythonCaller函数接口示例

 

下面让我们来具体实现一下。首先,让我们来找一下PythonCaller转换器的脚本编辑器。我们需要将PythonCaller转换器添加到我们的工作空间中并双击它。这时我们就可以看到位于弹出窗口左下方的“参数编辑器”按钮了,如果没有找到它,我们也可以从菜单栏中“视图”>“ Windows”>“参数编辑器”中将其打开(如下图)。

有关如何访问PythonCallerPython脚本编辑器窗口的说明

 

接下来,单击如上图所示的“ Python脚本”参数右边的省略号以打开代码编辑器。需要注意的是,代码编辑器里已经有一个模板函数和类了,所以我们需要删除类模板,因为我们现在仅想使用一个函数。然后我们需要重命名函数为timestampFeature,并从PythonCaller帮助页面“函数接口示例”部分或下面的代码中复制代码到代码编辑器里。您可能需要在代码中添加一些换行符和缩进,使它看起来像下面这张图这样。(注意,缩进在Python中很重要):

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值