■王海波 于海乾
(浙江有色測繪院浙江紹興312000)
基于VB的沉降觀測數據處理程序設計
■王海波 于海乾
(浙江有色測繪院浙江紹興312000)
在測量工程的實踐和科學研究活動中,沉降觀測占有重要的地位,工程建筑的興建,從施工開始到竣工,以及建成后整個運營期間都要不斷的監測,以便掌握沉降的情況,及時發現問題,保證工程建筑的安全。就準確處理沉降數據環節,下文敘述以VB(Visual Basic 6.0)為開發平臺,依靠Access和Excel等為輔助工具進行開發,分析了各自操作系統的優缺點,實現了VB的可視化界面和Access強大的數據庫存儲、可視化表述的功能,完成后的系統具有界面友好、操作簡單、易于掌握的特點。
本文程序設計充分發揮VB的可移植性、面向對象編程和Access強大的數據庫管理功能,實現了沉降數據的錄入、粗差剔除、數據平差、沉降量計算、沉降圖形分析以及成果輸出等功能。
數據處理 沉降分析 VB Access 數據庫
一般的沉降觀測流程是外業數據采集,內業處理數據產生需要的報表和圖形。數據處理也就成為沉降觀測的核心工作。傳統的作業方式是手工記錄,然后再將數據轉入到相應的軟件中處理,這種方式不僅工作量大而且還極容易出錯。在計算機飛速發展的時代,如何能使沉降觀測數據處理工作變得更簡單、更完善是一個亟待解決的問題,為此本文提出了VB結合matlab以及access數據庫設計程序來解決以上問題
2.1數據的采集模型
沉降觀測的原始處理數據一般是以Excel形式存儲的,為了方便快捷的采集導數據,設計在VB的操作環境下,運用ActiveX部件建立VB與Excel的鏈接,編寫VB語句將Excel中的沉降觀測數據直接導入到VB的控件中進行處理。
2.2觀測量的平差模型
首先根據觀測量的特征確定最佳的的平差模型與方法,根據模型的理論和方法建立相應的函數模型,結合最小二乘原理采用條件平差模型對數據進行平差。
2.3沉降數據的分析模型及成果輸出
對平差后的觀測數據進行解算,計算出累計沉降量、本次沉降量等分析數據,繪制各種沉降曲線圖,對未來若干天各點的沉降量進行分析預測,將處理的數據及分析圖形輸出到指定的文件夾中。
2.4沉降觀測數據處理系統的設計與開發
系統是針對數據處理內業來設計的,根據沉降觀測的一般流程來完成工程作業。主要功能有:調用外部數據,粗差剔除,數據平差,沉降分析及預測,曲線繪制,成果輸出。
該程序是采用面向對象的程序語言Visual Basic及MATLAB和、Access、Excel等為輔助工具來開發的。Visual Basic是一種可視化的、面向對象和采用事件驅動方式和結構化高級程序設計語言,可用于開發Windows環境下和各類應用程序。MATLAB是一套集數值分析、矩陣運算、信號處理和圖形顯示于一體的高性能數學軟件,計算能力突出,提供方便快捷的計算和繪圖功能。由于沉降數據存儲于數據庫中,由Access數據庫下建立的數據別對沉降數據進行存儲及管理功能,技能保證數據的批量處理,又可以使數據安全可靠,再數據格式轉換和數據輸出等方面則采用Excel。
4.1數據的錄入
在VB中采用MSFlexGrid控件接收數據,MSFlexGrid用來接收直接導入的Excel數據或是手工直接輸入的數據,Excel中按一定格式存儲的數據,數據為每個觀測點的高差。界面上方的文本框用來輸入已知點和觀測點之間的距離,必須由已知開始按觀測路線的順時針方向進行輸入,并將之依次添加進ComboBox中去。
實現導入的主要程序語句為:
Dim ex As Excel.Application
Dim exwbook As Excel.Workbook
Dim exsheet As Excel.Worksheet
Dim rows,cols,maxCols As Integer
Text1.Visible=False'把Excel中數據導入導入到窗體上的控件中
CommonDialog1.DialogTitle="excel數據表"
CommonDialog1.InitDir=App.Path
CommonDialog1.FileName=""
CommonDialog1.Filter="Excel報表(*.xls)|*.xls"
CommonDialog1.Action=1
str_temp=CommonDialog1.FileName
Set ex=CreateObject("excel.application")
Set exwbook=ex.Workbooks.Open(str_temp)
Set exsheet=exwbook.Worksheets("sheet1")
rows=exsheet.UsedRange.rows.Count
cols=exsheet.UsedRange.Columns.Count
4.2數據平差的實現方法
雖然VB的界面美觀,操作方便、簡單,但VB對矩陣的運算非常的不方便。而MATLAB對矩陣的各種計算、圖像的繪制十分簡單快捷。因此,在VB的操作平臺下調用MATLAB進行沉降數據的平差計算是非常方便、實用的。
(1)MATLAB從VB提取矩陣數據:利用PutFull Matrix方法將要提取的數組bb()、q()、g1()傳送至MATLAB中的三個矩陣變量中。然后通過Execute(Command as String)方法調用MATLAB執行一條Command字符串決定的MATLAB命令計算Naa、常數項K和改正數V。
(2)MATLAB將計算結果還原到VB數組中:利用GetFull Matrix方法將上面計算所得數據Naa、改正數V傳送到VB程序的數組s1()、s3()中,計算未知點的改正高程。
實現此過程的主要代碼為:
Dim matlabobject As Object
Set matlabobject=CreateObject("matlab.application")
Call matlabobject.putfullmatrix("tt","base",bb,xb)'把數據導入MATLAB
Call matlabobject.putfullmatrix("cc","base",q,xb)中去
Call matlabobject.putfullmatrix("dd","base",g1,xb)
matlabobject.Execute("tt1=tt'")'A轉置
matlabobject.Execute("qq1=inv(cc)")'Q逆
matlabobject.Execute("nbb=tt*qq1*tt1")'Naa在s1(1,1);中
Call matlabobject.getfullmatrix("nbb","base",s1,xb)'把數據導出
s2(1,1)=Format(1/s1(1,1),"##,##0.00000")MATLAB中去
Call matlabobject.putfullmatrix("nbb1","base",s2,xb)
matlabobject.Execute("kk1=nbb1*dd")'K
matlabobject.Execute("xx1=qq1*tt1*kk1")'求v
Call matlabobject.getfullmatrix("xx1","base",s3,xb) matlabobject.Execute("v1=xx1'")'v轉置
matlabobject.Execute("vb1=v1*cc*xx1")'vpv
本文中數據均采用統計學工具SPSS22.0軟件,計量資料為患者的生活質量評分和患者的疼痛評分,差異比較結果P<0.05表示有統計學意義。
Call matlabobject.getfullmatrix("vb1","base",s4,xb)
xn=Format(Sqr(s4(1,1))*1000,"##0.0000")'單位權中誤差
End Sub
4.3沉降解算的實現方法
該計算模塊的對建筑物的測量平差后數據進行處理,沉降分為本次沉降和累計沉降兩項,本次沉降是按觀測時間順序后一次觀測與前一次觀測之差。累計沉降量是所有觀測本次沉降量的代數和。
實現此程序代碼:
a1=Form3.msh1.rows-3
Form4.msh1.rows=b1*a1+1
'Form4.msh1.cols=Form3.msh1.cols
For j=1 To b1
r1=(j-1)*a1+1
r2=(j-1)*a1
Form4.msh1.TextMatrix(r1,4)=Str(0)
Form4.msh1.TextMatrix(r1,5)=Str(0)
For i=1 To a1
Form4.msh1.TextMatrix(r2+i,1)=Form3.msh1.TextMatrix(1,j +1)
Form4.msh1.TextMatrix(r2+i,2)=Form3.msh1.TextMatrix(i+ 1,1)
Form4.msh1.TextMatrix(r2+i,3)=Form3.msh1.TextMatrix(i+ 1,j+1)
Next i
For i=2 To Form3.msh1.rows-3
Form4.msh1.TextMatrix(r2+i,4)=Format(Val(Form4.msh1. TextMatrix(r2+i,3))-Val(Form4.msh1.TextMatrix(r2+i-1,3)),"##, ##0.0000")Form4.msh1.TextMatrix(r2+i,5)=Format(Val(Form4.msh1. TextMatrix(r2+i-1,5))+Val(Form4.msh1.TextMatrix(r2+i,4)),"##, ##0.0000")
Next i
Next j
4.4數據庫設計
由于沉降觀測所得數據與解算數據模型簡單,該數據庫采用如下模型設計數據表:

表1 數據表格式
基于VB與Access數據庫程序設計的最主要目的在于數據處理高效準確,數據模型清晰簡單,VB窗體設計界面美觀,處理操作人性化。設計程序的重點是數據處理過程中粗差探測、數據平差和沉降量圖形分析。通過對粗差探測和預測模型的研究,決定采用拉達準則對原始數據進行粗差探測,并刪除包含粗大誤差的數據;采用條件平差對數據進行平差;計算和曲線圖的繪制。Access數據庫小巧實用,適合存儲沉降觀測的簡單數據。本設計能夠在簡單的數據處理方面做到代碼簡單,功能全面。界面簡潔,操作便利!
[1]黃聲享.變形監測數據處理 [M].武漢:武漢大學出版社,2003.
[2]武漢測繪科技大學測量平差教研室.測量平差基礎 [M].北京:測繪出版社,1996.
[3]The Math-Works Inc.Matrix VB Guide[z].The Math-Works Inc,2000.
TU196.2[文獻碼]B
1000-405X(2016)-7-326-2