修补流量数据所运用的方法是将缺失断面所在路段的其他为缺失数据的断面在该时刻下数据的平均值进行修补。首先计算平均值,之后用得到的平均值代替原来有问题的数据,即update最初整合的流量表。该功能实现的核心代码如下:
string sql = @"SELECT round(A.V,0),LOSTDATA.FDT_TIME,LOSTDATA.RID,LOSTDATA.R_CODE "
+ "FROM (select avg(volume) V,R_CODE,TM FROM TEMP_5MVOL "
+ "GROUP BY R_CODE,TM) A,LOSTDATA "
+ "WHERE LOSTDATA.FDT_TIME=A.TM AND LOSTDATA.R_CODE=A.R_CODE";
//选择出缺失数据所在的路段,并计算出路段的流量平均值
DataTable table = db.getTable(sql);
int total = table.Rows.Count;
int current = 0;
foreach (DataRow row in table.Rows)
{
current++;
panel2.Width = (int)((1.0 * current / total) * panel1.Width);
//显示进度条的长度
string sq = "update temp_5mvol set volume = '" + row[0].ToString() + @"' where RID = '" + row[2].ToString() + @"'and TM='" + row[1].ToString() + @"'";
//将得到的平均值跟新原来表中的缺失数据
db.runSql(sq);
}
panel2.Width = panel1.Width;
button2.Enabled
= true;
}
(3)中间数据的导出
该模块可以满足用户对一段时间查询的需要,用户可以很容易的看出这一段时间内
架路上机动车流速度或者流量的变化,查询结果可以导出到Excel,便于用户对这一段时间的数据进行进一步的分析研究,同时这一段时间的数据可以以图表的形式显示出来,更加直观,如图5.4所示。
图 5.4 中间数据导出界面
系统实现的主要代码如下:
xlBook = xlApp.Workbooks.Add(true);//创建Excel应用程序
xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets["sheet1"];//创建Excel表单
Microsoft.Office.Interop.Excel.Range range;
range = xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[1, 4]);
range.Font.Size = 10;
range.Font.Name = "宋体";
//数据的导出
int rowcount = this.QueryGridView.Rows.Count; C#交通数据采集及整理方法的设计与实现(21):http://www.youerw.com/jisuanji/lunwen_274.html