一、任务来源
经常遇到提供了TXT坐标需要转成矢量,然后去跟其他数据做分析统计的情况,最典型的就是原国土资源部门(现在的自然资源部门)在各种系统中用到的TXT坐标格式,它们的本质爱基本都是相同的,有的根据系统需要增减了一些属性,但是坐标部分是没有变化的。如图1所示
二、任务研判
所提供的TXT文本是有标准的格式说明的,这个对于我们来说很友好
标准格式为:【拐点号,圈号,X轴坐标点(7位整数),Y轴坐标点(8位整数)】其中有3个逗号分隔符,分隔符为英文半角逗号“ , ”
圈号为1就是该地块最为外围的圈,圈号大于等于2的就是挖空的圈。
拐点号必须为大写J字母开头(例如:J1)不能直接写 1
根据官方的描述,前面部分就是一些基本信息,然后到地块信息,然后到地块坐标,如果有挖空的情况就以圈号来区分。
三、解决方案
因为本人对FME桌面软件比较熟悉,就用FME来解决。整体思路如下:
1.读取TXT文件,并把地块信息用文本搜索转换器StringSearcher找出来,并用VariableSetter逐个发布全局参数,以便后面调用这些参数赋值到shp属性中去。注意,这里我们用到了正则表达式,而且还用到了子表达式功能,好处就是从转换器出口的信息会以子表达式来分成多个列表(List)
2.使用文本搜索转换器StringSearcher把每个点坐标找到,并分类成点号,X,Y三个信息。这里同样用到了正则表达式的子表达式来分离成三个列表。
3.使用2DPointReplacer把上一步提取到的XY生成点,再用PointConnector连线,LineCloser闭合线。
4.因为有可能有地块是有多个空洞的情况,需要用到DonutBuilder转换器来挖除空洞。
5.使用FeatureReader转换器读取TXT中的带号信息,然后投影即可。同样也用到发布全局参数和接受全局参数。
四、小结
通往罗马的路千万条,选择你最喜欢最熟悉的道路即可,我熟悉FME就用了FME,也许ArcGIS更简单方便,也许Python二十行代码就能解决……需要这个模板的请私信我。