年底了,又到了甲方爸爸发力的时候,所以小白最近都在陪甲方爸爸。
许久没有更新,害怕各位看官老爷忘了小白,所以今天给各位大老爷分享一个利用FME提取坐标串并转点的方法。
#1 需求是什么?
问题比较简单,来源于一个交流群的群友,将下图中的坐标值提取出来并转化为点。
图一 坐标串数据样式 ▼
已经get了相关方法的同学可以略过,有其他方法的同学有新的方法可以私聊小白指点小白一下,暂时还没有头绪的小伙伴可以上手测试一下。
#2 问题分析
FME软件使用最重要的是处理数据的流程逻辑,这个问题中需要操作两步: ​
第一步:提取坐标值; 第二步:对坐标串转点。
方法一 利用JSONFragmenter提取坐标串
图二 JSONFragmenter转换器参数设置 ▼
图三 JSONFragmenter转换器帮助一 ▼
图四 JSONFragmenter转换器帮助二 ▼
图五 JSONFragmenter转换器帮助三 ▼
图六 JSONFragmenter提取成果 ▼
方法二 利用正则的方法提取坐标串
1 //利用StringSearcher提取坐标数值
基本原理是坐标值为数字:
“40.77836”用正则表达式“\d+.\d+”即可提取
图七 StringSearcher转换器参数设置 ▼
图八 正则提取数字后 ▼
2 //利用ListExploder将列表值提取到属性
图九 ListExploder提取成果 ▼
3 //将坐标进行经纬度分组
这里AttributeCreator利用列表序号进行分组
图十 分组标识计算 ▼
图十一 分组标记成果 ▼
4 //利用Counter顺序标记 ​ 图十二 顺序标识设置 ▼
图十三 标记后成果 ▼
5 //计算经纬度
图十四 提取经纬度参数设置 ▼
图十五 提取经纬度成果 ▼
6 //利用Aggregator聚合坐标串
图十六 Aggregator参数设置 ▼
图十七 聚合经纬度成果 ▼
7 //坐标值转点
在FME中将坐标值转为点利用VertexCreator转换器
图十八 VertexCreator转换器参数配置 ▼
图十九 生成点后成果 ▼
这就是利用FME提取坐标值并转点的一个介绍,主要是需要数据和已有的数据处理方法进行。方法一提取坐标点确实比较快,但是好多小伙伴都还不知道这个做法,可能需要不断摸索积累经验才能GET到相关技能,方法二比较繁琐,但是对于大多数小伙伴来说,还是一个第一时间比较容易想到的方法。
有兴趣的小伙伴自己可以动手试试,这样会更有感觉的。
|