一、任务来源
在自然资源部门都知道有个国土调查云,里面有个云查询,输入的坐标只支持地理坐标(经纬度),但是日常我们使用基本都是投影坐标(XY)。这个时候,就需要我们去做投影转换了,一般是在ArcGIS里处理,比较麻烦,需要先转成点文件再提取经度坐标还要复制出来做成TXT,过程繁琐,如果你需要处理几个,甚至几十个,那么你就会直接奔溃了。同事找到我做个模板好 长期使用。
二、问题分析
其实实现起来不难,就是把投影坐标读进去,然后做投影,再输出到TXT即可,习惯用ArcGIS的朋友直接做个模型也能长期使用。
三、FME的解决方案
本人熟悉FME就用FME来写一个小模板,具体思路如下:
1.以xls格式读取表格,然后用GeometryRemover转换器把读进来自带的矢量空间信息删掉,因为FME会自动检查进来的数据符合矢量空间要求就会直接赋值了空间信息,所以此处必须删掉空间信息,因为FME默认赋值错了。
2.然后就用转换器创建点VertexCreator,此处一定要注意FME里的XY和测绘上用的XY是相反的,跟ArcGIS的XY是一致的,不确定的反过来测试一下就知道了。
3.因为投影坐标是有带号的,我们根据带号不同来分别做投影到地理坐标。
4.提取经纬度。这里用到关键的两个转换器CoordinateExtractor和ListExploder。CoordinateExtractor是把经纬度暴露到列表里(我也不知道为啥不能直接暴露为属性),ListExploder转换器是把在列表的经纬度再次暴露到属性中来。
5.将经纬度合并到一个属性中去(因为TXT只能写出一个属性)
6.用AttributeRenamer转换器把合并后的经纬度字段名称重命名为txt_line_data(属于是格式属性,只能在下来菜单中选中,不能直接输入!)
下拉并选中
选中后效果
四、其他小技巧
在读入表格时,在读模块设置里的格式属性将fme_basename(文件名称)暴露出来(如图4.1),然后在最后输出TXT文件的时候,可以调用这个属性来命名TXT文件,实现闭环管理。特别注意TXT的写模块是不支持直接在读模块上用属性对文件进行命名的,只能在工作空间左侧的读模块管理有个扇出表达式里进行设置,而且一定要在文本编辑器里写.txt哦(如图4.2)。
图4.1 暴露文件名称
4.2 使用属性作为扇出文件名
五、小结
这个模板用到的转换器不多,主要涉及移除空间信息、投影、列表的暴露、属性重命名等转换器。还使用了扇出功能,平时比较少用的,扇出可以扇出文件夹和文件名称,功能还是很强大且实用的,可以多测试摸索。整体模板见下图。模板在这里