Python与FME(一)

原文发布时间: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.com/index.php/Oliver's_Python_Corner

    2) 运行环境:python 2.6,fme 2010 sp3,环境不同有些代码可能会不一样,或者无法执行。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值