朱湘東
摘 要:針對沉降觀測數(shù)據(jù)處理,利用Visual Studio C#.Net 作為開發(fā)工具,結合 ArcGIS的二次開發(fā)平臺 ArcGIS Engine 及Microsoft Office Access,設計開發(fā)了一個圖文一體化的沉降觀測數(shù)據(jù)分析系統(tǒng),實現(xiàn)沉降數(shù)據(jù)的快速處理及變形預測。
關鍵詞:沉降觀測;ArcGIS Engine;Access;圖文一體化
1 概述
為了確保建筑物的正常使用壽命和建筑物運營的安全性,有必要在建筑物施工和運營的始終對其進行變形觀測[1]。而作為最能反映建筑物的穩(wěn)定性、監(jiān)視其安全情況、研究其變形規(guī)律的變形監(jiān)測方法——沉降觀測在工程測量中越來越為人們所重視。
目前國內(nèi)的沉降觀測研究主要注重于對通過各種觀測手段獲取的大量沉降觀測數(shù)據(jù)進行數(shù)據(jù)管理系統(tǒng)方向的應用和嘗試,包括顯示、分析、預測,運用的中間軟件工具有Excel、ArcGIS、AutoCAD、Matlab等[2]。其對觀測數(shù)據(jù)進行分析的方式主要有如下兩種:
第一種是將高程數(shù)據(jù)手動輸入到 Excel 中進行簡單的數(shù)據(jù)分析,但是僅僅依靠簡單的 Excel 或是人工檢查整理,勢必會大大降低工作效率,并且只能完成簡單的分析和繪圖功能,不能進行精度評估和沉降趨勢預測。
第二種是利用專業(yè)的沉降觀測數(shù)據(jù)處理和分析軟件進行沉降數(shù)據(jù)分析,如帷幄沉降觀測數(shù)據(jù)處理和分析系統(tǒng)和ArcGIS等,但是這些軟件或多或少有缺陷:所占運行內(nèi)存較大、價格較貴、不方便用戶的簡單使用等等。
現(xiàn)實工作中,為了實現(xiàn)高效率的生產(chǎn),對沉降數(shù)據(jù)的分析及預測就迫切需要擺脫傳統(tǒng)的方式,用一個更加方便有效的系統(tǒng)來實現(xiàn)這些功能。本次設計以Visual Studio C#.Net 作為開發(fā)工具,結合 ArcGIS 的二次開發(fā)平臺 ArcGIS Engine 及現(xiàn)下比較輕便流行的、由微軟發(fā)布的關聯(lián)式數(shù)據(jù)庫管理系統(tǒng) Microsoft Office Access,開發(fā)了一個方便靈活、簡潔實用、可實時交互的、可實現(xiàn)圖文一體化的沉降觀測數(shù)據(jù)分析系統(tǒng)。
2 系統(tǒng)的設計
2.1 數(shù)據(jù)庫設計
沉降觀測原始高程數(shù)據(jù)比較多且復雜,分開管理會造成數(shù)據(jù)更新和分析的不便,我們本次利用關聯(lián)數(shù)據(jù)庫管理系統(tǒng)Access建立數(shù)據(jù)庫,將原始觀測數(shù)據(jù)全部錄入。
2.2 功能設計
沉降觀測數(shù)據(jù)分析系統(tǒng)主要功能模塊如圖1。
圖1 系統(tǒng)功能模塊
3 系統(tǒng)實現(xiàn)
本系統(tǒng)是在.Net 環(huán)境下,以C#程序開發(fā)語言作為系統(tǒng)開發(fā)程序語言,將ArcGIS Engine 作為第三方控件加載到 Visual Studio 2010 應用程序框架中構建ArcGIS Engine 二次開發(fā)程序。
3.1 數(shù)據(jù)加載
沉降觀測的原始高程數(shù)據(jù)存放在 Access數(shù)據(jù)庫,因此要完成沉降觀測原始高程數(shù)據(jù)的加載,必須要連接數(shù)據(jù)庫,才能把數(shù)據(jù)庫中的高程數(shù)據(jù)導入到 dataGridView1中。數(shù)據(jù)加載的部分代碼如下:
string ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;";
ConStr += @"Data Source = E:\沉降程序\沉降觀測\bin\Debug\cjgcsjk.accdb;";
string sql = "select * from GCSJ";
OleDbConnection conn = new OleDbConnection(ConStr);
conn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource=ds.Tables[0];
dataGridView1.Columns[0].HeaderText="點號";
dataGridView1.Columns[1].HeaderText="高程(m)";
dataGridView1.Columns[2].HeaderText="測期";
3.2 點擊查詢
要實現(xiàn)點擊查詢某一點的沉降信息,首先需要實現(xiàn)的是點擊查詢功能,即點擊某一觀測點即彈出屬性窗口、并將所點點的點號傳遞到屬性窗口以便實現(xiàn)查詢的功能。該部分功能放在MapControl的MouseDown事件中實現(xiàn)。
3.3 沉降量計算
將沉降觀測原始高程數(shù)據(jù)加載到屬性窗口的dataGridView1中之后,就可以進行沉降量計算工作了,沉降量包括單次沉降量和累計沉降量兩部分。將每個點的觀測數(shù)據(jù)按照測期先后進行排列后,將后一個測期的高程減去前一測期的高程即得到該測期的單次沉降量,將該測期的單次沉降量和前一測期的單次沉降量相加即得該測期的累計沉降量,并將計算結果放到dataGridView2中。
3.4 沉降曲線繪制
僅僅將沉降量列出來表示在dataGridView2的表格中還不夠直觀,因此需要將結果表示成沉降曲線圖,這樣就能夠更加直觀地反映出沉降趨勢。在繪制沉降量曲線是使用的是C#窗體應用程序中的Chart控件實現(xiàn)的。具體的實現(xiàn)代碼如下:
using System.Windows.Forms.DataVisualization.Charting;//添加引用
chart1.Series.Clear();
chart1.Series.Add("Series1");
chart1.Series["Series1"].ChartType = SeriesChartType.Spline;
chart1.Series["Series1"].Points.DataBind(DT_subsidence.AsEnumerable(),"Date", "AccumuSubsidence", "");
3.5 沉降趨勢預測
在進行沉降預測時采用的是灰色預測模型,利用C#語言完成了設計,預測方式分為時刻預測和時段預測兩種方式。
文章只考慮時間效應對建筑物沉降的影響,因此文章將采用一階一元預測模型GM(1,1)模型進行沉降預測。GM(1,1)模型[3]的實現(xiàn)步驟如下:
3.5.1 灰數(shù)的計算
某個系統(tǒng)的原始數(shù)據(jù)往往是無規(guī)律的,是隨機量,可以看作是在一定區(qū)域內(nèi)變化的灰色量。為了提高原始數(shù)據(jù)的規(guī)律性,對灰色量采用數(shù)據(jù)生成方式,獲得規(guī)律性較強的生成數(shù)列。用于灰色預測模型的灰數(shù)生成方法主要是累加生成法 (AGO -Accumulated Generating Operation)。
3.5.2 模型參數(shù)的解算
“1-AGO”數(shù)列的GM(1,N)預測模型進行白化微分后可以建立反映主因子與影響因子之間關系的方程模型,對所建的白化微分方程模型進行離散分析后可得一個線性方程組。對該線性方程組進行求解可得 GM(1,1)的最小二乘解,將計算得到的最小二乘結果代入白化微分方程并求解微分方程得到 x 預測值。
通過與專業(yè)統(tǒng)計軟件SAPP的預測結果比較,本系統(tǒng)預測的結果誤差較小,在精度允許的范圍內(nèi),預測成果可用。
4 結束語
文章采用ArcGIS Engine二次開發(fā)與.Net系統(tǒng)集成平臺,設計開發(fā)了基于ArcGIS Engine的圖文一體化的沉降觀測數(shù)據(jù)分析系統(tǒng),具有實用、易操作等特點,能滿足一般用戶的要求。
本設計開發(fā)的系統(tǒng)在功能和性能上還有很多的欠缺和不足,還需要結合用戶需求細化功能模塊,提高相關性能。比如在現(xiàn)在二維圖形的基礎上進行沉降觀測對象的三維建模,將沉降量這個因變量在圖上更好的與觀測時間、工程進度、建筑物高度等等因變量結合起來,這樣才能更好的進行沉降量分析和預測,由此才能更準確的指導和指揮生產(chǎn)建造。
參考文獻
[1]韓正,杜海霞,龍飛,等.高層建筑沉降觀測及其數(shù)據(jù)分析[J].城市勘測,2009(1):108-110.
[2]趙海衛(wèi),王芹,劉照永,等.基于ArcGIS的建筑物沉降觀測數(shù)據(jù)分析及三維模擬[J].城市勘測,2010(5):47-50.
[3]張顯富,郭淳.灰色預測模型及其在沉降預測中的應用[J].唐山學院學報,2002(3):657-658.