動態(tài)瓦片地圖的獲取方法與裝置制造方法
【專利摘要】本發(fā)明公開一種動態(tài)瓦片地圖的獲取方法與裝置,用于動態(tài)交通瓦片快速切圖,并快速發(fā)布。該動態(tài)瓦片地圖的獲取方法包括:對實時獲取的動態(tài)交通信息進行數據解析,得到每條道路的動態(tài)交通狀況信息;定時根據所述動態(tài)交通狀況信息確定交通狀況發(fā)生更新的區(qū)域;對所述交通狀況發(fā)生更新的區(qū)域進行切圖,并以二進制流的方式將所述切圖緩存到內存中,生成動態(tài)瓦片地圖。采用本發(fā)明的技術方案,在時時獲得TMC動態(tài)交通數據后,可以快速切圖,并以二進制流的方式緩存,減少磁盤碎片,提高訪問效率。
【專利說明】動態(tài)瓦片地圖的獲取方法與裝置
【技術領域】
[0001] 本發(fā)明涉及動態(tài)交通地圖領域,更具體的,涉及一種動態(tài)瓦片地圖的獲取方法與 裝直。
【背景技術】
[0002] 目前各大地圖網站都提供動態(tài)交通服務信息,其本質是后臺服務根據動態(tài)交通信 息切成瓦片,提供圖片動態(tài)交通瓦片(png類型圖片)信息。動態(tài)交通信息從動態(tài)交通信息 服務提供商處獲得,以http協議提供動態(tài)交通XML格式的TMC數據。再根據獲得的TMC數 據進行解析后根據解析結果獲得每條道路上的交通狀況信息進行動態(tài)切圖,把道路交通狀 況以不同的顏色繪制成圖片。根據客戶端請求的范圍從服務器獲得需要的瓦片信息在客戶 端拼接成地圖。提供瓦片的服務以http協議的方式提供。
[0003] 可以發(fā)現上述各大地圖網站提供動態(tài)交通服務信息存在的問題是:更新速度比較 慢。
[0004] 因此,現有技術存在更新不及時的問題。
【發(fā)明內容】
[0005] 本發(fā)明提供一種動態(tài)瓦片地圖的獲取方法與裝置,用于解決現有技術存在更新不 及時的問題。
[0006] 為實現上述目的,根據本發(fā)明的一個方面,提供一種動態(tài)瓦片地圖的獲取方法與 裝置,并采用如下技術方案:
[0007] 動態(tài)瓦片地圖的獲取方法包括:對實時獲取的動態(tài)交通信息進行數據解析,得到 每條道路的動態(tài)交通狀況信息;定時根據所述動態(tài)交通狀況信息確定交通狀況發(fā)生更新的 區(qū)域;對所述交通狀況發(fā)生更新的區(qū)域進行切圖,并以二進制流的方式將所述切圖緩存到 內存中,生成動態(tài)瓦片地圖。
[0008] 進一步地,所述對實時獲取的動態(tài)交通信息進行數據解析包括:通過共享服務池 對所述實時獲取的動態(tài)交通信息進行存儲;采用多進程與多線程的方式將所述動態(tài)交通信 息從所述服務池中供給所述數據解析。
[0009] 進一步地,所述定時根據所述動態(tài)交通狀況信息確定交通狀況發(fā)生更新的區(qū)域包 括:定時將所述動態(tài)交通狀況信息與上一次獲取的動態(tài)交通狀況信息進行對比,并得出對 比結果;根據所述對比結果確定所述交通狀況發(fā)生更新的區(qū)域。
[0010] 進一步地,所述對所述交通狀況發(fā)生更新的區(qū)域進行切圖包括:計算所述發(fā)生更 新的區(qū)域內需要繪制地圖的數量;按照所述數量繪制地圖并將每塊地圖切成預設塊數;以 及將所述預設塊數的地圖轉換為預設的格式。
[0011] 進一步地,在所述以二進制流的方式將所述切圖緩存到內存中之后,還包括:直接 從所述內存中以二進制流的方式將所述切圖返回給發(fā)起請求的用戶。
[0012] 根據本發(fā)明的另外一個方面,提供一種動態(tài)瓦片地圖的獲取裝置,并采用如下技 術方案:
[0013] 動態(tài)瓦片地圖的獲取裝置包括:數據解析模塊,用于對實時獲取的動態(tài)交通信息 進行數據解析,得到每條道路的動態(tài)交通狀況信息;確定模塊,用于定時根據所述動態(tài)交通 狀況信息確定交通狀況發(fā)生更新的區(qū)域;切圖模塊,用于對所述交通狀況發(fā)生更新的區(qū)域 進行切圖,并以二進制流的方式將所述切圖緩存到內存中,生成動態(tài)瓦片地圖。
[0014] 進一步地,所述數據解析模塊包括:存儲模塊,用于通過共享服務池對所述實時獲 取的動態(tài)交通信息進行存儲;供給模塊,用于采用多進程與多線程的方式將所述動態(tài)交通 信息從所述服務池中供給所述數據解析。
[0015] 進一步地,所述確定模塊包括:對比模塊,用于定時將所述動態(tài)交通狀況信息與上 一次獲取的動態(tài)交通狀況信息進行對比,并得出對比結果;確定子模塊,用于根據所述對比 結果確定所述交通狀況發(fā)生更新的區(qū)域。
[0016] 進一步地,所述切圖模塊包括:計算模塊,用于計算所述發(fā)生更新的區(qū)域內需要繪 制地圖的數量;切圖子模塊,用于按照所述數量繪制地圖并將每塊地圖切成預設塊數;以 及轉換模塊,用于將所述預設塊數的地圖轉換為預設的格式。
[0017] 進一步地,獲取裝置還包括:返回模塊,用于直接從所述內存中以二進制流的方式 將所述切圖返回給發(fā)起請求的用戶。
[0018] 本發(fā)明通過時時獲取動態(tài)交通信息,實現動態(tài)瓦片地圖的快速更新,同時以二進 制流的方式將切圖緩存到內存中,減少快速更新對磁盤的損害。
【專利附圖】
【附圖說明】
[0019] 附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實 施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
[0020] 圖1表示本發(fā)明實施例一所述的動態(tài)瓦片地圖的獲取方法的流程圖;
[0021] 圖2表示本發(fā)明實施例一所述的TMC數據獲取方法流程圖;
[0022] 圖3表不本發(fā)明實施例一所述的用戶獲取切圖與瓦片的流程圖;
[0023] 圖4表示本發(fā)明實施例一所述的切圖服務的方法流程圖;
[0024] 圖5表示本發(fā)明實施例一所述的切圖功能調用示意圖;以及
[0025] 圖6表示本發(fā)明實施例二所述的動態(tài)瓦片地圖的獲取裝置結構示意圖。
【具體實施方式】
[0026] 附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實 施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:
[0027] 圖1表示本發(fā)明實施例一所述的動態(tài)瓦片地圖的獲取方法的流程圖。
[0028] 參見圖1所示,動態(tài)瓦片地圖的獲取方法包括:
[0029] S101 :對實時獲取的動態(tài)交通信息進行數據解析,得到每條道路的動態(tài)交通狀況 信息;
[0030] S103 :定時根據所述動態(tài)交通狀況信息確定交通狀況發(fā)生更新的區(qū)域;
[0031] S105:對所述交通狀況發(fā)生更新的區(qū)域進行切圖,并以二進制流的方式將所述切 圖緩存到內存中,生成動態(tài)瓦片地圖。
[0032] 在步驟S101中,動態(tài)交通信息來自于動態(tài)交通信息服務提供商,與之前定時到動 態(tài)交通信息服務提供商處獲取動態(tài)交通信息不同的時,本發(fā)明時時從動態(tài)交通信息服務提 供商處獲取動態(tài)交通信息,即TMC (Traffic Message Channel,實時交通信息)數據。對 TMC數據進行解析,獲得動態(tài)交通信息與道路LINK關系,即每條道路的動態(tài)交通狀況信息, 將每條道路的動態(tài)交通狀況信息緩存到服務器中。在步驟S103中,按照一定的時間間隔將 每條道路的動態(tài)交通狀況信息與上一時段的每條道路的動態(tài)交通狀況信息進行比對,對動 態(tài)交通狀況信息發(fā)送變化的區(qū)域進行更新。在步驟S105中,根據交通狀況信息發(fā)生更新的 區(qū)域,按照提前劃分的切圖服務負責的區(qū)域進行切圖。根據切圖結果,直接以二進制流的方 式對瓦片進行緩存。
[0033] 在本發(fā)明的上述實施例中,時時獲取動態(tài)交通信息的做法使得動態(tài)交通瓦片地圖 可以及時得到更新,對于快速更新的交通狀況信息,采用快速切圖的方法對更新的區(qū)域進 行切圖,并以二進制流的方式緩存,由于TMC數據更新較快,而且讀取也比較快,放入內存 可以提高訪問速度和更新效率。采用緩存的方式也是基于同樣的原因,即圖片數量多,更新 頻率比較快,如果寫磁盤會生成很多磁盤碎片。同時對磁盤損壞比較嚴重而且有的操作系 統對文件個數有限制,因此采用二進制的形式緩存到內存中可以克服上述問題。
[0034] 優(yōu)選地,所述對實時獲取的動態(tài)交通信息進行數據解析包括:通過共享服務池對 所述實時獲取的動態(tài)交通信息進行存儲;采用多進程與多線程的方式將所述動態(tài)交通信息 從所述服務池中供給所述數據解析。
[0035] 圖2表示本發(fā)明實施例一所述的TMC數據獲取方法流程圖。
[0036] 參見圖2所示,獲取TMC數據以服務池的方式提供,在圖2中,采用多進程和多線 程結合的方式,在步驟S20啟動獲取TMC數據啟動服務中,加載緩存與定時獲取兩進程同時 進行,即定時器同時啟動獲取地址url請求緩存隊列以及通知獲取TMC數據兩個進程,在加 載緩存進程中,獲取服務器中TMC的url請求隊列,得到緩存列隊,在步驟S202服務池中, 得到緩存隊列與通知TMC數據,獲取TMC數據的服務啟動,即到TMC數據服務提供商處獲取 TMC數據,然后存儲TMC數據到TMC數據緩存中,這樣就獲得了原始的TMC數據。
[0037] 獲取TMC數據以服務池的方式提供,采用多進程與多線程結合的方式,提高獲取 速度與效率,保證數據的時時性。
[0038] 圖3表不本發(fā)明實施例一所述的用戶獲取切圖與瓦片的流程圖。
[0039] 在圖3中,對本實施例中的用戶獲取切圖與瓦片的流程給予了更詳盡的闡述,同 樣是采用多進程與多線程相結合的方式。
[0040] 參見圖3所示,瓦片獲取服務API接口、瓦片啟動服務與得到TMC數據同時開啟。
[0041] 步驟4b,為得到TMC數據后進入得到瓦片服務。
[0042] 得到瓦片服務執(zhí)行:
[0043] 步驟7b,返回瓦片至瓦片獲取服務接口。
[0044] 步驟8a :保存瓦片至瓦片池。
[0045] 步驟9:更新動態(tài)瓦片標志至城市分塊緩存和動態(tài)瓦片標志緩存。
[0046] 步驟3b :判斷瓦片是否存在,若存在,進入城市分塊緩存和動態(tài)瓦片標志緩存。
[0047] 步驟5b :切9*16 (256*256)的瓦片,當然,也可以按照其他尺寸進行切圖。
[0048] 在切片服務池執(zhí)行切片命令后執(zhí)行:
[0049] 步驟6 :返回圖片流至分塊瓦片管理服務與得到瓦片服務。
[0050] 進入分塊瓦片管理服務后執(zhí)行:
[0051] 步驟4a :時間戳變化,刷新緩存狀態(tài)為默認值。
[0052] 步驟7a :保存瓦片流至瓦片池。
[0053] 步驟8b :更新城市分塊緩存狀態(tài),然后進入城市分塊緩存和動態(tài)瓦片標志緩存。
[0054] 瓦片啟動服務首先開啟加載有瓦片的索引以及加載城市分塊索引,加載城市分塊 索引得到城市分塊緩存和動態(tài)瓦片標志緩存,由此進入:
[0055] 步驟lb,得到未切分塊標志和分塊范圍,啟動定時切片。
[0056] 步驟3b,通知切圖進入分塊瓦片管理服務。
[0057] 在瓦片獲取服務API接口進程中按如下步驟進行:
[0058] 步驟la :判斷是否為空瓦片,若不為空瓦片,進入有瓦片的索引。
[0059] 步驟2a :向分塊瓦片管理服務發(fā)通知。
[0060] 步驟2b :得到瓦片進入得到瓦片服務。
[0061] 在上述技術方案中,通過定時刷新緩存狀態(tài),并對更新的區(qū)域進行切圖服務,提供 快速更新的地圖瓦片數據。
[0062] 優(yōu)選地,所述對所述交通狀況發(fā)生更新的區(qū)域進行切圖包括:計算所述發(fā)生更新 的區(qū)域內需要繪制地圖的數量;按照所述數量繪制地圖并將每塊地圖切成預設塊數;以及 將所述預設塊數的地圖轉換為預設的格式。
[0063] 圖4表示本發(fā)明實施例一所述的切圖服務的方法流程圖。
[0064] 參見圖4所示,切圖服務的方法可以通過如下步驟進行:
[0065] 步驟40 :數據準備;
[0066] 該數據即為從數據服務提供商處提供的原始動態(tài)交通信息數據。
[0067] 步驟41 :定時器啟動切片;
[0068] 步驟42 :得到TMC數據,更新線路狀態(tài);
[0069] 步驟43 :得到全國TMC數據;
[0070] 步驟44 :順序讀取傳入的每條TMC數據;
[0071] 步驟45 :根據每條TMC數據刷新位置狀態(tài)表;
[0072] 步驟46 :根據位置狀態(tài)數據更新對應的線路狀態(tài);
[0073] 步驟47 :根據線路變化繪制實時交通圖;
[0074] 步驟48 :得到指定范圍的線路;
[0075] 步驟49 :計算此范圍內有多少塊需要繪制的地圖;
[0076] 步驟50 :按照繪制規(guī)則每塊地圖;
[0077] 步驟51 :將每塊地圖切成16張;
[0078] 步驟52 :分別將16張地圖轉為PNG格式;
[0079] 步驟53 :將PNG格式地圖存入緩存池。
[0080] 該實施例給出切圖的具體步驟,體現切圖服務的高效性,同時,瓦片與TMC數據全 部以內存的形式進行存儲,保證服務的高效訪問和快速更新。
[0081] 在該實施例中,應用到切圖功能的調用實現,圖5表示本發(fā)明實施例一所述的切 圖功能調用示意圖。參見圖5所示,通過使用JNI59 (Java Native Interface。它允許 Java代碼和其他語言寫的代碼進行交互)調用系統的SO靜態(tài)庫58,獲得用戶系統需要的滿 足一定規(guī)范的JAVA類對象。
[0082] 采用JNI調用S0靜態(tài)庫,可以利用C++的高效性實現引擎的計算服務,同時利用 java的JNI技術實現java與S0的交互,使前臺應用可以夸平臺。
[0083] 優(yōu)選地,在所述以二進制流的方式將所述切圖緩存到內存中之后,還包括:直接從 所述內存中以二進制流的方式將所述切圖返回給發(fā)起請求的用戶。
[0084] 用戶通過行列號已經顯示級別請求圖片時直接從內存中獲得圖片的二進制流返 回給用戶,可以提高用戶訪問效率,在客戶端直接顯示即可。
[0085] 圖6表示本發(fā)明實施例二所述的動態(tài)瓦片地圖的獲取裝置結構示意圖。
[0086] 動態(tài)瓦片地圖的獲取裝置包括:數據解析模塊60,用于對實時獲取的動態(tài)交通信 息進行數據解析,得到每條道路的動態(tài)交通狀況信息;確定模塊62,用于定時根據所述動 態(tài)交通狀況信息確定交通狀況發(fā)生更新的區(qū)域;切圖模塊64,用于對所述交通狀況發(fā)生更 新的區(qū)域進行切圖,并以二進制流的方式將所述切圖緩存到內存中,生成動態(tài)瓦片地圖。 [0087] 可選地,所述數據解析模塊60包括:存儲模塊(圖中未示),用于通過共享服務池 對所述實時獲取的動態(tài)交通信息進行存儲;供給模塊(圖中未示),用于采用多進程與多線 程的方式將所述動態(tài)交通信息從所述服務池中供給所述數據解析。
[0088] 可選地,所述確定模塊62包括:對比模塊(圖中未示),用于定時將所述動態(tài)交通 狀況信息與上一次獲取的動態(tài)交通狀況信息進行對比,并得出對比結果;確定子模塊(圖中 未示),用于根據所述對比結果確定所述交通狀況發(fā)生更新的區(qū)域。
[0089] 可選地,所述切圖模塊64包括:計算模塊(圖中未示),用于計算所述發(fā)生更新的 區(qū)域內需要繪制地圖的數量;切圖子模塊(圖中未示),用于按照所述數量繪制地圖并將每 塊地圖切成預設塊數;以及轉換模塊(圖中未示),用于將所述預設塊數的地圖轉換為預設 的格式。
[0090] 可選地,獲取裝置(圖中未示)還包括:返回模塊(圖中未示),用于直接從所述內存 中以二進制流的方式將所述切圖返回給發(fā)起請求的用戶。
[0091] 本發(fā)明通過時時獲取動態(tài)交通信息,實現動態(tài)瓦片地圖的快速更新,同時以二進 制流的方式將切圖緩存到內存中,減少快速更新對磁盤的損害。
【權利要求】
1. 一種動態(tài)瓦片地圖的獲取方法,其特征在于,包括: 對實時獲取的動態(tài)交通信息進行數據解析,得到每條道路的動態(tài)交通狀況信息; 定時根據所述動態(tài)交通狀況信息確定交通狀況發(fā)生更新的區(qū)域; 對所述交通狀況發(fā)生更新的區(qū)域進行切圖,并以二進制流的方式將所述切圖緩存到內 存中,生成動態(tài)瓦片地圖。
2. 如權利要求1所述的獲取方法,其特征在于,所述對實時獲取的動態(tài)交通信息進行 數據解析包括: 通過共享服務池對所述實時獲取的動態(tài)交通信息進行存儲; 采用多進程與多線程的方式將所述動態(tài)交通信息從所述服務池中供給所述數據解析。
3. 如權利要求1所述的獲取方法,其特征在于,所述定時根據所述動態(tài)交通狀況信息 確定交通狀況發(fā)生更新的區(qū)域包括: 定時將所述動態(tài)交通狀況信息與上一次獲取的動態(tài)交通狀況信息進行對比,并得出對 比結果; 根據所述對比結果確定所述交通狀況發(fā)生更新的區(qū)域。
4. 如權利要求1或3所述的獲取方法,其特征在于,所述對所述交通狀況發(fā)生更新的區(qū) 域進行切圖包括: 計算所述發(fā)生更新的區(qū)域內需要繪制地圖的數量; 按照所述數量繪制地圖并將每塊地圖切成預設塊數;以及 將所述預設塊數的地圖轉換為預設的格式。
5. 如權利要求1所述的獲取方法,其特征在于,在所述以二進制流的方式將所述切圖 緩存到內存中之后,還包括: 直接從所述內存中以二進制流的方式將所述切圖返回給發(fā)起請求的用戶。
6. -種動態(tài)瓦片地圖的獲取裝置,其特征在于,包括: 數據解析模塊,用于對實時獲取的動態(tài)交通信息進行數據解析,得到每條道路的動態(tài) 交通狀況信息; 確定模塊,用于定時根據所述動態(tài)交通狀況信息確定交通狀況發(fā)生更新的區(qū)域; 切圖模塊,用于對所述交通狀況發(fā)生更新的區(qū)域進行切圖,并以二進制流的方式將所 述切圖緩存到內存中,生成動態(tài)瓦片地圖。
7. 如權利要求6所述的獲取裝置,其特征在于,所述數據解析模塊包括: 存儲模塊,用于通過共享服務池對所述實時獲取的動態(tài)交通信息進行存儲; 供給模塊,用于采用多進程與多線程的方式將所述動態(tài)交通信息從所述服務池中供給 所述數據解析。
8. 如權利要求6所述的獲取裝置,其特征在于,所述確定模塊包括: 對比模塊,用于定時將所述動態(tài)交通狀況信息與上一次獲取的動態(tài)交通狀況信息進行 對比,并得出對比結果; 確定子模塊,用于根據所述對比結果確定所述交通狀況發(fā)生更新的區(qū)域。
9. 如權利要求6或8所述的獲取裝置,其特征在于,所述切圖模塊包括: 計算模塊,用于計算所述發(fā)生更新的區(qū)域內需要繪制地圖的數量; 切圖子模塊,用于按照所述數量繪制地圖并將每塊地圖切成預設塊數;以及 轉換模塊,用于將所述預設塊數的地圖轉換為預設的格式。
10.如權利要求6所述的獲取裝置,其特征在于,還包括: 返回模塊,用于直接從所述內存中以二進制流的方式將所述切圖返回給發(fā)起請求的用 戶。
【文檔編號】G06F17/30GK104142935SQ201310164554
【公開日】2014年11月12日 申請日期:2013年5月7日 優(yōu)先權日:2013年5月7日
【發(fā)明者】王鵬 申請人:北京四維圖新科技股份有限公司