亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于線路聚類的gps數(shù)據(jù)壓縮存儲方法

文檔序號:5873460閱讀:164來源:國知局
專利名稱:基于線路聚類的gps數(shù)據(jù)壓縮存儲方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種基于線路聚類的GPS數(shù)據(jù)壓縮存儲方法,用于交通運(yùn)輸業(yè)運(yùn)輸線 路GPS數(shù)據(jù)的壓縮存儲,屬于數(shù)據(jù)庫技術(shù)領(lǐng)域。
背景技術(shù)
數(shù)據(jù)壓縮分為有損壓縮和無損壓縮兩種,有損壓縮可以損失一部分原始數(shù)據(jù)的信 息;無損壓縮則要求原始數(shù)據(jù)的信息一點(diǎn)都不能損失,壓縮數(shù)據(jù)能夠完整地還原為原始數(shù) 據(jù)。本發(fā)明基于線路聚類的GPS數(shù)據(jù)壓縮存儲方法屬于無損壓縮方法。目前一般的無損壓縮方法都是把原始數(shù)據(jù)文件看作一個字節(jié)流,通過重新編碼或 者尋找重復(fù)出現(xiàn)的串來進(jìn)行壓縮,例如rar。這種方法有兩個缺點(diǎn),一是對于特定類型的數(shù) 據(jù),無法利用到其獨(dú)有的某些性質(zhì)來為壓縮服務(wù);二是不支持實(shí)時的寫入和讀取。

發(fā)明內(nèi)容
本發(fā)明旨在針對交通運(yùn)輸線路的GPS數(shù)據(jù)具有大量重復(fù)的特點(diǎn),提出基于線路聚 類的GPS數(shù)據(jù)壓縮存儲方法,可以隨時壓縮新數(shù)據(jù),同時支持?jǐn)?shù)據(jù)的實(shí)時寫入和讀取。本發(fā)明的技術(shù)方案是基于線路聚類的GPS數(shù)據(jù)壓縮存儲方法,用于交通運(yùn)輸線 路數(shù)據(jù)處理,其程序是步驟1 讀取一條新的GPS數(shù)據(jù)X ;步驟2 如果X與聚類數(shù)據(jù)CF中某個聚類線段L的距離足夠接近,轉(zhuǎn)到步驟8 ;否 則進(jìn)入下一步驟;步驟3 將X以原始的未壓縮的數(shù)據(jù)格式寫入未壓縮的數(shù)據(jù)UD ;步驟4 如果未壓縮的數(shù)據(jù)UD的大小超過了某個預(yù)定義的數(shù)值,進(jìn)入下一步驟;否 則轉(zhuǎn)到步驟9,程序結(jié)束;步驟5 對數(shù)據(jù)UD進(jìn)行聚類分析,尋找新的近似擬合線段;步驟6 如果找到新的線段方程,將其以聚類信息文件格式寫入聚類數(shù)據(jù)CF,進(jìn)入 下一步驟;否則轉(zhuǎn)到步驟9,程序結(jié)束。步驟7 把UD中的每一條數(shù)據(jù)作為新的輸入數(shù)據(jù)X,并把UD清空,返回步驟1 ;步驟8 計算數(shù)據(jù)X的壓縮格式,并將其以壓縮數(shù)據(jù)文件格式寫入壓縮數(shù)據(jù)CD ;步驟9:結(jié)束。所述聚類線段由聚類分析算法獲得,所述聚類分析算法如下步驟21 用基于密度的聚類方法,去除異常點(diǎn);步驟22 利用向量夾角的方法,找出初始的r個分類好的點(diǎn)集;步驟23 對每個點(diǎn)集都進(jìn)行m維線性擬合,得到r條線段;步驟24:對除了異常點(diǎn)的每個數(shù)據(jù)點(diǎn),根據(jù)它到r條線段的距離進(jìn)行重新歸類,得 到r個新的點(diǎn)集;步驟25 利用類似k-means的思路,檢查每個非異常點(diǎn)的歸類是否改變,如果改變,轉(zhuǎn)到步驟23 ;如果不改變,則進(jìn)入下一步驟;步驟26 將得到的r條線段以聚類信息文件格式寫入聚類數(shù)據(jù)CF。3.如權(quán)利要求1所述的GPS數(shù)據(jù)壓縮存儲方法,其特征在于所述GPS數(shù)據(jù)的存 儲格式分為聚類信息文件、壓縮數(shù)據(jù)文件和未壓縮的數(shù)據(jù)三種;所述聚類信息文件存儲在文件“終端號.line”里,該文件分為兩個部分第一部 分是概要信息,共8個字節(jié),前4個字節(jié)表明這個聚類文件共計有多少個線段r,后4個字節(jié) 表明每個線段的維數(shù)m;第二部分是r個m維線段,每個線段用16(m+l)個字節(jié)來表示,前 16m字節(jié),分別表示m個維度上的直線斜率和截距,最后的16個字節(jié),是前m個斜率和截距 值的累加;所述壓縮數(shù)據(jù)文件存儲在文件“終端號.cpr”里,該文件分為索引區(qū)和存儲區(qū),所 述索引區(qū)分為三個部分前4個字節(jié)表明日期索引的項(xiàng)數(shù)h ;后面是h個索引項(xiàng)數(shù)據(jù),每個 索引項(xiàng)數(shù)據(jù)最前面4個字節(jié)表示日期,中間8個字節(jié)長整型數(shù)表示該索引項(xiàng)所代表一天的 數(shù)據(jù)在文件中的起始位置,后4個字節(jié)整數(shù)表明這個日期對應(yīng)的數(shù)據(jù)的大??;所述存儲區(qū) 對應(yīng)于索引項(xiàng)按天存儲壓縮的GPS數(shù)據(jù);所述未壓縮的數(shù)據(jù)存儲在文件“終端號.pos”里,該文件是按時間順序簡單存儲的 原始數(shù)據(jù)。本發(fā)明基于線路聚類的GPS數(shù)據(jù)壓縮存儲方法具有以下優(yōu)點(diǎn)1、節(jié)約了數(shù)據(jù)的存儲空間。由于壓縮以后的數(shù)據(jù)存儲的主要是與特定模式的差 值,而不是完整的原始數(shù)據(jù),所以存儲空間大大減小,只有原來的50%不到。2、本存儲方法支持?jǐn)?shù)據(jù)的實(shí)時讀取和存儲。對于新產(chǎn)生的數(shù)據(jù),這個算法可以根 據(jù)已有的一些聚類信息,直接把新數(shù)據(jù)變?yōu)閴嚎s格式寫入壓縮文件;而若想訪問某些數(shù)據(jù), 也可以根據(jù)數(shù)據(jù)文件中的索引結(jié)構(gòu)讀取對應(yīng)的壓縮數(shù)據(jù),并還原為原始的數(shù)據(jù)格式。這一 點(diǎn)是相比于rar等針對數(shù)據(jù)文件的壓縮算法的主要優(yōu)點(diǎn)。3、為了壓縮數(shù)據(jù)而從原始數(shù)據(jù)集中挖掘出來的數(shù)據(jù)模式,本身也可以作為某種 “概化”的數(shù)據(jù),為高層的數(shù)據(jù)分析服務(wù)。比如,如果想分析一下某輛公交車的運(yùn)行情況,那 么就不用再從原始數(shù)據(jù)重新分析了,這種模式已經(jīng)在壓縮階段就被挖掘出來了。


圖1是本發(fā)明壓縮存儲方法的程序圖;圖2a是本發(fā)明壓縮存儲方法的聚類信息文件存儲格式圖;圖2b是圖2a中線段i的詳細(xì)存儲格式圖;圖3a是本發(fā)明壓縮存儲方法的壓縮數(shù)據(jù)文件存儲格式圖;圖3b是圖3a中每個存儲區(qū)的壓縮數(shù)據(jù)存儲格式圖。
具體實(shí)施例方式本發(fā)明基于線路聚類的GPS數(shù)據(jù)壓縮存儲方法(如圖1所示)分為兩部分程序,第 一部分為聚類分析程序,是對未分類數(shù)據(jù)進(jìn)行聚類分析,以識別出部分交通運(yùn)輸線路。第二 部分為比較擬合程序,是對采集的新數(shù)據(jù)運(yùn)用第一部分程序已獲得的聚類結(jié)果進(jìn)行分類, 如果能夠被某一段線路較好地近似擬合,那么就以壓縮格式存儲;否則就暫時存儲在未壓縮的數(shù)據(jù)里,有待運(yùn)用第一部分程序進(jìn)行聚類分析。在最初任何線路都沒被識別出來的時 候,所有新數(shù)據(jù)都是被存在未壓縮部分的,直到未壓縮數(shù)據(jù)的大小超過了一定限度,觸發(fā)了 第一部分程序運(yùn)行對其進(jìn)行聚類分析,部分被聚類的數(shù)據(jù)就可以以壓縮格式存儲了。聚類分析程序的算法步驟如下l、m維線性擬合給出n 個 m 維向
我們可以用一組線性參數(shù)方程來擬合這組向量
假設(shè)... , Xn對應(yīng)的參數(shù)值分別為、,t2,. . .,tn,我們需要確定一
組 使得目標(biāo)函數(shù)
最小化。我們解方程組% 祉可以求得名——乂 j=i , 2、m維點(diǎn)與m維線段的距離對于一條用參數(shù)表示的m維直線L = (kit+lv k2t+b2, ... , kmt+bm),如果對t的取 值范圍進(jìn)行限定,令te [tfflin, t_],那么就得到了一條m維空間中的線段。對于一個給定 的m維點(diǎn)X = (Xl,x2,...,xffl),如果我們想用線段L上的某一個點(diǎn)對其進(jìn)行近似,可以對目
標(biāo)函數(shù)g⑴二t(V+、-x)2進(jìn)行最小化。當(dāng)不限制t的范圍時,解一次方程—=0,可
以求得當(dāng)
時,g(t)取得最小值g(t。pt)。如果t的范圍受到了限制,
t e [tmin,tmax],那么當(dāng) t。pt g [tmin,tmax]時,g(t)的最小值仍然是 g(t。pt),如果 t。pt > tmax, 那么g(t)的最小值是g(t_),如果t。pt<tmin,那么g(t)的最小值是g(tmin)。對于給定的 點(diǎn)X和線段L,我們記g(t)的最小值為d(X,L),對應(yīng)的t值為td。3、通過聚類分析找到公交線路的擬合線段尋找線路的擬合線段分為三步。 第一步用基于密度的聚類方法,去除異常點(diǎn)。任何兩個點(diǎn)Xi = (xn, x12, ... , xlm),X2 = (x21, x22, ... , x2m),我們可以定義它們之
間的距離為街不,
,其中0 i為各個維的權(quán)重,引入它是為了使各個維的
差值分布范圍基本一樣,以免某些維因?yàn)槿≈捣秶^小而失去作用。在初始的時候,每個點(diǎn) 自己屬于單獨(dú)的一個類,如果某兩個類之中有兩個點(diǎn)的距離小于某個我們設(shè)定的閾值,那 么就把這兩個類合并為一個類,不斷進(jìn)行這個過程,直到類的數(shù)目不再變化為止。最后檢查 所有的類,如果有的類含有的點(diǎn)數(shù)量很少,那么我們就可以認(rèn)為這個類里的點(diǎn)是異常點(diǎn),予 以去除。
第二步找出初始的聚類中心。這里的關(guān)鍵問題是需要把位置點(diǎn)分為幾個類,每個類內(nèi)的點(diǎn)應(yīng)該可以較好地用直 線段來擬合。我們的方法是這樣的首先把位置點(diǎn)信息按照時間的先后排序,得到的點(diǎn)序列 為XpX,,... ,Xn;從Xi出發(fā),向前走b個點(diǎn),計算向量P = Xb-Xi,再向前走b個點(diǎn),計算向量 P' =X2b_Xb,如果向量P和P'的夾角小于一定的閾值,那么我們就認(rèn)為X2,...,&是 近似分布在一條直線上的,然后令P = Xm-Xi,繼續(xù)以b個點(diǎn)為單位向前探索,直到發(fā)現(xiàn)某個 P' = Xib-X(i_1)b與P的夾角大于設(shè)定的閾值,那么肯定從X(i_1)b,. . . ,XiW之中某個點(diǎn)開始, 線路走向發(fā)生了轉(zhuǎn)折我們對其中的每個點(diǎn)X做檢測,計算向量xib-x與X-Xi的夾角,使得夾 角最大化的那個點(diǎn)X就是轉(zhuǎn)折點(diǎn)。這樣就識別出了可以擬合一條線段的點(diǎn),X” X2,. . .,X。 從X的后一個點(diǎn)重新開始上述過程,最后就可以把所有的點(diǎn)都分到幾條線段上。我們假設(shè) 上述過程可以把初始點(diǎn)集劃分為r個集合,G” G2,. . .,4。我們對每個集合分別進(jìn)行線性 擬合,就得到了 r條直線,我們把每條直線的t值設(shè)定為W,65535],就得到了 r條線段L” L2,...,Lp這個可以作為初始的聚類中心。在對&進(jìn)行線性擬合的過程中,還需要指定& 中每個點(diǎn)對應(yīng)的t值。假設(shè)&中的點(diǎn)按時間順序排列為XnX2,...,X。,那么&對應(yīng)的、設(shè)
60000,. ^ 為2500 + 17Tr(廣 1)。第三步,用類似k-means的方法對擬合線段進(jìn)行修正。根據(jù)得到的L2,. . .,Lr,對每一個點(diǎn)X計算重新計算分類,把X加入到其距離最 近的那個線段所代表的類中去。再根據(jù)新的聚類結(jié)果,計算出新的‘ L2,. . .,Lp重復(fù)這 個過程,直到所有點(diǎn)的分類都不再改變?yōu)橹埂1容^擬合程序的步驟如下1、對新數(shù)據(jù)的比較和存儲對于一條新接收的位置數(shù)據(jù)X,我們查看所有已被發(fā)現(xiàn)的線段L,計算X與L的距 離,選擇距離最小的那條線段。如果最小距離小于某個預(yù)定的值,那么我們就把它以“線段 編號+參數(shù)t+差值”的方式來存儲;如果最小距離比預(yù)定的閾值大,那么我們認(rèn)為它還不 是一個目前可以分類的點(diǎn),暫時先以完整的格式存儲在未壓縮的數(shù)據(jù)中。對于以壓縮格式存儲的數(shù)據(jù),它主要由三部分組成,線段編號1,參數(shù)t和差值。線 段編號是指預(yù)先通過聚類的方法找到的線段的編號,這個我們用一個字節(jié)來存,最多可以 表示256條不同的線段,這個是夠用的,因?yàn)橐粋€公交線路實(shí)際分的段數(shù)是要遠(yuǎn)遠(yuǎn)小于這 個數(shù)字的。參數(shù)t用兩個字節(jié)來存儲,表示0 65535。通過1和t可以確定一個點(diǎn)X的近 似值X’。在1和t之后,我們只記錄X和X’的差值,因?yàn)橐话銇碚fX和X’已經(jīng)很接近了, 所以它們的差值相對于原始數(shù)據(jù)來說,存儲代價會小很多。而且由于有1和t,根據(jù)差值就 可以把原始數(shù)據(jù)無損地恢復(fù)回來。假設(shè)要存儲的差值數(shù)據(jù)為DX = (dXl,dx2, . . . , dxffl),這個差值我們用一個位流bs 來表示,dXl,dx2,. . .,dxm的值存在bs中,bs分為m個部分,每個部分前面4位表示這個差 值需要用多少位來表示,大小為0 15,根據(jù)前面4位的指示,我們讀入后面的相應(yīng)位數(shù)據(jù), 這是用補(bǔ)碼表示的整數(shù),這樣就取得了 dXi的值。每個差值位流bs占用整數(shù)個字節(jié),比如 可能實(shí)際用到的位流只需要29位,那么也用完整的4個字節(jié)來存。這個是為了使壓縮文件的結(jié)構(gòu)嚴(yán)整,防止因一條記錄發(fā)生錯誤而波及到后面的記錄。2、數(shù)據(jù)的存儲格式每個GPS終端的存儲數(shù)據(jù)分為三部分,分別存在三個文件里。1)聚類信息文件,存儲在文件“終端號.line”里。該文件分為兩個部分第一部 分是概要信息,共8個字節(jié),前4個字節(jié)表明這個聚類文件共計有多少個線段r,后4個字 節(jié)表明每個線段的維數(shù)m;第二部分是r個m維線段,每個線段用16(m+l)個字節(jié)來表示, 前16m字節(jié),分別表示m個維度上的直線斜率和截距,最后的16個字節(jié),是前m個斜率和截 距值的累加。聚類信息文件的結(jié)構(gòu)可參見圖2。圖2a是完整的聚類信息文件結(jié)構(gòu)圖,圖2b 是線段在文件中的詳細(xì)格式,圖2b中的每個存儲單元都表示一個8字節(jié)雙精度浮點(diǎn)數(shù)。2)壓縮數(shù)據(jù)文件,存儲在文件“終端號.cpr”里。該文件分為索引區(qū)和存儲區(qū),索 引區(qū)分為三個部分前4個字節(jié)表明日期索引的項(xiàng)數(shù)h ;后面緊跟了 h個索引項(xiàng),每個索引 項(xiàng)索引某一天數(shù)據(jù)在文件中的位置,4個字節(jié)分別表示年、月、日、周,中間8個字節(jié)長整型 數(shù)表示該索引項(xiàng)所代表一天的數(shù)據(jù)在文件中的起始位置,是從文件頭開始算起的字節(jié)數(shù), 后4個字節(jié)整型數(shù)表明數(shù)據(jù)的大小,單位是記錄數(shù);存儲區(qū)對應(yīng)于索引項(xiàng)按天存儲的壓縮 格式GPS數(shù)據(jù)。壓縮文件格式見圖3。圖3a是壓縮文件的整體結(jié)構(gòu),圖3b是一條壓縮數(shù)據(jù) 記錄的格式。每個數(shù)據(jù)存儲區(qū)一般都存儲了多條壓縮格式的記錄。3)暫時未壓縮的數(shù)據(jù),存儲在文件“終端號.pos”里。是原始數(shù)據(jù)的按時間順序 的簡單存儲。3、對壓縮數(shù)據(jù)的訪問 對于壓縮的數(shù)據(jù),可以根據(jù)給定的日期-時間間隔,進(jìn)行部分訪問。被壓縮的數(shù)據(jù) 都是按照時間順序進(jìn)行存儲的,而且在開頭根據(jù)日期做了索引,根據(jù)給定的時間間隔,我們 可以根據(jù)日期索引把日期在時間間隔以內(nèi)的數(shù)據(jù)塊讀出來,在去掉第一個塊中處于起始時 間以前的數(shù)據(jù)和最后一個塊中處于終止時間以后的數(shù)據(jù),就得到了在指定時間范圍內(nèi)的數(shù) 據(jù)。
權(quán)利要求
基于線路聚類的GPS數(shù)據(jù)壓縮存儲方法,用于交通運(yùn)輸線路數(shù)據(jù)處理,其特征在于包括如下程序,步驟1讀取一條新的GPS數(shù)據(jù)X;步驟2如果X與聚類數(shù)據(jù)CF中某個聚類線段L的距離足夠接近,轉(zhuǎn)到步驟8;否則進(jìn)入下一步驟;步驟3將X以原始的未壓縮的數(shù)據(jù)格式寫入未壓縮的數(shù)據(jù)UD;步驟4如果未壓縮的數(shù)據(jù)UD的大小超過了某個預(yù)定義的數(shù)值,進(jìn)入下一步驟;否則轉(zhuǎn)到步驟9,程序結(jié)束;步驟5對數(shù)據(jù)UD進(jìn)行聚類分析,尋找新的近似擬合線段;步驟6如果找到新的線段方程,將其以聚類信息文件格式寫入聚類數(shù)據(jù)CF,進(jìn)入下一步驟;否則轉(zhuǎn)到步驟9,程序結(jié)束;步驟7把UD中的每一條數(shù)據(jù)作為新的輸入數(shù)據(jù)X,并把UD清空,返回步驟1;步驟8計算數(shù)據(jù)X的壓縮格式,并將其以壓縮數(shù)據(jù)文件格式寫入壓縮數(shù)據(jù)CD;步驟9結(jié)束。
2.如權(quán)利要求1所述的GPS數(shù)據(jù)壓縮存儲方法,其特征在于所述聚類線段由聚類分 析算法獲得,所述聚類分析算法如下步驟21 用基于密度的聚類方法,去除異常點(diǎn);步驟22 利用向量夾角的方法,找出初始的r個分類好的點(diǎn)集;步驟23 對每個點(diǎn)集都進(jìn)行m維線性擬合,得到r條線段;步驟24 對除了異常點(diǎn)的每個數(shù)據(jù)點(diǎn),根據(jù)它到r條線段的距離進(jìn)行重新歸類,得到r 個新的點(diǎn)集;步驟25 利用類似k-means的思路,檢查每個非異常點(diǎn)的歸類是否改變,如果改變,轉(zhuǎn) 到步驟23 ;如果不改變,則進(jìn)入下一步驟;步驟26 將得到的r條線段以聚類信息文件格式寫入聚類數(shù)據(jù)CF。
3.如權(quán)利要求1所述的GPS數(shù)據(jù)壓縮存儲方法,其特征在于所述GPS數(shù)據(jù)的存儲格 式分為聚類信息文件、壓縮數(shù)據(jù)文件和未壓縮的數(shù)據(jù)三種;所述聚類信息文件存儲在文件“終端號.line”里,該文件分為兩個部分第一部分是 概要信息,共8個字節(jié),前4個字節(jié)表明這個聚類文件共計有多少個線段r,后4個字節(jié)表 明每個線段的維數(shù)m;第二部分是r個m維線段,每個線段用16(m+l)個字節(jié)來表示,前16m 字節(jié),分別表示m個維度上的直線斜率和截距,最后的16個字節(jié),是前m個斜率和截距值的 累加;所述壓縮數(shù)據(jù)文件存儲在文件“終端號.cpr”里,該文件分為索引區(qū)和存儲區(qū),所述索 引區(qū)分為三個部分前4個字節(jié)表明日期索引的項(xiàng)數(shù)h ;后面是h個索引項(xiàng)數(shù)據(jù),每個索引 項(xiàng)數(shù)據(jù)最前面4個字節(jié)表示日期,中間8個字節(jié)長整型數(shù)表示該索引項(xiàng)所代表一天的數(shù)據(jù) 在文件中的起始位置,后4個字節(jié)整數(shù)表明這個日期對應(yīng)的數(shù)據(jù)的大小;所述存儲區(qū)對應(yīng) 于索引項(xiàng)按天存儲壓縮的GPS數(shù)據(jù);所述未壓縮的數(shù)據(jù)存儲在文件“終端號.pos”里,該文件是按時間順序簡單存儲的原始 數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種基于線路聚類的GPS數(shù)據(jù)壓縮存儲方法,適用于交通運(yùn)輸業(yè)運(yùn)輸線路尤其是公交線路GPS數(shù)據(jù)的壓縮存儲,它由歷史數(shù)據(jù)的線路聚類和新數(shù)據(jù)按聚類存儲兩個程序組成;通過對部分歷史數(shù)據(jù)進(jìn)行分析,對于某特定的車輛,找出其每天的行駛線路,用數(shù)條直線段(也就是折線)來擬合,然后轉(zhuǎn)換歷史數(shù)據(jù)和新數(shù)據(jù)的存儲格式,將它們由完整的格式轉(zhuǎn)化為“最接近的路線+與該路線的差值”來表示,從而達(dá)到壓縮存儲空間的目的。與傳統(tǒng)的數(shù)據(jù)壓縮軟件相比,本發(fā)明具有節(jié)約數(shù)據(jù)存儲空間,能支持壓縮數(shù)據(jù)的實(shí)時寫入與讀取等優(yōu)點(diǎn)。
文檔編號G01S19/01GK101894135SQ201010205500
公開日2010年11月24日 申請日期2010年6月10日 優(yōu)先權(quán)日2009年6月15日
發(fā)明者張 榮, 方標(biāo)新, 汪衛(wèi), 解春欣 申請人:復(fù)旦大學(xué);上海交通投資信息科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1