探究沉降监测数据的处理

时间:2022-09-30 05:01:27

探究沉降监测数据的处理

摘要:沉降监测是一项精密的工程测量,对可能发生危险的先兆,判断工程的安全性,防止工程破坏事故的发生起到至关重要的作用。不同的厂家,各种不同的仪器,数据格式千差万别,建设单位以及建设监理、监督单位,要求提交的数据格式也有不同的规定。为了提高工作效率,满足不同单位的要求,自做一沉降监测数据处理程序,跟同行共同探讨。

关键词:ADO;数据格式;SPLIT函数

中图分类号:D922.3 文献标识码: A

1 引言

沉降监测中,对一般性的高层建(构)筑物,采用二等水准测量的观测方法就能满足要求,仪器多采用精密的电子水准仪,本文以天宝DINI03为例,全面阐述一下其数据的导入和处理过程。

2 数据导入的设计

本程序是利用VB语言读取电子水准仪的输出文件,然后利用Microsoft ActivX Data Object 2.6 Library ADO对象库的引用,把数据导入到access数据库中。例如,天宝DINI03电子水准仪输出的数据如1-1图,其第一行是文件名,第二行是开始观测行,因为是第一站(奇数站)所以用后、前、前、后方式观测,第三行是水准起点,第四行到第七行是前、后视高,前、后视距,第八行是第一站高程,第十九行到三十四行是无用的数据(铟钢尺没有扶正等原因造成的)第四十一、四十二行是间视点,每行分六个字段。因而首先用VB的函数SPLIT :S=SPLIT((textline1, "|"),把每行分成六个数组进行处理,然后用INSTR以及MID函数:InStr(1, s(3), QSHiSHiGaoZIDuan),作为条件,剔除无用的数据,把视距,视高等有用的数据导进access数据库,以备下一步进行数据处理。数据导入的部分代码如下:

adodblianjie1

rs1.Source = "select * from 水准表 "

rs1.ActiveConnection = conn1

rs1.Open

Do While Not EOF(1)

'For i = 1 To 45

Line Input #1, textline1

s = Split(textline1, "|")

If InStr(11, s(2), "#") Or InStr(11, s(2), WeiJianMing) Or InStr(1, s(2), KaiSHiHang) Or InStr(1, s(2), CHongFuCeZHan) Or InStr(1, s(2), KaiSHiJianSHiDian) Or InStr(1, s(2), JieSHUJianSHiDian) Or InStr(1, s(2), JieSHuHang) Or InStr(1, s(3), SHiJuCHa) Or InStr(1, s(3), QianSHiJuHe) Then

Else

rs1.AddNew

QHdianMing = Trim(Mid(s(2), 4, 15))

rs1.Fields("测量时间") = Calendar1.Value

If InStr(1, s(3), QSHiSHiGaoZIDuan) Then

ChangDu = Len(s(3))

QianSHiSHiGao = Val(Trim(Mid(s(3), 3, ChangDu - 5)))

SJChangDu = Len(s(4))

QianSHiJu = Val(Trim(Mid(s(4), 3, SJChangDu - 5)))

If Rf Then

rs1.Fields("前视视高1") = QianSHiSHiGao

rs1.Fields("前视视距1") = QianSHiJu

rs1.Fields("测站点") = "前" & QHdianMing

Else

rs1.Fields("前视视高2") = QianSHiSHiGao

rs1.Fields("前视视距2") = QianSHiJu

rs1.Fields("测站点") = "前" & QHdianMing

End If

Rf = Not Rf

End If

If InStr(1, s(3), HSHiSHiGaoZiDuan) Then

ChangDu = Len(s(3))

HouSHiSHiGao = Val(Trim(Mid(s(3), 3, ChangDu - 5)))

SJChangDu = Len(s(4))

HouSHiJu = Val(Trim(Mid(s(4), 3, SJChangDu - 5)))

If Rb Then

rs1.Fields("后视视高1") = HouSHiSHiGao

rs1.Fields("后视视距1") = HouSHiJu

rs1.Fields("测站点") = "后" & QHdianMing

Else

rs1.Fields("后视视高2") = HouSHiSHiGao

rs1.Fields("后视视距2") = HouSHiJu

rs1.Fields("测站点") = "后" & QHdianMing

End If

Rb = Not Rb

End If

If InStr(1, s(3), JianSHiSHiGaoZiDuan) Then '间视点

ChangDu = Len(s(3))

JianShiSHiGao = Val(Trim(Mid(s(3), 3, ChangDu - 5)))

SJChangDu = Len(s(4))

JianSHiju = Val(Trim(Mid(s(4), 3, SJChangDu - 5)))

SJChangDu = Len(s(5))

JianSHiDianGaoCHeng = Val(Trim(Mid(s(5), 2, SJChangDu - 5)))

rs1.Fields("间视点视高") = JianShiSHiGao

rs1.Fields("间视点视距") = JianSHiju

rs1.Fields("间视点高程") = JianSHiDianGaoCHeng

rs1.Fields("测站点") = QHdianMing

End If

If Trim(s(3)) = "" And Trim(s(4)) = "" Then

ChangDu = Len(s(5))

QianSHiDianGaoCHeng = Val(Trim(Mid(s(5), 3, ChangDu - 5)))

'QHdianMing = Trim(Mid(s(2), 4, 15))

rs1.Fields("前视点高程") = QianSHiDianGaoCHeng

rs1.Fields("测站点") = "高程" & QHdianMing

End If

rs1.Update

End If

Loop

rs1.Close

conn1.Close

Close

MsgBox "导入成功!"

1-1

3 数据的处理

数据进入access数据库后,充分利用ADO对象模型的数据访问策略 ,可以任意输出成多种格式,例如输出成EXCEL的格式。首先充分利用了microsoft office 11.0 object library进行EXCEL对象的定义:

Dim SHuiZHunexcel1 As Object '定义Excel对象

Dim SHuiZHunbook1As Object '定义工作簿对象

Dim SHuiZHunsheet1 As Object '定义工作表对象

Set SHuiZHunexcel1 = CreateObject("excel.application") '创建Excel应用程序对象

Set SHuiZHunbook1 = SHuiZHunexcel1.Workbooks.Add '添加工作簿

Set SHuiZHunsheet1 = SHuiZHunbook1.Worksheets(1) '操作的工作表1

然后利用Microsoft ActivX Data Object 2.6 Library ADO进行数据库的连接:

adodblianjie1

rs1.Source = "select * from 水准表 "

rs1.ActiveConnection = conn1

rs1.Open

最后输出成EXCEL格式的文件:

For i = 0 To rs1.Fields.Count - 1

SHuiZHunsheet1.Cells(1, i + 1) = rs1.Fields(i).Name

Next

If rs1.RecordCount > 0 Then

rs1.MoveFirst

For i = 1 To rs1.RecordCount

SHuiZHunsheet1.Cells(i + 1, 1).Value = rs1.Fields("测站点")

SHuiZHunsheet1.Cells(i + 1, 2).Value = rs1.Fields("前视视高1")

SHuiZHunsheet1.Cells(i + 1, 3).Value = rs1.Fields("前视视高2")

SHuiZHunsheet1.Cells(i + 1, 4).Value = rs1.Fields("前视视距1")

SHuiZHunsheet1.Cells(i + 1, 5).Value = rs1.Fields("前视视距2")

SHuiZHunsheet1.Cells(i + 1, 6).Value = rs1.Fields("后视视高1")

SHuiZHunsheet1.Cells(i + 1, 7).Value = rs1.Fields("后视视高2")

SHuiZHunsheet1.Cells(i + 1, 8).Value = rs1.Fields("后视视距1")

SHuiZHunsheet1.Cells(i + 1, 9).Value = rs1.Fields("后视视距2")

SHuiZHunsheet1.Cells(i + 1, 10).Value = rs1.Fields("前视点高程")

SHuiZHunsheet1.Cells(i + 1, 11).Value = rs1.Fields("间视点视高")

SHuiZHunsheet1.Cells(i + 1, 12).Value = rs1.Fields("间视点视距")

SHuiZHunsheet1.Cells(i + 1, 13).Value = rs1.Fields("间视点高程")

rs1.MoveNext

Next

End If

SHuiZHunexcel1.Visible = True '决定excel是否可见

4 使用效果及结论

沉降监测是一项精密的工程测量,由于工作多,任务重,时间要求紧,如果利用常规方法,保质保量按时完成任务,难度很大。限于此因,我做了这个与沉降监测工作配套的程序,极大提高了工作效率。此软件已在工作中使用很长时间了,迄今为止运行稳定,性能、效果良好。由于篇幅所限只能列举天宝DINI03的仪器数据,把数据导入,部分数据处理与同行分享,以此共勉。

参考文献Visual Basic函数参考大全 人民邮电出版社赛奎春 李俊民编著

ISBN 978-7-115-15387-6 2007.4

测量学(第四版)同济大学出版社顾孝烈等编著

ISBN 978-7-5608-4458-8 2012.2

变形监测数据处理武汉大学出版社黄声享等编著

ISBN 978-7-307-08227-4 2010.10

上一篇:某大型五星级酒店电气设计 下一篇:美托洛尔治疗风湿性心脏病心力衰竭的临床效果...