本方法屬于智慧交通、車聯(lián)網(wǎng)領(lǐng)域,涉及車輛GPS數(shù)據(jù)的處理、分析和存儲(chǔ),具體是一種基于位置聚合的GPS信息存儲(chǔ)方法。
背景技術(shù):
車輛GPS位置信息數(shù)據(jù)量較大,每輛車每5秒上報(bào)一次GPS位置信息,這對(duì)系統(tǒng)存儲(chǔ)空間以及系統(tǒng)查詢、處理、分析的性能都造成了巨大的壓力。以杭州市公交車輛GPS為例,每天數(shù)據(jù)量達(dá)到5000萬(wàn)條,一個(gè)月系統(tǒng)需要存儲(chǔ)15億條GPS信息。
目前,許多大數(shù)據(jù)分析系統(tǒng)在數(shù)據(jù)庫(kù)的層面進(jìn)行了一定優(yōu)化,采用NOSQL作為持久化存儲(chǔ)引擎以解決海量信息檢索的需求,但這僅僅從數(shù)據(jù)庫(kù)引擎角度進(jìn)行了優(yōu)化(關(guān)系型數(shù)據(jù)庫(kù)轉(zhuǎn)為非關(guān)系型數(shù)據(jù)庫(kù)),并未解決系統(tǒng)存儲(chǔ)空間的壓力的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中存在的上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于位置聚合的GPS信息存儲(chǔ)方法,包括如下步驟:
一.系統(tǒng)接收車輛GPS信息后,首先判斷當(dāng)前緩存組件中是否已緩存有該車輛的聚合信息;若不存在,則生成新的聚合,并將新聚合加入緩存組件中;
二.若緩存組件中存在該車輛的聚合信息,則繼續(xù)判斷是否需要生成新的聚合;若不需要生成新聚合,則根據(jù)當(dāng)前GPS信息計(jì)算聚合項(xiàng),并更新緩存組件中的該車輛的聚合信息。
三.若需要生成新聚合,則根據(jù)當(dāng)前車輛GPS信息生成新的聚合,同時(shí)將舊聚合的數(shù)據(jù)添加到持久化存儲(chǔ)中。
進(jìn)一步的,步驟二中,是否需要生成新聚合的判斷條件包括:
條件1:當(dāng)前GPS信息的時(shí)間與緩存組件中GPS數(shù)據(jù)的更新時(shí)間的間隔是否在系統(tǒng)設(shè)定的合理區(qū)間內(nèi),超出該合理區(qū)間的,則重新生成聚合信息;
條件2:當(dāng)前GPS信息與緩存數(shù)據(jù)的位置信息是否超過(guò)系統(tǒng)設(shè)定的合理聚合區(qū)間內(nèi),超出聚合的虛擬圍欄范圍,則重新生成新聚合。
進(jìn)一步的,需要生成的聚合項(xiàng),包括聚合項(xiàng)數(shù)量、行駛里程、行駛時(shí)間、平均速度、??空緯r(shí)間、非營(yíng)運(yùn)里程、非營(yíng)運(yùn)時(shí)間。
進(jìn)一步的,該方法通過(guò)緩存組件對(duì)聚合的中間結(jié)果數(shù)據(jù)進(jìn)行臨時(shí)存儲(chǔ)。
進(jìn)一步的,該方法將聚合結(jié)果信息保存到持久化存儲(chǔ)中。
進(jìn)一步的,該方法對(duì)緩存組件和持久化存儲(chǔ)中的數(shù)據(jù)進(jìn)行查詢統(tǒng)計(jì),包括:監(jiān)控車輛的實(shí)時(shí)位置,對(duì)車輛的歷史軌跡進(jìn)行回放,對(duì)車輛的速度(進(jìn)行計(jì)算、統(tǒng)計(jì),對(duì)車輛的行駛里程進(jìn)行統(tǒng)計(jì)分析,對(duì)車輛的運(yùn)營(yíng)情況進(jìn)行統(tǒng)計(jì)分析。對(duì)車輛異常情況進(jìn)行統(tǒng)計(jì)分析。
進(jìn)一步的,該方法是基于位置聚合的優(yōu)化,存在以下影響優(yōu)化結(jié)果的因素:
車速:車輛行駛速度與優(yōu)化效率成反比。車速越慢,優(yōu)化效果越明顯;
車輛??繒r(shí)間:車輛??繒r(shí)間與優(yōu)化效率成正比,??康群驎r(shí)間越長(zhǎng),優(yōu)化效果越明顯。
本發(fā)明的基于位置聚合的GPS信息存儲(chǔ)方法,將原本存在于持久化存儲(chǔ)中的多條GPS信息,聚合成單條位置信息,從信息源組織形式、數(shù)據(jù)邏輯結(jié)構(gòu)層面對(duì)數(shù)據(jù)進(jìn)行優(yōu)化,從而達(dá)到提升存儲(chǔ)空間利用率、提升系統(tǒng)吞吐量和效率的目的。
該方法可適用多種場(chǎng)景。目前,該方法運(yùn)用于多地市(杭州、嘉興、寧波等)的公交出行及公交運(yùn)行監(jiān)測(cè)系統(tǒng)。同時(shí),對(duì)其他車輛或設(shè)備的GPS信息采集、處理的場(chǎng)景也具有較強(qiáng)的適用性。(方法不適用于需要精確記錄每條GPS信息中所有屬性的場(chǎng)景。)
運(yùn)用該方法的場(chǎng)景包括但不限于:
采集車輛GPS信息,監(jiān)控車輛的實(shí)時(shí)位置。
采集車輛GPS信息,對(duì)車輛的歷史軌跡進(jìn)行回放。
采集車輛GPS信息,對(duì)車輛的速度(包括運(yùn)營(yíng)速度、技術(shù)速度、運(yùn)送速度等)進(jìn)行計(jì)算、統(tǒng)計(jì)。
采集車輛GPS信息,對(duì)車輛的行駛里程進(jìn)行統(tǒng)計(jì)分析。
采集車輛GPS信息,對(duì)車輛的運(yùn)營(yíng)情況及異常情況進(jìn)行統(tǒng)計(jì)分析。
附圖說(shuō)明
圖1是本發(fā)明的基于位置聚合的GPS信息存儲(chǔ)方法流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
如圖1所示,本發(fā)明的基于位置聚合的GPS信息存儲(chǔ)方法,包括如下步驟:
一.系統(tǒng)接收車輛GPS信息后,首先判斷當(dāng)前緩存組件中是否已緩存有該車輛的聚合信息;若不存在,則生成新的聚合,并將新聚合加入緩存組件中;
二.若緩存組件中存在該車輛的聚合信息,則繼續(xù)判斷是否需要生成新的聚合;若不需要生成新聚合,則根據(jù)當(dāng)前GPS信息計(jì)算聚合項(xiàng),并更新緩存組件中的該車輛的聚合信息。
三.若需要生成新聚合,則根據(jù)當(dāng)前車輛GPS信息生成新的聚合,同時(shí)將舊聚合的數(shù)據(jù)添加到持久化存儲(chǔ)(數(shù)據(jù)庫(kù)系統(tǒng))中。
步驟二中,是否需要生成新聚合的判斷條件包括:
條件1:當(dāng)前GPS信息的時(shí)間與緩存組件中GPS數(shù)據(jù)的更新時(shí)間的間隔是否在系統(tǒng)設(shè)定的合理區(qū)間內(nèi),默認(rèn)為5分鐘,可根據(jù)實(shí)際業(yè)務(wù)需要進(jìn)行配置。即時(shí)間間隔超過(guò)5分鐘的GPS信息,則重新生成聚合信息,以保證數(shù)據(jù)的準(zhǔn)確性。
條件2:當(dāng)前GPS信息與緩存數(shù)據(jù)的位置信息是否超過(guò)系統(tǒng)設(shè)定的合理聚合區(qū)間內(nèi),默認(rèn)聚合區(qū)間圍欄范圍50米,可根據(jù)實(shí)際業(yè)務(wù)需要進(jìn)行配置。即以聚合起始位置為圓心設(shè)置虛擬圍欄,若新的GPS信息,超出聚合的虛擬圍欄范圍,則重新生成新聚合。
需要生成的聚合項(xiàng),包括但不限于:
聚合項(xiàng)數(shù)量:當(dāng)前聚合內(nèi)聚合的數(shù)據(jù)條數(shù)。每加入一條GPS信息數(shù)量+1。
行駛里程:當(dāng)前聚合內(nèi)行駛的總里程。通過(guò)多條信息間隔距離累加的方式進(jìn)行聚合。
行駛時(shí)間:當(dāng)前聚合內(nèi)行駛的總時(shí)間。通過(guò)多條信息間隔行駛時(shí)間累加的方式進(jìn)行聚合。
平均速度:當(dāng)前聚合內(nèi)的平均車速。通過(guò)行駛里程和行駛時(shí)間進(jìn)行計(jì)算平均速度。其中平均速度包括:運(yùn)營(yíng)速度、運(yùn)送速度、技術(shù)速度。
??空緯r(shí)間:當(dāng)前聚合內(nèi)??空镜臅r(shí)間。通過(guò),車輛位置信息判斷??繝顟B(tài),并累加??康臅r(shí)間。
非營(yíng)運(yùn)里程:當(dāng)前聚合內(nèi)非營(yíng)運(yùn)的里程,包括加油、回場(chǎng)、偏離行駛軌跡等情況。通過(guò)車輛行駛狀態(tài),判斷運(yùn)營(yíng)狀態(tài),并累加相應(yīng)里程。
非營(yíng)運(yùn)時(shí)間:當(dāng)前聚合內(nèi)非營(yíng)運(yùn)的時(shí)間。通過(guò)車輛行駛狀態(tài),判斷運(yùn)營(yíng)狀態(tài),并累加相應(yīng)時(shí)間。
其他:可根據(jù)實(shí)際業(yè)務(wù)添加對(duì)應(yīng)組件生成相應(yīng)其他聚合項(xiàng)。
該方法通過(guò)緩存組件對(duì)聚合的中間結(jié)果數(shù)據(jù)進(jìn)行臨時(shí)存儲(chǔ)。方法對(duì)緩存組件沒(méi)有具體軟硬件的要求,支持多種形式緩存,包括但不限于:自定義緩存系統(tǒng)、Riak分布式緩存系統(tǒng)、Redis分布式緩存系統(tǒng)等。
該方法將聚合結(jié)果信息保存到持久化存儲(chǔ)中。對(duì)持久化存儲(chǔ)沒(méi)有具體軟硬件的要求,支持多種主流持久化存儲(chǔ)架構(gòu)(關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)、非關(guān)系型NoSQL系統(tǒng)),包括但不限于:SQL SERVER數(shù)據(jù)庫(kù)、Oralce數(shù)據(jù)庫(kù)、MongoDb數(shù)據(jù)庫(kù)等。
該方法對(duì)緩存組件和持久化存儲(chǔ)中的數(shù)據(jù)進(jìn)行查詢統(tǒng)計(jì),實(shí)現(xiàn)相應(yīng)功能。包括但不限于:監(jiān)控車輛的實(shí)時(shí)位置,對(duì)車輛的歷史軌跡進(jìn)行回放,對(duì)車輛的速度(包括運(yùn)營(yíng)速度、技術(shù)速度、運(yùn)送速度等)進(jìn)行計(jì)算、統(tǒng)計(jì),對(duì)車輛的行駛里程進(jìn)行統(tǒng)計(jì)分析,對(duì)車輛的運(yùn)營(yíng)情況(班次、準(zhǔn)點(diǎn)率等)進(jìn)行統(tǒng)計(jì)分析。對(duì)車輛異常情況(超速、偏離軌跡等)進(jìn)行統(tǒng)計(jì)分析。
該方法是基于位置聚合的優(yōu)化,存在以下影響優(yōu)化結(jié)果的因素:
車速。車輛行駛速度與優(yōu)化效率成反比。車速越慢,優(yōu)化效果越明顯。車速影響的因素包括但不限于:道路擁堵情況、天氣情況、車輛性能等。
車輛??繒r(shí)間長(zhǎng)短。車輛??繒r(shí)間與優(yōu)化效率成正比。停靠等候時(shí)間越長(zhǎng),優(yōu)化效果越明顯。當(dāng)前車輛??繒r(shí)間,包括但不限于??空?、加油、場(chǎng)站休息、起點(diǎn)終點(diǎn)等候等。
測(cè)試實(shí)施例
測(cè)試環(huán)境:
服務(wù)器系統(tǒng):Windows Server 2008 R2
分布式緩存系統(tǒng):自定義鍵值對(duì)字典集合。
持久化存儲(chǔ):SQL Server 2012
測(cè)試流程
1)取得2016-01-01杭州公交車輛全天GPS信息數(shù)據(jù)作為測(cè)試輸入,共5000萬(wàn)條GPS信息。
2)搭建相應(yīng)的緩存組件及可持久化存儲(chǔ)。測(cè)試環(huán)境緩存組件通過(guò)自定義字典集合實(shí)現(xiàn)。持久化存儲(chǔ)使用SQL Server 2012數(shù)據(jù)庫(kù)系統(tǒng)。
3)運(yùn)行未進(jìn)行聚合優(yōu)化的原始程序,并將GPS信息結(jié)果記錄。
4)運(yùn)行聚合優(yōu)化的程序。分別運(yùn)行4次,每次將條件1、條件2參數(shù)配置為:5/0,5/10,5/50,5/100,并將結(jié)果記錄。
5)統(tǒng)計(jì)可持久化存儲(chǔ)中,表中的數(shù)據(jù)進(jìn)行對(duì)比,形成測(cè)試結(jié)果。
測(cè)試結(jié)果
以下為以杭州公交車輛一天GPS信息作為測(cè)試輸入的測(cè)試結(jié)果
其中條件1參數(shù),即時(shí)間間隔。條件2參數(shù),即聚合圍欄范圍。
本方法根據(jù)工程實(shí)踐中遇到的海量GPS存儲(chǔ)空間問(wèn)題,提出了基于位置聚合的GPS存儲(chǔ)優(yōu)化方法。通過(guò)設(shè)定聚合虛擬圍欄范圍,對(duì)車輛GPS信息進(jìn)行聚合運(yùn)算和存儲(chǔ),實(shí)現(xiàn)海量GPS數(shù)據(jù)的聚合壓縮,提升系統(tǒng)的性能和空間利用率。