本發明涉及衛星定位數據處理技術領域,尤其涉及一種車輛衛星定位數據的存儲方法及裝置。
背景技術:
車輛衛星定位是運行車輛通過接收全球衛星定位系統衛星信號,定位自身位置,并通過移動網絡將位置數據傳回的技術。車輛衛星定位數據在出租汽車管理系統、公交車管理系統、危化品運輸管理系統、省際客運管理等交通運輸管理系統中有著廣泛的應用。交通運輸類系統接收車輛實時回傳的衛星定位數據,將衛星定位數據存儲在數據庫中。用戶通過查詢條件查詢行駛的交通車輛的衛星定位數據,并在地理數據系統(GIS:Geographic Information System)地圖上回放車輛的行駛軌跡。
通常存儲衛星定位數據的方法是將衛星定位數據逐行存儲為數據庫表記錄,當查詢車輛的行駛軌跡時,通過數據庫的結構化查詢語言(SQL:Structured Query Language)搜索,將符合條件的衛星定位數據查出并在GIS地圖上繪制行駛軌跡。
在實現本發明的過程中,發明人發現現有技術中至少存在如下技術問題:
隨著運行時間的增加,應用領域的增加,存儲在關系數據庫中的車輛衛星定位數據成倍增長,將衛星定位數據從數據庫中查詢出來所耗費的時間越來越長,即使通過分庫、分表等提升數據庫性能的手段也不能達到理想效果。
技術實現要素:
本發明提供的車輛衛星定位數據的存儲方法及裝置,極大的提高了車輛定位數據查詢的速度。
第一方面,本發明提供一種車輛衛星定位數據的存儲方法,包括:
接收車輛衛星定位數據;
從車輛衛星定位數據中解析出車輛標識數據、時間數據以及方位數據,其中,所述時間數據包括日期數據以及時刻數據;
將具有相同車輛標識數據和相同日期數據的多個車輛衛星定位數據的定位內容存儲在數據庫中以所述相同日期數據和所述相同車輛標識數據為索引的一條記錄中,其中所述多個車輛衛星定位數據的定位內容存儲為一個字段,每個車輛衛星定位數據的定位內容包括時刻數據以及方位數據。
可選地,將具有相同車輛標識數據和相同日期數據的多個車輛衛星定位數據的定位內容存儲在數據庫中以所述相同日期數據和所述相同車輛標識數據為索引的一條記錄中包括:
將從多個車輛衛星定位數據中解析出的車輛標識數據、時間數據以及方位數據進行緩存,其中,具有相同車輛標識信息的多個緩存內容被緩存在一個數據集合中,每個車輛衛星定位數據的緩存內容包括時間數據以及方位數據;
當數據集合的大小超過預定閾值時,將數據集合中的車輛標識數據、日期數據以及與所述車輛標識數據和所述日期數據對應的多個定位內容編組成待存儲數據,其中,所述多個定位內容以數組的形式存在;
將所述待存儲數據存儲到數據庫中以所述待存儲數據的車輛標識數據和日期數據為索引的記錄中。
可選地,將從多個車輛衛星定位數據中解析出的車輛標識數據、時間數據 以及方位數據以HashMap的形式進行緩存,其中,所述車輛標識數據為所述HashMap的鍵值,所述數據集合以鏈表的形式作為所述HashMap的數值。
可選地,所述將從多個車輛衛星定位數據中解析出的車輛標識數據、時間數據以及方位數據進行緩存,還包括:
判斷正要存儲的時間數據中的日期數據與所述數據集合中之前存儲的時間數據中的日期數據是否相同;
如果不同,則將所述數據集合中之前緩存的車輛標識數據、日期數據以及與所述車輛標識數據和所述日期數據對應的多個定位內容編組成待存儲數據,以進行存儲;
將正要存儲的時間數據以及方位數據作為所述數據集合的第一個緩存內容進行緩存。
可選地,所述將從多個車輛衛星定位數據中解析出的車輛標識數據、時間數據以及方位數據進行緩存之前還包括:
將從車輛衛星定位數據中解析出的車輛標識數據、時間數據以及定位數據作為待編組緩存數據放至待編組緩存隊列中,以進行緩存與編組;
所述將所述待存儲數據存儲到數據庫中以所述待存儲數據的車輛標識數據和日期數據為索引的記錄中之前還包括:
將所述待存儲數據放至待存儲隊列中,以進行存儲。
第二方面,本發明提供一種車輛衛星定位數據的存儲裝置,包括:
接收模塊,用于接收車輛衛星定位數據;
解析模塊,用于從車輛衛星定位數據中解析出車輛標識數據、時間數據以及方位數據,其中,所述時間數據包括日期數據以及時刻數據;
存儲模塊,用于將具有相同車輛標識數據和相同日期數據的多個車輛衛星定位數據的定位內容存儲在數據庫中以所述相同日期數據和所述相同車輛標識數據為索引的一條記錄中,其中所述多個車輛衛星定位數據的定位內容存儲為一個字段,每個車輛衛星定位數據的定位內容包括時刻數據以及方位數據。
可選地,所述裝置還包括緩存模塊以及編組模塊,
所述緩存模塊,用于將從多個車輛衛星定位數據中解析出的車輛標識數據、時間數據以及方位數據進行緩存,其中,具有相同車輛標識信息的多個緩存內容被緩存在一個數據集合中,每個車輛衛星定位數據的緩存內容包括時間數據以及方位數據;
所述編組模塊,當數據集合的大小超過預定閾值時,將數據集合中的車輛標識數據、日期數據以及與所述車輛標識數據和所述日期數據對應的多個定位內容編組成待存儲數據,其中,所述多個定位內容以數組的形式存在;
所述存儲模塊,用于將所述待存儲數據存儲到數據庫中以所述待存儲數據的車輛標識數據和日期數據為索引的記錄中。
可選地,所述緩存模塊,用于將從多個車輛衛星定位數據中解析出的車輛標識數據、時間數據以及方位數據以HashMap的形式進行緩存,其中,所述車輛標識數據為所述HashMap的鍵值,所述數據集合以鏈表的形式作為所述HashMap的數值。
可選地,所述裝置還包括判斷模塊,
所述判斷模塊,用于判斷正要存儲的時間數據中的日期數據與所述數據集合中之前存儲的時間數據中的日期數據是否相同;
所述編組模塊,用于在判斷正要存儲的時間數據中的日期數據與所述數據 集合中之前存儲的時間數據中的日期數據不同時,將所述數據集合中之前緩存的車輛標識數據、日期數據以及與所述車輛標識數據和所述日期數據對應的多個定位內容編組成待存儲數據,以進行存儲;
所述緩存模塊,用于將正要存儲的時間數據以及方位數據作為所述數據集合的第一個緩存內容進行緩存。
可選地,所述裝置還包括第一入隊模塊以及第二入隊模塊,
所述第一入隊模塊,用于將從車輛衛星定位數據中解析出的車輛標識數據、時間數據以及定位數據作為待編組緩存數據放至待編組緩存隊列中,以進行緩存與編組;
所述第二入隊模塊,用于將所述待存儲數據放至待存儲隊列中,以進行存儲。
本發明實施例提供的車輛衛星定位數據的存儲方法及裝置,一輛車輛一天的衛星定位數據在數據庫中只存儲為一行記錄,數據庫中的記錄數量只與運輸車輛的數量與存儲的天數相關,相比原來動輒數億條的數據記錄量大幅減少,因此極大的提高了車輛定位數據查詢的速度。
附圖說明
圖1為本發明一實施例車輛衛星定位數據的存儲方法的流程圖;
圖2為本發明另一實施例車輛衛星定位數據的存儲方法的流程圖;
圖3為本發明一實施例對車輛定位數據進行緩存編組的流程圖;
圖4為本發明一實施例對編組后的車輛定位數據進行存儲的流程圖;
圖5為本發明一實施例車輛衛星定位數據的存儲裝置的結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
本發明提供一種車輛衛星定位數據的存儲方法,如圖1所示,所述方法包括:
S101、接收車輛衛星定位數據;
S102、從車輛衛星定位數據中解析出車輛標識數據、時間數據以及方位數據,其中,所述時間數據包括日期數據以及時刻數據;
S103、將具有相同車輛標識數據和相同日期數據的多個車輛衛星定位數據的定位內容存儲在數據庫中以所述相同日期數據和所述相同車輛標識數據為索引的一條記錄中,其中所述多個車輛衛星定位數據的定位內容存儲為一個字段,每個車輛衛星定位數據的定位內容包括時刻數據以及方位數據。
本發明實施例提供的車輛衛星定位數據的存儲方法,一輛車輛一天的衛星定位數據在數據庫中只存儲為一行記錄,數據庫中的記錄數量只與運輸車輛的數量與存儲的天數相關,相比原來動輒數億條的數據記錄量大幅減少,因此極大的提高了車輛定位數據查詢的速度。
進一步地,圖2提供了一種車輛衛星定位數據的存儲方法,所述方法包括:
S201、從道路運輸車輛衛星定位系統平臺中接收車輛衛星定位數據。
S202、將接收后的衛星定位數據進行解包,解析出車輛標識數據、時間數據以及方位數據,其中,解析的時間數據由日期以及時刻構成。其中,車輛標 識數據可以為車牌號,也可以為車牌號和車輛衛星定位系統平臺的系統號。方位數據可以包括經度、緯度、速度、方位角、瞬時狀態。
S203、將解析出的數據編碼為待編組緩存數據,發送至待編組緩存隊列中。例如,可以以字符串形式編碼,編碼的格式可以為車輛標識數據、數據時間、經度、緯度、速度、方位角、瞬時狀態,可選地,還可以為系統號、車輛標識數據、數據時間、經度、緯度、速度、方位角、瞬時狀態。
其中,服務與服務之間的數據傳遞通過采用消息隊列的方式,使得能夠同時靈活部署多個數據處理服務,最大限度的利用服務器的多核能力,提高處理效率。
S204、將待編組緩存數據進行緩存,其中,具有相同車輛標識信息的多個待編組緩存數據的時間數據以及方位數據被緩存在一個數據集合中。
其中,緩存可以采用HashMap(基于哈希表的Map實現)的存儲結構,將車輛標識數據(例如車牌號)作為HashMap的鍵值,數據集合可以以鏈表的形式作為HashMap的數值,優選地,可以將與每次接收的衛星定位數據對應的時間數據及方位數據編碼為字符串。
S205、當數據集合的大小超過預定閾值時,將數據集合中的車輛標識數據、日期數據以及與所述車輛標識數據和所述日期數據對應的多個定位內容編組成待存儲數據,發送至待存儲隊列中。其中,多個定位內容對應于多次接收的車輛衛星定位數據,單條定位內容由時刻數據以及對應的方位數據構成,多條定位內容以數組的形式存在。
例如,可以將數據集合(鏈表)中的數據按照車牌號、日期、以及定位內容數組的方式編組,形成待存儲數據,發送至待存儲隊列中。其中,待存儲數 據中車牌號、日期、定位內容數組間以英文&分隔。定位內容數組中的單條定位內容由時間、經度、緯度、速度、方位角、瞬時狀態組成,數據項間以英文逗號分隔,數組中的多條定位內容間使用英文分號分隔。數據發送完成后,將鏈表清空。
進一步地,為了保證同一鏈表中存儲的是與同一車輛標識數據、同一日期對應的數據,在將解析出的車輛標識數據、時間數據以及方位數據放入以所述車輛標識數據為鍵值的鏈表中進行緩存之前,需要判斷正要緩存的日期數據與鏈表中之前存儲的時間數據中的日期數據是否相同,如果不同時,將鏈表中之前緩存的內容進行編組,放至待存儲隊列中以進行存儲,其存儲方式與步驟S206描述的相同。
其中,服務與服務之間的數據傳遞通過采用消息隊列的方式,使得能夠同時靈活部署多個數據處理服務,最大限度的利用服務器的多核能力,提高處理效率。
S206、將待存儲數據存儲到數據庫中以待存儲數據中的日期數據和車輛標識數據為索引的記錄中。
其中數據庫采用關系數據庫存儲表結構,關系數據庫存儲表結構由字符型日期、字符型車牌號、CLOB型的定位內容字段構成,可選地,還可以由字符型系統號、字符型日期、字符型車牌號、CLOB型的定位內容字段構成。CLOB型的定位內容字段中存儲所有與前面字符型日期和字符型車牌號對應的所有定位內容,按照衛星定位數據去除日期后時間、經度、緯度、速度、方位角、瞬時狀態順次存儲。單條待存儲數據對應于單輛車單個日期,存儲在關系數據庫存儲表結構的一條記錄中。其中,從單個衛星定位數據中獲取的多個數據使用英 文逗號分隔,與多個衛星定位數據對應的多條內容間以英文分號分隔。
示例性地,如圖3所示,對車輛定位數據進行緩存編組的具體流程如下:
S 301、在內存中建立HashMap,以車輛標識數據(例如車牌號)做為鍵(Key)值。
S 302、從待編組緩存隊列中出列一條待編組緩存數據,解析待編組緩存數據中的車輛標識數據字段。
S 303、從HashMap中查詢該車輛標識數據字段是否已存在緩存,存在緩存則跳轉到步驟S305。
S 304、新建數據鏈表,增加到HashMap中。
S 305、將數據增加到數據鏈表末尾,其中,所述加入到鏈表中的數據由從待編組緩存數據中提取的時間數據和方位數據編組而成。
S 306、檢查鏈表長度是否達到設置的閾值,未達到閾值跳轉至步驟S302,否則進行步驟S307。
S307、從鏈表中將緩存的數據以字符串編碼,發送至待存儲隊列中。
S308、清空鏈表,跳轉至步驟S302
示例性地,如圖4所示,對編組后的車輛定位數據進行存儲的流程如下:
S401、從待存儲隊列中出列待存儲數據。
S402、解析待存儲數據中的車輛標識數據(例如車牌號)、日期數據。
S403、檢查數據表中,同車輛標識數據、同日期數據是否已經存在記錄,如果存在,跳轉到步驟405。
S404、新增車輛標識數據、日期數據庫記錄。
S405、將衛星定位數據增加到數據存儲字段的末尾,跳轉至步驟401。
本發明實施例還提供一種車輛衛星定位數據的存儲裝置1,如圖5所示,所述裝置包括:
接收模塊101,用于接收車輛衛星定位數據;
解析模塊102,用于從車輛衛星定位數據中解析出車輛標識數據、時間數據以及方位數據,其中,所述時間數據包括日期數據以及時刻數據;
存儲模塊103,用于將具有相同車輛標識數據和相同日期數據的多個車輛衛星定位數據的定位內容存儲在數據庫中以所述相同日期數據和所述相同車輛標識數據為索引的一條記錄中,其中所述多個車輛衛星定位數據的定位內容存儲為一個字段,每個車輛衛星定位數據的定位內容包括時刻數據以及方位數據。
存儲裝置1還可以包括緩存模塊以及編組模塊。緩存模塊用于將從多個車輛衛星定位數據中解析出的車輛標識數據、時間數據以及方位數據進行緩存,其中,具有相同車輛標識信息的多個緩存內容被緩存在一個數據集合中,每個車輛衛星定位數據的緩存內容包括時間數據以及方位數據;編組模塊用于當數據集合的大小超過預定閾值時,將數據集合中的車輛標識數據、日期數據以及與所述車輛標識數據和所述日期數據對應的多個定位內容編組成待存儲數據,其中,所述多個定位內容以數組的形式存在;存儲模塊將所述待存儲數據存儲到數據庫中以所述待存儲數據的車輛標識數據和日期數據為索引的記錄中。
其中,緩存模塊可以以HashMap的形式緩存從多個車輛衛星定位數據中解析出的車輛標識數據、時間數據以及方位數據,所述車輛標識數據為HashMap的鍵值,所述數據集合以鏈表的形式作為所述HashMap的數值。
可選地,存儲裝置1還可以包括判斷模塊。所述判斷模塊用于判斷正要存儲的時間數據中的日期數據與所述數據集合中之前存儲的時間數據中的日期數 據是否相同;所述編組模塊在判斷正要存儲的時間數據中的日期數據與所述數據集合中之前存儲的時間數據中的日期數據不同時,將所述數據集合中之前緩存的車輛標識數據、日期數據以及與所述車輛標識數據和所述日期數據對應的多個定位內容編組成待存儲數據,以進行存儲;所述緩存模塊將正要存儲的時間數據以及方位數據作為所述數據集合的第一個緩存內容進行緩存。
可選地,存儲裝置1還包括第一入隊模塊以及第二入隊模塊。第一入隊模塊用于將從車輛衛星定位數據中解析出的車輛標識數據、時間數據以及定位數據作為待編組緩存數據放至待編組緩存隊列中,以進行緩存與編組;第二入隊模塊,用于將所述待存儲數據放至待存儲隊列中,以進行存儲。
本發明實施例提供的車輛衛星定位數據的存儲裝置,一輛車輛一天的衛星定位數據在數據庫中只存儲為一行記錄,數據庫中的記錄數量只與運輸車輛的數量與存儲的天數相關,相比原來動輒數億條的數據記錄量大幅減少,因此極大的提高了車輛定位數據查詢的速度;采用消息隊列的方式進行存儲,使得能夠同時靈活部署多個數據處理服務,提高了存儲的效率。
本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
以上所述,僅為本發明的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍 應該以權利要求的保護范圍為準。