你在这里: 亚搏在线工作流 > PythonCaller

PythonCaller

执行Python脚本来操作该特性。

当需要专门化任务时,例如自定义属性的统计分析,但是Workbench没有提供适合该任务的转换器时,Python脚本可以对特性的几何形状、属性和坐标系统执行专门化和复杂的操作。

注意: 使用Python对特性执行任意操作是Workbench的一个强大方面。然而,引入到工作区的逻辑不太可见,因此可能比使用Workbench的内置转换器构建的逻辑更难维护。如果可能,建议使用其他转换器来代替Python脚本。

属性、几何图形和坐标系统信息的访问通过FME对象Python API

接口模式

Python调用者可以通过两种不同的方式与Python脚本进行接口:通过函数或类:

  • 当您打算一次处理一个特性时,请使用函数接口。
  • 使用类接口可以获得更大的灵活性。

当您希望一起操作一组功能部件时,例如收集所有接收到的功能部件,然后以特定的排序顺序输出它们,类接口是非常有用的。另一个常见的用例是积累所有的特性,对整个集合执行一个操作,然后将所有的特性以一个计算值作为新属性输出。

函数接口的例子

Python调用者将使用一个参数调用Python函数:一个FMEFeature对象。

函数将被调用到输入端口的每个FMEFeature。然后,该特性将通过输出端口通过工作区管道继续执行。

函数的返回值将被PythonCaller忽略。任何引发的异常都将终止翻译。任何引发的FMEException都将被记录为一个错误,并将终止翻译。

下面的例子为每个特性添加了一个字符串属性,并将其设置为当前时间:

进口fmeobjects
导入的时间

          
def timestampFeature(特征):
curTime = time.ctime (time.time ())
特性。setAttribute("timestamp", curTime)

类接口示例

PythonCaller将调用该类上的两个方法:input()和close()。对于进入输入端口的每个FMEFeature,都将调用input()方法。当不再保留FMEFeatures时,将调用close()方法。需要在工作空间中继续进行进一步处理的特性必须使用pyoutput()方法显式地写出来。

类接口可以对一组特性进行操作,而不是一次处理一个传入的特性。这是通过将传入的特性存储在一个列表中,然后在输出之前一次性处理它们来实现的。

下面的例子计算了所有处理过的特征的总面积,然后用包含总面积的新属性输出所有特征:

进口fmeobjects

          
类FeatureProcessor(对象):
def __init__(自我):
自我。featureList = []
自我。totalArea = 0.0

          
def输入(自我,特性):
self.featureList.append(功能)
自我。totalArea += feature.getGeometry().getArea()

          
def关闭(自我):
对于self。featurelist中的feature:
特性。setAttribute("total_area", self.totalArea)
self.pyoutput(功能)

脚本编辑

PythonCaller transformer可以调用存储在transformer本身中的脚本,也可以调用全局存储在整个工作空间中的脚本:

  • 要使用特定的Python调用者转换器存储Python脚本,请在转换器中使用Python脚本参数。
  • 要全局存储Python脚本,请在导航器中单击Advanced Workspace参数,然后双击启动Python脚本。全局存储脚本的优点是保持Python逻辑的集中化,这使得编辑和维护更加容易。当工作空间中有多个使用相同脚本的PythonCaller转换器时,这是很有用的。有关更多信息,请参见启动和关闭Python脚本在FME工作台帮助。

FME可以访问. py存储在文件系统上的模块,包括外部Python库中的模块。使用Python“import”命令来加载这些模块。FME将搜索标准Python模块位置和工作区位置,以查找要导入的模块。

参数

依赖关系

指定Python解释器

FME安装包括Python版本2.7和Python版本3.5解释器。用于Python处理的默认Python解释器是Python 2.7解释器。FME对象Python API支持Python 2.7、Python 3.4和Python 3.5。

类控制FME用来执行Python脚本的Python解释器Python的兼容性工作区参数和喜欢Python解释器设置工具> FME选项>翻译。

Python的兼容性指定与Python脚本兼容的Python版本。FME加载喜欢Python解释器如果它是兼容的Python的兼容性。如果不是,则FME加载一个适当的Python解释器匹配Python的兼容性

有关更多信息,请参见FME工作台帮助。

安装Python包

如果您想在FME中安装Python使用的第三方包,请参阅在FME桌面安装Python包在FME工作台帮助。

编辑变压器参数

使用一组菜单选项,可以通过引用工作空间中的其他元素来分配transformer参数。更高级的功能,如高级编辑器和算术编辑器,也可以在一些转换器中使用。要访问这些选项的菜单,请单击在可适用的参数旁边。有关更多信息,请参见变压器参数菜单选项

变压器的分类

亚搏在线工作流

FME授权级别

FME专业版及以上

搜索FME知识中心

有关此变压器的示例和信息,请参阅FME知识中心