免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 3434|回复: 10
收起左侧

教程(一)——Python和FME基础

[复制链接]

665

主题

2万

铜板

34

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
20649

精华勋章爱心勋章地信专家组贡献勋章冰雪节勋章

发表于 2021-3-16 14:30 | 显示全部楼层 |阅读模式
前言

本教程共包含五篇难度依次渐进的系列文章,依次向大家介绍了Python编程语言,以及Python在FME中的主要应用,即启动Python脚本,脚本化参数,PythonCaller / PythonCreator转换器和关闭Python脚本等。

而本文是五篇系列文章中的第一部分,将向您系统地介绍Python编程语言,以及在FME Workbench中使用Python的基本信息,旨在帮助您开始接触和使用最基本的Python与FME。

Python介绍

Python是一种可以在FME中使用的编程语言,它的主要功能在于可以在FME运行之前或之后完成新的任务,或在FME中执行FME工具和转换器无法完成的任务*。例如,您可以使用Python脚本在数据进行转换之前或之后移动该数据。

在FME中4种常见的使用Python的情况:

(1)启动Python脚本

(2)脚本化参数

(3)PythonCallerPythonCreator转换器

(4)关闭Python脚本

(*注意:FME中有许多转换器可以执行几乎所有您可以想到的任务,而无需借助脚本。所以您在考虑编写Python脚本以在FME中执行某些操作前,可以先查询是否有现成的转换器可以直接使用。)

Python编程资源

网上有很多免费的资源和书籍可供我们学习Python语言,在这里我们推荐几个资源网址:

FMEPython解释器

FME针对不同的系统将使用不同的解释器。在Windows系统环境下,除非另有说明,否则FME将安装自己的Python解释器,供FME在Windows上运行的所有Python脚本使用。而在Mac和Linux系统上,FME则会使用系统Python解释器。



如果您希望FME使用其他Python解释器的话,您可以在FME Workbench菜单中的“工具”> “FME选项”>“转换”下自定义选择您的FME要使用哪个Python解释程序进行翻译。可供选择的解释器(如图)包括:FME自己的Python解释器,Esri ArcGIS解释器或自定义解释器等。

FMEPython兼容性

FME与许多版本的Python均兼容,您可以通过“工作台导航”窗口中的“ Python兼容性”参数指定对Python版本的兼容性级别(如图)。例如,Python 3.0中引入了对Python 2.x不向后兼容的重大更改,因此通过该参数为您的工作区设置最佳兼容级别很重要。

值得注意的是,从FME 2019开始,Python 2.7将是Windows平台的可选安装组件,需要用户自定义是否需要安装。


(注意:工作区“导航器”窗口中的“ Python兼容性”参数应优先于“ FME选项”中的“ Python解释器”设置。)

Python脚本中的FME变量

FME启动和关闭脚本中提供了许多与FME相关的Python变量,例如,fme.status变量在转换结束时为true或false,取决于工作空间的成功或失败,而这些变量可在FME模块中通过语句import fme来进行访问。

此外,“启动”和“关闭” Python脚本的FME变量的完整列表可以在Workbench中的“启动”和“关闭” Python脚本的“帮助”页面上找到。

Python脚本中的FME参数

与FME相关的变量之一,fme.macroValues [],是关于运行工作区时已知的每个FME参数的字典。其中,字典由参数名称进行索引并保存参数值。

这些参数值通常会在Python脚本中被使用,例如,当您想知道读模块或其他用户自定义参数中使用的源数据集的文件路径时,您就可以通过访问该变量fme.macroValues []获得。

例如,如果要获取AutoCAD格式读模块的源数据集参数的值,并且该参数名为SourceDataset_ACAD,则可以像这样在Python中访问此参数:

import fme

SourceDataset = fme.macroValues['SourceDataset_ACAD']


我们还可以通过创建脚本化参数,并基于脚本的返回值来设置FME参数。当我们运行工作空间时,脚本参数将在启动脚本之前按照在导航器窗口中的出现顺序执行。

FME对象和Python

通过使用FME Objects Python API中的FME类和方法,可以在Python脚本中使用FME的许多核心功能。例如,您可以通过API访问FME日志文件,FME参数或使用任何FME方法,例如getAreareproject等。而要在Python脚本中使用FME对象,您将需要使用以下语句导入FME对象:


import fmeobjects

您可以在这里找到FME Objects API的相关文档:http://docs.safe.com/fme/html/fmepython/

您可以参阅这里获取有关如何使用FME对象的指导:https://community.safe.com/s/art ... d-i-use-fme-objects

您可以在这里找到有关FME Objects Python API的更多信息:https://community.safe.com/s/art ... cts-api-in-fme-2012

您可以在这里查看关于2012年6月Python网络研讨会的记录:https://www.safe.com/webinars/python-scripting-in-fme/


本文转载来自CSDN作者:fmechina  版权归作者所有

原文链接:https://blog.csdn.net/fmechina/a ... 1001.2014.3001.5501


206

主题

1万

铜板

25

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
38662

灌水勋章宣传勋章贡献勋章活跃勋章

QQ
发表于 2021-3-16 20:48 | 显示全部楼层
谢谢分享
回复

使用道具 举报

10

主题

2万

铜板

34

好友

黄金会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
4394

精华勋章灌水勋章活跃勋章贡献勋章

发表于 2021-3-16 21:16 | 显示全部楼层
谢谢分享
回复

使用道具 举报

3

主题

2607

铜板

0

好友

助理工程师

Rank: 5Rank: 5

积分
181

冰雪节勋章

发表于 2021-3-23 16:00 | 显示全部楼层

谢谢分享
回复

使用道具 举报

0

主题

1361

铜板

1

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
86
发表于 2021-5-13 10:56 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

3万

铜板

10

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
6105
发表于 2021-12-6 14:50 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

1047

铜板

4

好友

助理工程师

Rank: 5Rank: 5

积分
399
发表于 2022-8-12 16:58 | 显示全部楼层
感谢分享
回复

使用道具 举报

1

主题

3554

铜板

12

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2007
发表于 2024-6-13 16:52 | 显示全部楼层
学习学习
回复

使用道具 举报

33

主题

4万

铜板

19

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
10843

活跃勋章

发表于 2024-7-9 08:43 | 显示全部楼层
谢谢分享
回复

使用道具 举报

3

主题

1万

铜板

10

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1566
发表于 2024-7-9 09:11 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表