Python与FME(一)

编程知识 更新时间:2023-04-05 13:03:51

原文发布时间: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(一)

本文发布于:2023-04-05 13:03:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/2b1af7b8cfcd941bdbda8cf2998041c2.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Python   FME

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 46301文章数
  • 14阅读数
  • 0评论数