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