在FME中使用循环的另一种方式

2019-07-31 16:44:30 浏览数 (1)

循环

循环可以让很多数据处理的工作变得简单。透过循环,也可以让FME魔板更加简洁! 在之前的推送使用FME沿线生成点(二)中,使用了循环来沿着线来均匀的生成点。今天,我们使用另一种方式来完成相同的操作啊!

思路如下:

1、使用Creator生成一条线,参数:((0,0),(10,0)),并添加NUM字段;

2、使用Python,通过循环生成所需参数;

在这里,首先计算要生成的点数、分割比例,与生成间隔;

3、在指定位置生成点!

使用Snipper生成,设置方式与之前的推送基本一致。

运行概览:
核心代码:
代码语言:javascript复制
import fme
import fmeobjects
# Template Function interface:

# When using this function, make sure its name is set as the value of# the 'Class or Function to Process Features' transformer parameter

def processFeature(feature):
   pass
# Template Class Interface:

# When using this class, make sure its name is set as the value of# the 'Class or Function to Process Features' transformer parameter

class FeatureProcessor(object):
   def __init__(self):
       pass
   def input(self,feature):
       num = int(feature.getAttribute('NUM'))
       att = 100.0/(num-1)
        for i in range(num):
           pct = 0 att*i
           feature.setAttribute('pct',pct)
           self.pyoutput(feature)
    def close(self):
       pass
其他

转换器截图:

虽然FME自带循环也可以,不过,有没有觉得这种方式更优雅呢??

各位,周末愉快!

0 人点赞