FME中使用PythonCaller对数组进行处理(一)

FME中使用PythonCaller对数组进行处理(一)

很久没有更新博客了,实在是因为我不知道该写什么。最近虽然有一些很有意思的处理模版,但是都是从别人哪里看到的,自己改改随便拿来用,并没有形成自己的东西,不太好意思将别人的东西拿过来讲一遍,总有一种偷东西的感觉。

在FME使用过程中,有几个难以忍受的点,循环控制,数组处理。相信大家都很头痛,特别是要遍历一个数组的时候,用常规的FME方法非常繁琐,且难以实现。这个时候PythonCaller的优势就体现出来了。

本文不针对Python语法做过多的讲解,因为本次运用里面的语法真的很简单,没什么可讲的。仅仅讲解在FME使用过程中的一些基本设置。

这几个点,在safe官方的资料中比较松散,网络上也基本不见一个具体的讲解,大家讲PythonCaller的时候,基本上都是默认你已经会使用了,对FME及Python新手很不友好。所以,我想针对这块空白做一个补充。

1.运行环境

要运行Python代码首先需要设置代码的运行环境,

在FME的安装过程中,默认已经安装了Python的运行环境了。

值得注意的一点是,在FME2019版本以后,FME默认是不安装Python2.7的运行环境的,如果有需要2.7的运行环境,需要注意这一点。

本次讲解呢,为了与时俱进,我是使用的是Python3.5(其实基础语法没啥区别)

在导航栏里图下位置修改你的运行环境。为了偷懒,我就不不在文章中写了,看图就明白:
在这里插入图片描述
然后要使用PythonCaller,你需要掌握最基本的三点,怎么获取值?传递值?在哪里写代码?
在这里插入图片描述
根据官方给出的解释,在上图3的位置是在处理比较复杂的逻辑时定义的方法区,4位置为代码运行区,(图片的文字描述不太行,我真的不知道该怎么去取名字。)本次博客的处理逻辑比较简单,基本上都是在4区书写。

2.从FME中获取值,设置值,及输出值的方法

在用PythonCaller对FME进行数据处理,我们是要根据PythonCaller前一个转换器输入的值进行处理,然后将我们需要的结果传递给下一个转换器,PythonCaller可以看作是我们封装的一个处理数据的自定义转换器。它并不是一个独立的代码区,就绕不开从FME中获取值,设置值,及输出值。

从FME中获取属性值的方法为“feature.getAttribute()”,

从FME中获取参数值的方法为“FME_MacroValues[]”,

设置要素的值为“feature.setAttribute(‘a’,b)”,其中要素名称为a,值为b。

具体,我们可以看一个小例子

用Creator转换器链接一个PythonCaller,创建一个要素,属性名为“featureValue”,值为“0”;并且设置一个发布参数,名为“parmeterValue”,值为“1”。

设置代码如下:
在这里插入图片描述
在这里插入图片描述
然后在PythonCaller的Output Attributes选项设置暴露参数c和d,运行模版,查看输出结果就可以看到,我们已经将属性a和参数b的值分别赋值给了c和d。
在这里插入图片描述
好了,恭喜你,你已经学会了如何在PythonCaller中运行Python代码了,我已经没有什么可教的了,剩下的都是学语言的事情了.

下面就是结合实际的几个运用

3.PythonCaller创建数组

这个小案例主要是运用feature.setAttribute()去创建数组属性的方法,不多说,直接上代码:
在这里插入图片描述
然后在Output Attributes选项设置暴露数组b,写法如下:
在这里插入图片描述
查看运行结果:
在这里插入图片描述

4.在已有数组中添加新的值

还是feature.setAttribute()的用法
在这里插入图片描述
运行结果如下:
在这里插入图片描述
可以看到,我已经在原本存在的数组后面增加了新的值,且该值不受数据类型限制。

5.在已有数组中添加新的值

这个案例主要是想说一下self.pyoutput(feature)的用法,每当self.pyoutput(feature)则会输出一次属性值。
在这里插入图片描述
查看运行结果,生成了13个要素,每个要素都有一个d属性,其值对应的该数组每一个要素的值。
在这里插入图片描述
其实,排除掉python基本语法之后,PythonCaller在数组处理的基本知识。常用的就这么点。灵活的掌握for 循环和feature.setAttribute()与self.pyoutput(feature)可以将FME的大多数数组处理玩出花来。

本次文章仅仅讲解在基本用法,至于实际案例,下次我会讲几个比较有意思的运用案例。然后与纯FME操作进行对比,让大家有个直观的感受。

最后,附上本文模版链接:
链接:
https://pan.baidu.com/s/10SfjIz5ArCrunO-wJbavKw
提取码:
wegp
在这里插入图片描述

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值