关于属性分割的问题

原文发布时间:2015-01-05 09:26:32

作者:小张张

在群里潜伏了这么久,还是很有收获的,看着大神们飞出来的各种问题和答案,表示不明觉厉,自己也有过尝试,所以把一些比较完整的问题和答案整理了一下,给自己留个底,同时也跟大家分享一下,也上SAFE官网上搜罗了几个问题和答案,一起分享,本文主要是对于属性分割的问题进行了搜集与研究,不对之处,多多指教:

问题一:属性分割问题(SAFE问答)

在我的表里有一列名为Date的数据,数据的格式为“日期+时间”,如下所示:

在日期之间用“/”分割年、月、日,时间之间用“:”分割时、分、秒。

现在我需要把日期和时间分开,分别存放在Data和Time列下,期待解答。

最佳回答:使用AttributeSplitter转换器不会改变原始属性,分割的结果会存放在一个列表属性里:

_list{0}=’9/9/2009’

_list{1}=’21:23:31’

你可以使用AttributeRenamer转换器进行重命名,达到最终目的:

_list{0}=>Data

_list{1}=>Time

个人验证:

选择要分割的属性以及分隔符或者格式字符串,经过这一步之后,得到的结果为:

原始属性没有发生变化,分割后的属性是存放在_list{}里的,添加一个AttributeRenamer转换器,进行设置:

得到的结果如下图所示:

原始属性没有发生变化,分割后的属性是存放在_list{}里的,添加一个AttributeRenamer转换器,进行设置:

得到的结果如下图所示:

成功!

问题二:分别读取度分秒(技术交流群)

FME怎么把一个字段的度分秒分别读出来,108°20′35″,108°5′3″
如果是很规则的数据,我们可以使用AttributeSplitter转换器,直接以正则表达式提取子字串长度进行分割,如108°20′35″,100°10′05″等,我们可以以“4s3s3s”进行分割:

 但是如果不规则的话,就不能那么用了。

可以使用StringSeacher转换器,输入正则表达式(正则表达式规则可参见帮助文档):^([0-9]+)[°]([0-9]+)[′]([0-9]+)

经过转换器,能得到下列结果:

这样就分解出来了,存储在_matched_parts{}中,如有必要,暴露_matched_parts{0},_matched_parts{1},_matched_parts{2},并分别映射到相应属性即可。

如对文章有疑问,可发送邮件至[email protected]讨论或提问。

猜你喜欢

转载自blog.csdn.net/fmechina/article/details/81354876
今日推荐