使用 FME 将勘测定界坐标交换格式文本文件转换成 GIS 格式

平常我们向国土部上报(或获取)坐标数据时基本都是使用“勘测定界界址点坐标交换格式”,这个格式是一个纯文本格式,示例如下(来源于国土部网站):


 [属性描述]

格式版本号=1.01版本

数据产生单位=国土资源部

数据产生日期=2003-11-7

坐标系=54北京坐标系

几度分带=3

投影类型=高斯克吕格

计量单位=米

带号=31

精度=2

转换参数=0,0,0,0,0,0,0

[地块坐标]

9,0.018,2003-10,双桥乡地块1,面,I-50-77-(22),公共基础设施,,@

J01,1,3751508.5,39438683.65

J02,1,3751508.5,39438690.15

J03,1,3751502,39438690.15

J04,1,3751502,39438688.2

J05,1,3751494.5,39438688.2

J06,1,3751494.5,39438660.7

J07,1,3751499,39438660.7

J08,1,3751499,39438683.65

J01,1,3751508.5,39438683.65

5,0.0247,2003-12,双桥乡地块2,面,I-50-77-(14),公共基础设施,,@

J01,1,3755389.7,39437380.2

J02,1,3755389.7,39437410.7

J03,1,3755382.2,39437410.7

J04,1,3755382.2,39437380.2

J01,1,3755389.7,39437380.2


一般情况下,使用超图、ArcGIS、MapGIS 等 GIS 软件转换这个数据时,都会使用编程语言读取文件内容转换成 GIS 对象。FME 提供的 FME Workbench 可以不需要任何编程工作,就可以将上述格式转换成 GIS 支持的格式。下面将介绍如何使用 FME 将勘测定界坐标交换格式文本文件转换成 GIS 格式。


1. 打开 FME Workbench,加入 Text Reader。DataSet 选择的文件即为交换文件。



2. 无论是 Text、CSV 还是包含有图像对象的 GIS 文件,FME 处理时都是一个一个对象读取出来处理。在这里,Text 文件中的每一行就是一个 Feature。从文件格式定义中可以知道,当出现:

    9,0.018,2003-10,双桥乡地块1,面,I-50-77-(22),公共基础设施,,@

时就表示开始定义一个图形对象。一行一行的下去,再次出现行结尾是“@”符号时,上一个图形定义完毕,并开始下一个图形的定义。下面我们在 Workbench 中加入一个 StringSearcher 来处理带有“@”的行数据。

如上图所示,Regular Expression 输入 (.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),@正则表达式,让 FME 找出所有 @ 结尾的行。将 Reader 和 Searcher 连接起来,如下图:

MATCHED 对应“是 @ 结尾的行”,NOT_MATCHED 对应其他行,我们先处理 MATCHED。当发现 @ 结尾的话时,说明要开始生成图行了,所以我们先给这个步骤编个号。加入一个 Counter,如下图:

       

后面处理紧接下去的行时,需要获取这个 Counter 值,所以再加入一个VariableSetter,用于保存当前的 Counter 值。Variable Name 设置了这个变量的名称,后面还需要引用这个名称。

这一行数据里面,还包含有这个图形的基本属性,文档中的说明如下:

    界址点数,地块面积,地块编号,地块名称,记录图形属性(点、线、面),图幅号,地块用途,地类编码,@

这样我们还要多使用几个 VariableSetter 来记录这些字段内容,并且将前面说到的 MATCHED 和 Counter 与这些变量连接起来。如下图:




4. 然后接着处理不带 @ 结尾的行数据,即带有坐标的行。前面说过,FME 是一行一行处理 Text 文件的。先读取到一个 MATCHED 行,Counter 计数一次,然后接着处理一个 NOT_MATCHED 行。再增加一个 StringSearcher,Regular Expression 输入^(.*?),(.*?),(.*?),(.*?)$ ,将一行拆分成四个部分。使用 VariableRetriever 接收上面定义的 Counter 变量,如下图:

   

为了能区分出地块圈号,再增加一个 StringConcatenator,将 Counter 和 圈号合并起来作为坐标点的标识符。如上右图所示。并且,把上步设置的所有属性变量都用 VariableRetriever 接收回来。

5. 最后生成图斑。增加一个 2DPointReplacer 和一个 PointConnector 将坐标“翻译”成线和面。

   

其中,X Value 和 Y Value 对应文本中的坐标,Connection Break Attributes 对应 Counter 和地块圈号的组合。

在增加 LineCloser 将没有首尾封闭的图形封闭,增加 AttributeRemover 删除多余的字段,增加 DonutBuilder 用于将内多边形挖空。如下图:


最后在 Visualizer 里面就可以看到生成的图形了,将他替换为 ESRI Shape Writer 就可以生成 Shape 数据,也可以替换成其他 Writer。




整个步骤如下:





完整的工作空间: 下载
  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
软件介绍: 国土用地报备坐标转换器请使用section导出的txt格式或excel另存为的csv格式文件本程序根据国土资源部拐报备相关规定进行编写,目前版本只针对一个圈进行转换,后续请加入内圈及外圈进行完善。程序主要功能:1、坐标格式转换:支持txt格式csv格式坐标格式文件2、拐坐标CAD成图:可将拐坐标转换成CAD图形,分 X,Y 及 Y,X 两种形式3、导出excel格式坐标表(非CASS格式)本程序完全免费,在使用过程中,遇到问题可与作者联系或熟悉人员,反馈问题或获得技术支持使用方法以常用格式进行说明,主要从mapgis、AutoCAD、ArcGIS(苍穹软件)、excel格式进行说明。一、mapgis wl线文件转换步骤:1、连接范围线成一个完全闭合的圈(技巧可以将显示首尾打开再进行连接)。2、运行section,打开范围线文件(或直接打开mapgis工程文件,将线文件设置为编辑状态),击1辅助工具-导入导出功能-导出线拐坐标(TXT),并保存拐坐标。此处需注意的是,请留意section程序下方状态栏,实际坐标(X与Y调换后)与图面坐标是否一致,如不一致请击比例尺设置成1000或0,如实际坐标处显示为“请先设置比例尺”,则此时比例尺为0,无需进行设置。3、运行拐坐标转换程序,击打开按钮,导入txt文本文件,并设置好相应参数。序号位数参数:如设置成3则格式为J001,如不填或为0时为J1,需注意的是如您个数超过1000,则此处应至少填4或不填否则程序将提示位数溢出,重新设置再转换即可。4、转换完后可进行CAD成图及导出excel格式坐标表(页面已进行设置可直接打印,别忘了填写项目名称)。二、AutoCAD文件转换步骤:1、另存CAD文件为dxf(2000或R12)文件2、运行mapgis图形处理-文件转换-输入-装入DXF-将范围线图层保留,其他层可选择不进行转换。3、装入dxf后,击文件-保存线,以保存范围线,后面步骤同“一mapgis wl线文件转换”三、ArcGIS(苍穹软件)文件转换步骤:同AutoCAD转换,装入文件时选装入SHAPE文件即可。四、excel文件转换步骤:1、保证excel内表格内第二列与第三列为坐标值,第一列及后面列有无数据不影响。同时所有行(含首行)均需包含坐标值或为空行(空行时程序会自动跳过),切不可含文字或其他数据,否则转换时程序会认为此处为0或相应的数值。2、将excel另存为csv格式文件,再进行转换即可! 五、txt文件转换步骤:保证txt内容格式为“任意内容,坐标值,坐标值,,,……”,第一个逗号与第二个逗号后为坐标值即可,第一个数值、第四个及后面数据任何内容均可。此处需注意的是逗号必须为英文半角符!其他需说明的问题一、程序设置有最大边长自检值项,此处设置的目的是防止在转换过程中因不可预见因素导致坐标值出错,进行边长也计算出错,所以设置边长最大值进行检查。(经测试边长一般为50以下,一旦出错均为数位错误,出错时边长将达几万,故此处设置为200,亦可自定义)。二、本程序目前只针对一个圈范围线进行转换,后续将进行完善!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值