基于ArcGIS Engine的建筑物沉降观测数据分析系统
针对沉降观测数据处理,利用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)。