原文发布时间:2010-11-24
作者:OLIVER
翻译:乱马
1 摘要
本文将指导大家使用FME的PythonCaller和PythonCreator。这将使用Python语言编程定义自己的功能来扩展FME的功能。本文的重点在于,在FME中嵌入Python代码,而不是在Python中嵌入FME。
开始本文前,你可以去看一下相关文章Python with FME。
2 安装PYFME
根据Python with FME中的介绍,对于FME Object API的Python编译模块,称为PYFME。
如果在安装FME之前就安装Python,那么就无需在安装FME之后再去做什么,因为FME在2008版本之后的安装程序都会找到已安装的Python,并且复制相关所需文件到正确的路径下。
你可以用Python的命令行来检查你的安装,在Python命令行中输入:
>>>import pyfme
>>>dir(pyfme)
如果一切都是正确的,你将会看到如下显示:
['FMEBridge', 'FMEBridgePtr', 'FMECoordSysManager', 'FMECoordSysManagerPtr', ... ]
如果你得到的是出错信息,你就需要自己手动安装pyfme。请不要担忧,这个过程很简单。
在你的FME安装目录下,例如C:\Program Files\FME2010\,你能够找到子目录fmeobjects,你将会发现一些子目录,如下所示:
\python
\python23
\python24
\python25
\python26
在目录\python23和\python24下面,是如下两个文件:
_pyfme.dll
pyfme.py
在\python25和\python26下面,是如下两个文件,这里使用了_pyfme.pyd这个新型的库文件代替了_pyfme.dll。
_pyfme.pyd
pyfme.py
不论是哪种类型,以上两个文件,就包含了所有你需要使用pyfme进行工作的内容。其中,不同目录带有的数字,针对了特定的python版本。
\python23 --> Python 2.3.x
\python24 --> Python 2.4.x
\python25 --> Python 2.5.x
\python26 --> Python 2.6.x
着意味着pyfme只能运行于特定的版本,而不能运行于其他版本。
只要复制以上两个文件到相应版本Python的安装路径 .\Lib\site-packages下,如:
C:\Python24\Lib\site-packages\_pyfme.dll
C:\Python24\Lib\site-packages\pyfme.py
或者
C:\Python26\DLLs\_pyfme.pyd
C:\Python26\Lib\site-packages\pyfme.py
从FME 2009(build 5573)开始,FME就带有内嵌的Python编译器和标准Python库的子集(被称为“FME Python”)。这意味着用户不需要单独安装Python,就可以使用PythonCreator和PythonCaller函数,及Startup Python和Shutdown Python脚本。
根据Mark的Wiki门户(The FME Evangelist)中的文章,Python 的“子集”, 是除了以下两个部分的Python库:
- tkinter - the Python interface to the Tk GUI toolkit and
- bsddb - the Python interface to the Berkeley DB library
但是你不会去用到它们。
嵌入的Python编译器位于$FME_HOME/fmepython26下。正如你看到的,这个是Python 2.6版本。如果你需要其他版本的Python,如2.3或者2.4,你必须按照上面的方法安装。
这个内嵌的编译器,会被作为默认选择来使用。如果你需要使用自己安装的Python 2.6,你需要复制_pyfme.pyd和 pyfme.py这个两个文件。这个新特性是为了避免安装了两个不同版本的FME引起的冲突。
可以按照上面的方法去检查一下你的安装。
如果需要更详细的安装信息,可以在FME安装目录下面去看一下PyFME Setup,例如:
C:\Program Files\FME2010\fmeobjects\python\apidoc\setup.html
或者可以去读一下:PyFME – A Python wrapper for FME Objects。
2.1 关于32/64位的问题
请注意,不要混合使用64位FME版本在32位Python下,或者反过来使用。如果你安装了64位的FME,那么会内嵌带有64位Python的库,如果你要想使用独立安装的Python,请安装64位的版本。
3 样例数据
在本文的结尾,你会发现一个ZIP文件,在其中包含一下样例数据集,带有少量的要素。这些数据是以德国某地的数据,加工制作而成。
样例数据是针对本文的例子的。也可以使用你自己的数据,有可能有些代码例子用的你的数据,不会运行成功。
文章结尾还提供一个ZIP文件,包括了例子中的Python代码。
说明:
1) 原文来自Oliver's Python Corner,地址:http://www.fmepedia/index.php/Oliver's_Python_Corner;
2) 运行环境:python 2.6,fme 2010 sp3,环境不同有些代码可能会不一样,或者无法执行。
更多推荐
Python与FME(一)
发布评论