VB6.0程序在全站仪图根导线测量中的应用

时间:2022-03-27 08:08:10

VB6.0程序在全站仪图根导线测量中的应用

摘要:充分利用全站仪的各种功能,用“VB6.0”编写的程序直接对全站仪观测的记录数据进行分析处理,并生成平差文件和观测手簿,达到内外业一体化图根导线测量。

关键词:全站仪;VB6.0;图根导线观测;数据格式处理;数据检查处理

中图分类号:C37文献标识码: A

1 前言

全站仪在地形、地籍测量中的广泛应用,使图根导线观测更加准确、快捷,但大部分的导线平差软件还不支持与全站仪直接进行数据交换,平差计算还需要人工对全站仪的观测数据进行整理计算、手工录入,不仅费时费力,还容易产生粗差。

全站仪具有测距测角自动记录及传输数据的自动化的功能,本文以topcon系列全站仪为例,利用“VB6.0”编写的程序,对观测数据进行分析处理,并进行转换、检查,最终生成清华山维nasew95格式的平差文件及Word格式的导线平差文件。

2 全站仪观测数据格式

topcon全站仪以测量模式输出的原始观测数据文件一般有两种,见表1,表2。

表1 斜距(SD)模式

? +01178481 m 0852030 +1203040 d 01174572

ID SD m/f V H d/g/m HD

数据识别符 斜距 距离单位 垂直角 水平角 角度单位 平距

t 00 +00 +25 099 EXT(CRLF)

t/* L P O BCC

倾斜改正(t打开,*关闭) 0值 大气改正数 棱镜常数 块较验符 结束符

表2平距/高差(HD/VD)模式

R +01174572 m 0852030 +1203040 d 01174572

ID HD m/f V H d/g/m HD

数据识别符 平距 距离单位 垂直角 水平角 角度单位 平距

t 00 +00 -30 099 EXT(CRLF)

t/* L P O BCC

倾斜改正(t打开,*关闭) 0值 大气改正数 棱镜常数 块较验符 结束符

3 程序模块设计思想

程序分为“数据预处理”、“中间数据检查处理”和“平差文件、导线观测手簿”三部分。

“数据预处理”模块:利用VB程序读取全站仪观测数据文件,根据数据识别符对每测站的字符串进行分解,来获取各测站及观测方向点(点名、仪器高、方向名、水平角、垂直角、距离、目标高)信息,生成后缀为.ELE的中间文件(*.ELE文件为清华山维nasew95平差软件的外业数据观测格式)。*.ELE以文本格式保存,生成速度快、存取方便,生成的数据格式内容整齐、便于人工辩读及除去多余观测量。

表3中间文件数据格式

*A003,1.610

测站名,仪器高

004,HZS,000.0000,090.2454,00083.671,1.194

测站,模式,水平角,垂直角,距离,目标高

002,HZS,244.0324,090.0415,00084.636,1.194

----

盘左盘右分隔符

A002,HZS,064.0307,269.5542,00084.636,1.194

A004,HZS,179.5943,269.3453,00083.671,1.194

“中间数据检查处理”:调用Microsoft Access软件将*.ELE文件导入到数据库中,计算2C、指标差、高差等计算量,使用SQL语言对测站的盘左盘右方向名是否相同、2C、指标差、对向边长、对向高差等精度进行检查并生成报表;

“平差文件、导线观测手簿”:对通过“中间数据检查处理”的*.ELE文件,从Access数据库中提取所需数据,在已知点数据文件中提取已知点生成*.MSM文件,直接调用清华山维nasew95程序打开进行平差计算。平差文件直接加载了已知点数据,减少了人为输入产生的错误。

提取Access中的观测数据,在Word软件中生成导线观测手簿(表四),便于后期资料整理。

表四图根导线观测手簿

4 程序代码

4.1数据预处理

(1)导线参数设定

Load Dialog1

Dialog1.Show vbModal‘调用参数设置对话窗体

Open App.Path & "\daoxian.lyb" For Random As #1 Len = Len(DaoXian)‘将导线设置参数写入到二进制文件中,方便调用。

Put #1, 1, DaoXian

(2)读取原始观测数据

CommonDialog1.ShowOpen ‘调用打开对话框

RichTextBox1.LoadFile CommonDialog1.Filename, rtfText ‘打开原始观测文件,读取文件内容到文本框内

(3)数据转换(生成*.ELE文件)

TempStr = QuWei(TempStr)‘调用函数去掉文本中的CRLF、EXT和块较验符

利用循环语句对每测站进行读取

Cz = StrHead(TempStr, "_'") ‘测站信息

If InStr(ch, "_?+") > 0 Then‘判断边长测量模式

………

对字符串进行分解,根据设置的参数重新组合得到测站的方向点点名、距离、垂直角、水平角、目标高。

End If

RichTextBox1.Text=“”‘清空文本框中的内容

RichTextBox1.Text=NewTempStr ‘将处理好的文本写入到文本框中

CommonDialog1.ShowSave‘弹出保存对话框

RichTextBox1.SaveFile CommonDialog1.Filename, rtfText

4.2 中间数据检查处理

读取*.ELE文件Access数据检查

(1) *.ELE文件导入Access

Set db = OpenDatabase(App.Path & "\Traverse.mdb") ‘设置数据库

db.Execute "INSERT INTO [测站](ID,测站名,仪器高,文件号) VALUES(CZGC)"‘读入测站信息。

db.Execute "INSERT INTO [方向点](ID,方向名,水平角盘左,垂直角盘左,边长读数1,觇标高,文件号)VALUES(FXGCPZ)" ‘读入观测方向信息。

(2)各项检查常数计算

Set RS = db.OpenRecordset("select * from 方向点 where 文件号=1" )

RS.Edit

RS.Fields(4).Value = (DMS(DEG(RS.Fields(2).Value) - (DEG(RS.Fields(3).Value) - DEG(180)))) * 10000 ‘计算指标差

RS.Fields(5).Value = DMS(DEG(RS.Fields(2).Value) - DEG(RS.Fields(4).Value / 20000)) ‘计算2C

RS.Fields(6).Value = DMS(DEG(RS.Fields(5).Value) - DEG(Val(Gl)))‘计算水平角中值

RS.Update

(3)数据检查

Set RS = db.OpenRecordset(select测站.ID,测站名, 方向名,指标差 from 方向点,测站 WHERE 测站.ID=方向点.ID and abs(指标差)>" & ZBC & " and 方向点.文件号=1") ‘检测指标差。

Set RS = db.OpenRecordset("select测站.ID,测站名, 方向名,边长读数1,读数2 from 方向点,测站 WHERE 测站.ID=方向点.ID and abs(边长读数1-读数2)>" & BC & " and 方向点.文件号="1) ‘边长检测。

Set RS = db.OpenRecordset("select测站.ID,测站名, 方向名,高差,平距 from 中值,测站 WHERE 测站.ID=中值.ID and 测站.文件号=1")‘读取测站观测信息。

RS .Fields(2).Value = Cz And RS.Fields(1).Value = fx And Abs(RS.Fields(4).Value - Zjl) > PingJu ‘对向距离检查。

Abs(Val(RS.Fields(3).Value) + Zgc) > GC * Sqr(Val(RS.Fields(4).Value) * 0.001) ‘对向高差检查。

4.3平差文件、导线观测手簿

(1)平差文件

Set RS = db.OpenRecordset("select测站.ID,测站名, 方向名,水平角,高差,平距 from 中值,测站 WHERE 测站.ID=中值.ID")‘读取水平角、高差、平距信息。

RS.MoveFirst

Do Until RS.EOF

‘对每行记录进行分解后,存在相应的字段。

RS.MoveNext

Loop

Shell App.Path & "\NASEW.EXE " & FILSAVE, vbNormalFocus '调用平差软件直接打开平差文件

(2) 导线观测手簿

Set wdApp = CreateObject("Word.Application")‘调用Word程序

Set wdbok = wdApp.Documents.Open(App.Path & "\图根导线观测手簿.doc")‘调用模板文件

Set wdBook = wdApp.Documents.Add‘新建word文件

Set RS = db.OpenRecordset("select测站.ID,测站名, 仪器高, 方向名, 水平角盘左, 水平角盘右, RC, 方向值, 水平角中数, 垂直角盘左, 垂直角盘右, 指标差, 垂直角, 觇标高, 边长读数1, 读数2, 边长值 from 方向点,测站 WHERE 测站.ID=方向点.ID and 测站.文件号=1" ) ‘导线观测手簿的信息

RS.MoveFirst

Do Until RS.EOF

With wdBook.Tables(TabCount)

.Cell(i, 2).Range.InsertAfter Format(RS.Fields(3).Value, ">") '方向名

.Cell(i, 3).Range.InsertAfter Replace(Format(RS.Fields(4).Value, "###0.00 00"), ".", " ") '水平角盘左

………将读取的数据填入到WORD表格中

End With

RS.MoveNext

Loop

wdBook.Save’保存文件

wdBook.Close’关闭文件

wdbok.Close’关闭模板文件

wdApp.Quit’退出Word程序

5 结束语

全站仪内外业一体化图根导线测量减少了听、写、计算、录入等人工环节,避免了因为人工记录或录入造成的粗差,此种作业方法成本低,简便易行,作业成果准确可靠,大大的减轻测量人员的劳动强度,更好的提高测绘工作效率和产品质量。

参考文献:

[1] 赵学慧,赵玮.Visual Basic 程序开发完整实例教程.北京.海洋出版社,2003.

[2] 王成春,萧雅云.Access 2003 VBA程序设计.北京.中国铁道出版社,2005.

上一篇:道路桥梁工程管理中的问题及控制措施 下一篇:半自动焊技术在长输管道焊接的应用论述