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