FME模板兴趣班第十期任务小结
欣欣
今天圣诞节,先祝大家圣诞快乐,随说是个舶来品,不过过节总是让人心情愉悦,总归还是好的~~每当这个时候总有人想放假的心情,又是一年年底时,今年,你会给自己做怎样的总结呢?
这期作业一共收到22份,应该是十一期以来作业数量最多的一次。有很多新手也加入到本次作业大军中,以后我们出题目的时候尽量能够交替照顾对FME不同熟练程度的人员。
一、题目说明
这一期是对非空间数据空间化的处理:CSV到Shp,除了非空间到空间的转换、还有属性处理、拓扑计算、排序等处理。
作业要求:
1)读取VancouverPublicArt.xls文件,为每条记录创建点要素;
2)丢弃Name字段为空、丢失、空格等的要素;
3)找到每个艺术作品坐落于哪个区域(区域在VancouverNeighborhoods.xml文件中);
4)排序要素,以字母顺序的方式,用区域的Name字段和艺术作品的Title字段进行排序;
5)把数据写成shape 格式,且带有属性字段neighborhood name, artwork title, artwork name的内容,属性映射如下:
源属性名称 |
目标属性名称 |
neighborhood name |
nbname |
artwork title |
title |
artwork name |
artname |
模板要求:
1) 使用FME Workbench制作模板;
2) 转换器的数量少且工作空间的文件尽量的小(字节数);
3) 不允许使用 Python 和TCL脚本;
4) 不能编辑或者操作源数据的任何内容;
5) 使用FME 2015.0及以上版本处理。
二、题目分析
本期题目的来源在这里:http://blog.163.com/[email protected]/blog/static/14049249220156891329519/
不知道有没有同学发现^_^。我们会发现很多时候用FME解决问题时,由于项目时间紧、压力大,我们往往追求解决问题而不是最优解决办法。这样也导致做好的模板通常不是最优的,比如一些不必要重复使用的转换器,复杂的过程、凌乱的连线等。
这个练习主要是通过一个简单的例子让大家只有精简、有效的工作空间。其实我们每一期的作业很多同学做的时候都有这样的自我要求,比如尽量少的转换器数量,清晰明了的工作空间。
不过这一期的作业为了让工作空间的文件尽量小,只有省掉一些备注了,好在这个模板并不复杂。真正处理任务的时候还是建议大家写清楚备注,以免再次打开的时候都不明白自己当时为什么要这样做了。
说说我理解这个题目的思路:
1、 csv到点要素:CSV中每条要素记录了点的坐标,在高版本的FME中,读模块设置参数可以直接通过指定 x坐标、y坐标字段,直接空间化。省略使用VertexCreator创建点要素的步骤。
2、 使用Tester,丢弃name字段为空、丢失、空格等的要素。通过设置Attribute is Null、Attribute is empty string、Attribute is Missing进行过滤;
3、 查找点要素的范围:用KML读模块读取数据,使用PointOnAreaoverlayer即可;
4、 排序使用Sorter,按字母进行升序排列。
5、 最后输出到写模块,可以用AttributeRenamer进行重命名,或者直接连线完成属性映射。
很easy,有没有?这个作业大家不太熟悉的可能是CSV读模块中直接把要素进行空间化的过程。
下面看看大家的作业情况吧~
三、 作业情况(点击这里下载作业汇总)
本次一共收到22份作业,作业概括和分析如下:
四、小结
1、 本次作业大家的结果都是正确的,不过还是有些个别思路不一样的地方,比如有的用pointonarea,有的用Spatialfilter;在过滤要素时,除了Tester,也还有AttributeFilter等;包括属性映射时,AttributeCreator、AttributeRenamer、AttributeManager等都是方法;
2、 由于没有强制大家是否写注释,按照以往的惯例,有好些同学依然认真注释,我觉得非常赞。为了公平起见,我把大家的注释都删掉,再做了一个文件大小的统计。
3、 为了评分有个标准,评分的时候根据题目出处提供的参考工作空间大小进行评级的,提供的参考空间大小为67.7 KB (69,411 字节),然后做了优、中的分级。并不代表作业为“中”的就不好,只是评分需要一个标准;
4、 很开心这一次的作业大家都做对了。节日快乐~~