5.2.3 交通数据整理
中间数据生成本系统的主界面包括4个页面,分别是生成校验阈值表,阈值表,查看中间数据库,中间数据库生产。界面如图5.3所示。
系统运行时默认连接SQL Server 2005数据库,所有数据都直接从数据库中获取,得到的中间数据库也存入数据库中。
中间数据库生成的实现代码主要如下:
private void button_merger_Click(object sender, EventArgs e)
{
Thread th = new Thread(mergeVol);//调用合并流量的线程,以显示进度
th.Start();
}
long i = 1;
int total = table1.Rows.Count;
int current = 0;
foreach (DataRow row in table1.Rows)
{
current++;
panel_process.Width = (int)(( 1.0*current/total) * panel_container.Width);//根据插入数据库的完成比例显示进度条的进度
}
图 5.3 数据整理界面
(1)合并数据功能的实现
合并数据主要是指将五分钟的线圈数据根据线圈断面关系合并为五分钟的断面数据,包括流量和速度两项数据。
流量数据的合并原理为:
一,计算线圈断面流量=∑∑线圈5min流量(第一个∑将线圈断面各组线圈流量加总,第二个∑将12个5min流量相加)
二,计算路段流量=Max(断面流量),剔除因同一路段内不同线圈断面流量的差异。
三,针对线圈损坏情况下的修正,用历史数据修正
四,流量修正=小时流量*断面线圈个数*12/实际统计5min数据组数。
速度数据的合并采用的是流量加权的方式,其原理如下:
一,以流量加权的方式,将每个线圈的车速统计成某路段速度,计算公式为:∑∑(5min流量*速度)/∑∑(5min流量)Where Max(流量)断面。
二,针对线圈损坏情况下的修正,用历史数据修正 应搞清楚每个路面线圈铺设情况及其返回值情况。
(2) 缺失性判断和修补数据功能的实现
缺失性判断标记出原始数据中有问题的数据,本系统中标记的是白天流量和速度都为0的数据项,然后用所在路段的平均值代替有缺陷的数据,并跟新合并后的数据,从而实现数据修补的功能。下面以流量数据跟新为例,简要说明实现该功能的代码。
缺失性判断的sql语句如下所示,判断出问题数据后,系统会把这些数据标记并计入到新的表格LOSTDATA中。这句sql所实现的功能是选择出白天,即早上6点至晚上10点间所有项为0的有误数据。
string sql = @"select substr(sdeviceid,0,length(sdeviceid)-3) RID,to_char(fdt_time,'yyyy-mm-dd hh24:mi') FDT_TIME,SUBSTR(fstr_loopgroupid,0,length(fstr_loopgroupid)-5) R_CODE from hist_5mloopgroup_gj0,overheadcoil where (to_char(FDT_TIME,'hh24:mi')>='06:00' and to_char(FDT_TIME,'hh24:mi')<='22:00') and (FINT_LV=0 and FINT_LS=0 and FINT_MV=0 and FINT_MS=0 and FINT_SV=0 and FINT_SS=0 and FINT_OCCUPY=0) and hist_5mloopgroup_gj0.fstr_loopgroupid = overheadcoil.bm_code and TO_CHAR(FDT_TIME,'YYYY-MM-DD')>='" +var1 + @"' AND TO_CHAR(FDT_TIME,'YYYY-MM-DD')<='" + var2 + @"'"; C#交通数据采集及整理方法的设计与实现(20):http://www.youerw.com/jisuanji/lunwen_274.html