1、MAPGIS 供水信息系统的测量数据自动化处理摘要:本文阐述了温州市供水信息系统更新过程,海量的测量数据利用 EXCEL 自动化的处理和 AUTOCAD 进行直观的检错,保证了数据的准确性和完整性;确实的提高了工作效率。 关键词:MAPGIS VBA 前期探测数据 自动化处理 Abstract: this paper expounds the wenzhou city water supply information system update process, huge amounts of measurement data by using EXCEL automation process
2、ing and AUTOCAD for visual check, ensure the accuracy and completeness of the data; Is to improve the working efficiency. Keywords: MAPGIS VBA early detection data processing automation 中图分类号:TV674 文献标识码:A 文章编号:2095-2104(2013) 一、引言 温州供水信息系统是采用武汉中地数码有限公司开发的 MAPGIS67,现系统有管线数据约 2400 万公里;数据更新源于实业公司测量分公司
3、采用“物探+RTK+全站仪”测量取得地理空间数据,经过一系列人工转换合并和填充属性得到相应成果表。 由于 MAPGIS 软件的设定;成果表必须包括本点号、上点号、横坐标、竖坐标、点类型、类型等属性。现实测量过程中,测量单位只对供水管线的空间数据进行测量;而本点号、上点号、点类型等信息属性依靠内业处理时人工或者部分计算机生成;根据是日常工作中总结每月更新 30公里需要约测量 8000 点,每个点需要填写约 30 项属性,导致测量成果的内业处理需要花费大量的时间、繁琐且极易出错。 笔者在阅读过城镇供水2010 年第六期中的浅谈综合管线 GIS系统前期探测数据的自动化处理后,发现了该方式进行一定的改
4、进,不足的是仅仅对规律性的重复数据进行自动化填写;对测量的数据还是依靠人工进行操作,制作成果表,而且对飞点、异常点无法进行直观的判断出。 因此笔者想到了直接用 Excel 中的 VBA 读取由全站仪导出的 ASC文件,依据先关条件进行必要的判断、分类直接生成符合 MAPGIS 系统导入的成果表。同时能利用 VBA 调用 AUTOCAD 进行绘图、标注,用于直观的内业检错。 二、编程的基本思路及运行的过程 1、首先建立一个 excel 文件作为 VBA 的程序载体,将该文件命名为“测量数据内业处理表.XLS”, 在 excel 的菜单中选择“工具宏visual basic 编辑器”也可以直接按“
5、alt+F11”进入 VBA 编辑器界面。按照自己的设想添加一个用户窗并在窗体中放置若干按钮,并编写各种控件的编码(参考下文) 。程序运行界面如图 1 所示。 (图 1) 2、程序运行介绍:每次打开改文件就自动运行本程序,如上图所示,点击“生成成果表格式”键将生成为标准的 MAPGIS 成果表格格式(成果表格式见图 2) ,点击“导入测量成果”健将全站仪导出的 ASC类型文件(常见的转换为 TXT 文件)导入,然后根据预定的规则进行分类、填写。接下来可以点击“生成成果表”或者“展点到 CAD”分别进行成果表和调用 CAD 进行成图。运行结果如图 3 和图 4 所示。 (图 2) 3、功能实现:
6、文件的读取与 VB 的编程差不多,在这里就不赘述了;必须注意的是全站仪导出的数据文件(笔者使用的为拓普康全站仪) ,坐标格式数据为 PT、-、Y、X、H 排列;其中 PT 为点号,Y,X 为坐标,H 为高程(见图 5) 。 难点一是调用 AUTOCAD 并进行展点连线,关于调用 CAD 的代码很容易查到(注意要在 VBA 编辑器内引用到 AUTOCAD TYPE LIBRARY),关键在于读取数据后要逐点进行展点、标注点号、边长连线。 难点二是如何让计算机如何自动生成不重复的本点号、上点号。由于笔者的管网采用分区管理的办法,所以测量后内业处理时本点号、上点号的生成依据分区号+顺序号,城市供水管
7、线测量前一般都要进行管位物探,以确定是否存在管道和确定管位;因此物探后必须建立相关的说明文件来确定管线连接情况;而因此建立的 TXT 文件就成为我们判断管线连接情况、管点类型的判断依据。 ( (图 3) (图 4) (图 5) 三、主要的程序代码及注释 程序中的主要的几处代码列于下文(不包括若干的子函数) ,因代码太长故略有删减,仅作参考。 1、 “生成成果表格式”按键对应的代码 Range(“A1“).FormulaR1C1 = “本点号“ 分别赋值为字段名,生成标准的 MAPGIS 成果表 Range(“B1“).FormulaR1C1 = “上点号“ Range(“C1“).Formul
8、aR1C1 = “点类型“ Range(“D1“).FormulaR1C1 = “类型“ Range(“E1“).FormulaR1C1 = “埋深“ Range(“X1“).FormulaR1C1 = “输送介质“ 2、导入测量成果表 Dim nm$ nm = Application.GetOpenFilename(“Text Files (*.txt), *.txt“, , “请测量成果表(逗号分隔)“, , MultiSelect:=False) If Len(nm) = False Then MsgBox “你没有选择文件!“: Exit Sub Open nm for Input A
9、ccess Read As #1 r = 2由于第一行为标题栏,所以第二栏开始 While Not EOF(1) 一直运行到末尾 Line Input #1, tRow 读取 TXT 文件第一行内容 tCells = Split(tRow, “,“)由,分段赋值 Cells(r, 20) = tCells(0) 填写入各自的表格,由于 Y 坐标在前注意换位 Cells(r, 10) = tCells (3) Cells(r, 11) = tCells (2) Cells(r, 12) = tCells (4) r = r + 1 excel 换行 Wend Close #1 End Sub 3
10、、生成成果表 Select Case Cells(a, 3).Value Case “S“ Cells(a, 3).Value = “三通“ Case “MS“ Cells(a, 3).Value = “三通“ Cells(a, “R“).Value = “手工标注“ 关键在于自动判断各种管件 End Select 4、连接到 CAD 展点绘图 Dim acadApp Set acadApp = GetObject (, “AutoCAD.Application“) If Err Then Err.Clear Set acadApp = CreateObject (“AutoCAD.Appli
11、cation“) If Err Then MsgBox Err.Description Exit Sub End If End If 连接至 AutoCAD 图形 On Error GoTo 0 Dim acadDoc If acadApp.Documents.Count = 0 Then Set acadDoc = acadApp.Documents.Add Else Set acadDoc = acadApp.ActiveDocument End If acadApp.Visible = True 关键在怎么引用入 AUTOCAD 模块,画图代码就省略 四、结束语 1、通过了 EXCEL
12、的自动导入全站仪的测量成果,使测量的内业处理时间大大的减少且没有人工介入,一般不出错。 2、引入 CAD 的展点查看,可以非常直观的发现飞点、异常点。另外在生成的管线图中引入地形图;可以进行室内的检查、验收;可以大大的加快 MAPGGIS 数据的收集效率和精度。 3、随着城市的发展和信息系统的拓展,但是 GIS 系统的数据来源仍然制约着 GIS 应用,认为在现有的测量条件下,利用测量数据内业处理的自动化是非常有效的加快信息的更新。 参考文献: 1、王德成等, 用 A u t oL I S P 编写城市测量成果表 ,城市勘测,2005。 2、韦增祥等, 浅谈综合管线 GIS 系统前期探测数据的自动化处理, 城镇供水, 2010 年。 3、 拓普康全站仪使用说明书,拓普康公司,2010 年。 4、陈正江,汤国安,任晓, 地理信息系统设计与开发,科学出版社,2012 年。