本文转载来自 GISER怪谈 版权归作者所有
今天分享一个小伙伴提出的问题,小白觉得挺有意思的,所以就给大家分享一下。
这个问题小白一时不知道用怎样的表达来形容,还是用图来表达一下。
图一 问题起源 ▼
如图所示,“目标”栏中红色部分即为需要处理的部分。
过程分析
#1 我们需要做什么?
这里我们可以看到字段“A”中的出现“1,2,4”,这原本是一串递增的数组,中间缺失了“3”,在对应的字段“B”中对应的也缺失了数据。
我们需要将A字段中的递增数组补充完整,考虑到B字段与A字段的对应我们也需要将对应的B的数值也补充上去,但是由于没有数值,我们补充“0”值就好了。
#2 我们需要怎样做?
这个问题小白觉得有意思的地方在与如何理解这个过程。
用“人工智能”的方式我们交给“工具人”去做的时候我们会告诉他我们需要利用A找到“1,2,4”中缺失的值以及位置补充完整并且在B中对应的位置插入“0”。
这是一个技术交底的过程,其实用FME处理数据就是我们对机器技术交底的过程,但是机器与人最大不同就在于机器没有思维和技术经验的积累,无法自主对我们的交底进行数据处理。
所以我们需要做的是如何将我们的技术方案转换为机器的实现逻辑,让机器通过我们“交给它”的方案代替我们进行处理数据。
我们来着重分析一下技术交底:首先找到不连续的位置,其次补充不连续为连续,最后在另一个字段中的对应位置补充数据。
这样的一个过程我现在能够想到最好的比喻就是老家的“吃席”,假定一席是十个凳子,每个凳子一个编号,每个凳子对应一个人,现在我们需要保证每一席上都是10个人,但是有人“不愿意”出份子钱拒绝到场,现场留下了“空凳子”,有人觉得空凳子影响发挥,所以私下撤掉了凳子,现在我们需要对每一席的人数进行清点(这里有点不符合实际),对于没有到期的我们保留凳子,在凳子上记录上为到场的人。
这里有这样的想法就是在于这个凳子,如何加上这个位置是关键,这里小白也无法深刻理解并且说出来,就相当于数学里面的“01”和“1”的区别吧。
#3 实现过程
1、先对数据进行唯一值标记
唯一值标记是在利用FME进行数据处理的一个常用手法。处理数据的一系列操作可能对数据进行了更改,为了便于回溯数据或者是拆分合并处理后有唯一参考。无法数据中找到数据属性中已有参考的情况下,可以在处理过程之前就添加一个唯一值标记,便于后期参考引用。
|