这种问题解决方法有很多,比如:可以使用递归,我们写一个函数,功能如下:使用表2中的上手编号在表2中的档案号中进行查找;判断该档案号是否有上手编号;如果有继续调用我们写的函数自身,如果没有,则递归结束,返回需要的一串编号的值。
虽然上述方法大概能够解决这个问题,但是我们可以使用FME来优雅的、巧妙的解决这个问题,解决方式如下:
如果我们需要的是一个这样的编号串:编号,上手编号,上上手编号,上上上手编号……那么应该怎么做呢?
我看到这两张表,第一反应就是,如果第一张表可以用点来表示,那么第二张表就是线段。编号与上手,上手与上上手,这两条线段的共有节点就是上手这个节点,我们可以根据这样的关系,将短的线段连接起来,形成长线段,长线串起的一串节点对应的编号,就是我们需要的值(我问了兜兜,不存在什么重复,也就是说,不会有三条线段共用一个节点)。
所以,这就将问题转换成了我FME能够处理的、并且不那么复杂的问题(可能有点绕啊,不过没关系,多看两边就懂了)
魔板截图
通过观察,编号都是是一个字母加上两位数组成的。那么我们就根据这个规律生成所需要的点。
在原点处创建一个点
这个使用python简单点,所以就用了
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):
l1 = list('QWERTYUIOPASDFGHJKLZXCVBNM')
l1.sort()
l2 = list(range(26))
ll = tuple(zip(l1,l2))
for i in ll:
for k in range(1,100):
feature.setAttribute('x',i[1])
feature.setAttribute('y',k)
feature.setAttribute('att','%s%02d'%(i[0],k))
self.pyoutput(feature)
def close(self):
pass
因为表1与表2展示的数据没找兜兜要,所以就不连了,今天到此结束。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有