欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于MapReduce的地圖瓦片存儲布局優(yōu)化方法

文檔序號:9597947閱讀:528來源:國知局
基于MapReduce的地圖瓦片存儲布局優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于分布式存儲技術(shù)領(lǐng)域,具體涉及一種基于MapReduce的地圖瓦片存儲 布局優(yōu)化方法。
【背景技術(shù)】
[0002] 地理信息系統(tǒng)(Geographic Information System,GIS)是一個運(yùn)用計算機(jī)科學(xué)對 地理信息進(jìn)行采集、存儲、管控、檢索、處理、分析和顯示的綜合性技術(shù)系統(tǒng)。GIS具有數(shù)據(jù)量 大、需要復(fù)雜的空間處理與分析等特點(diǎn),而云計算技術(shù)具有分布式存儲、高吞吐量、分布式 計算、負(fù)載均衡、擴(kuò)展性、數(shù)據(jù)備份以及錯誤恢復(fù)等特點(diǎn),所以使得云計算廣泛地應(yīng)用在GIS 領(lǐng)域中。目前,國內(nèi)外的公司和研究機(jī)構(gòu)相繼推出各自的GIS產(chǎn)品,包括國外的MapXtreme、 GeoMedia WebMap、MapServer、MapGuide 以及 Google Maps 等,國內(nèi)的 SuperMap、MapGIS 和 GeoBeans 等。
[0003] GIS產(chǎn)品主要是向用戶輸出大數(shù)據(jù)量的點(diǎn)陣形式的地圖,并在其中包含了諸如空 間數(shù)據(jù)的檢索、查詢等常見內(nèi)容。傳統(tǒng)的GIS產(chǎn)品提供的圖片是由GIS服務(wù)器實(shí)時動態(tài)渲 染生成的。而由于服務(wù)器通常需要比較長的時間才能將用戶感興趣區(qū)域的地圖轉(zhuǎn)換為圖片 格式,因此很大程度上影響了 GIS產(chǎn)品的響應(yīng)速度。在"地圖瓦片"概念提出后,以瓦片金 字塔為模型的地圖瓦片預(yù)生成方案通過對地圖進(jìn)行預(yù)先切片生成地圖瓦片后將其存儲在 地圖服務(wù)器端,取代圖片的實(shí)時動態(tài)渲染生成,從而有效的解決了 GIS產(chǎn)品服務(wù)的效率問 題。所謂地圖切片是指將指定地理范圍內(nèi)的地圖,在某一比例尺級別下,切割成若干行和列 均為固定尺寸的正方形圖片的過程,這些規(guī)整的圖片又稱為地圖瓦片。地圖切片針對每個 地圖切片所表示的地理范圍,進(jìn)行下一個縮放級別的地圖切片,直至地圖達(dá)到設(shè)定的切片 級數(shù)或者最大(最?。┍壤摺?br>[0004] 這些GIS產(chǎn)品在地圖瓦片生成方案上大多采用瓦片按行生成或者瓦片按照空間 鄰近性生成。這兩種方式各有優(yōu)缺點(diǎn)。按行生成瓦片可以保證很快的生成速度,但是由于 寫入的瓦片不符合空間臨近性,所以瓦片訪問時效率比較低;按照空間臨近性生成瓦片雖 然寫入的瓦片在訪問時效率較高,但是瓦片生成速度比較慢。

【發(fā)明內(nèi)容】

[0005] 本發(fā)明的目的是提供一種基于MapReduce的地圖瓦片存儲布局優(yōu)化方法,解決地 圖瓦片存儲不符合空間臨近性原則、讀取瓦片性能差的問題。
[0006] 本發(fā)明所采用的技術(shù)方案是: 基于MapReduce的地圖瓦片存儲布局優(yōu)化方法,其特征在于: 包括以下步驟: 步驟一 :Map任務(wù)讀取地圖瓦片金字塔生成時形成的瓦片索引表,根據(jù)(IndexKey, IndexValue)鍵值對中的IndexKey計算出該瓦片在金字塔中的順序號Number,將IndexKey 替換為其對應(yīng)的Number值,形成(Number,IndexValue)鍵值對輸出; 步驟二:采用自定義分區(qū)算法將得到的(Number,IndexValue)鍵值對進(jìn)行分區(qū),使得 每個分區(qū)中Number列表是有序的,分區(qū)之間的Number也是有序的; 步驟三:每一個Reduce任務(wù)獲得屬于自己分區(qū)的(Number,IndexValue)鍵值對,采用 自定義分組算法對所有鍵值對進(jìn)行分組,將所有(Number,IndexValue)鍵值對中的Number 替換為同一個值NumberO,使得每一個Reduce任務(wù)最終只處理一個分組,這個唯一分組為 (NumberO, List (IndexValue)); 步驟四:Reduce 任務(wù)循環(huán)讀取(NumberO,List(IndexValue))中的每一個 IndexValue, 根據(jù)該索引值讀取地圖瓦片實(shí)體數(shù)據(jù),然后將其寫入到新的打包文件中,并同時更新索引 表中該地圖瓦片對應(yīng)的索引項(xiàng),使該索引項(xiàng)指向新的打包文件; 步驟五:所有地圖瓦片重新寫入結(jié)束之后,將舊的打包文件刪除。
[0007] 步驟一中,瓦片索引表的組織形式為(IndexKey,IndexValue)鍵值對;其中, 行鍵IndexKey由地圖瓦片金字塔版本名稱、層級和行列號得出的四叉樹編碼組成,列族 IndexValue由地圖瓦片打包文件名稱、瓦片在打包文件中的偏移量、瓦片大小和刪除標(biāo)志 位組成。
[0008] 步驟一中,根據(jù)(IndexKey,IndexValue)鍵值對中的IndexKey計算該瓦片在金字 塔中的順序號Number的具體過程為: 1) 獲得該金字塔的最小級別MinLevel,根據(jù)該MinLevel計算出該級別下第一張瓦片 的四叉樹編碼MinQuadtreeCode,該四叉樹編碼即為該金字塔下的最小四叉樹編碼; 2) 從IndexKey中解析出該地圖瓦片對應(yīng)的四叉樹編碼CurrentQuadtreeCode和該地 圖瓦片所在層級CurrentLevel,根據(jù)該CurrentLevel計算出該級別下第一張地圖瓦片的 四叉樹編碼CurrentMinQuadtreeCode,并計算出CurrentLevel和MinLevel之間所有的地 圖瓦片數(shù) FirstTileCount ; 3) 根據(jù)公式 CurrentQuadtreeCode-CurrentMinQuadtreeCode 得出 QuanternaryNumber即地圖瓦片在當(dāng)前層級的四進(jìn)制順序號,最后將QuanternaryNumber 轉(zhuǎn)換為十進(jìn)制并與FirstTileCount相加,即可得到地圖瓦片順序號Number。
[0009] 步驟二中,采用自定義分區(qū)算法將得到的(Number,IndexValue)鍵值對進(jìn)行分區(qū) 的具體過程為: 分區(qū)數(shù)目等于Reduce任務(wù)數(shù); 分區(qū)算法基于公式
式中,OrderPartitioner表示分區(qū)號,Number表示Map任務(wù)輸出的地圖瓦片順序號, NumPartitions表示Reduce數(shù)量即分區(qū)數(shù)量,TileCount表示處理的總瓦片數(shù)。
[0010] 本發(fā)明具有以下優(yōu)點(diǎn): 本發(fā)明是一種地圖瓦片存儲布局優(yōu)化方案,利用該方案可以調(diào)整地圖瓦片存儲數(shù)據(jù), 使其符合空間臨近性原則,提高瓦片讀取性能。解決了地圖瓦片存儲不符合空間臨近性原 貝1J,讀取瓦片性能差的問題,滿足了 GIS應(yīng)用要求盡可能低延時的訪問地圖數(shù)據(jù)的需求,同 時不影響瓦片生成存儲的速度,也保證了地圖瓦片生成后,以及在瓦片存儲布局優(yōu)化的過 程中,瓦片可以正常對外提供服務(wù)。
【附圖說明】
[0011] 圖1是本發(fā)明流程圖; 圖2是瓦片索引IndexKey ; 圖3是瓦片索引IndexValue ; 圖4是Map任務(wù)過程。
【具體實(shí)施方式】
[0012] 下面結(jié)合【具體實(shí)施方式】對本發(fā)明進(jìn)行詳細(xì)的說明。
[0013] 本發(fā)明涉及的基于MapReduce的地圖瓦片存儲布局優(yōu)化方法,針對現(xiàn)有方案的優(yōu) 缺點(diǎn),在瓦片按行生成的基礎(chǔ)上,對生成后的瓦片進(jìn)行瓦片存儲布局的優(yōu)化,這樣既保留了 瓦片按行生成的高速度,同時也提高了瓦片的訪問效率,并且在優(yōu)化過程中,能夠保證瓦片 對外提供正常的服務(wù)。
[0014] 參見圖1,本發(fā)明具體包括以下步驟: 步驟一 :Map任務(wù)讀取地圖瓦片金字塔生成時形成的瓦片索引表,根據(jù)(IndexKey, IndexValue)鍵值對中的IndexKey計算出該瓦片在金字塔中的順序號Number,將IndexKey 替換為其對應(yīng)的Number值,形成(Number,IndexValue)鍵值對輸出。
[0015] 所述瓦片索引表的組織形式為(IndexKey,IndexValue)鍵值對;其中,行 鍵IndexKey由地圖瓦片金字塔版本名稱、層級和行列號得出的四叉樹編碼組成,列族 IndexValue由地圖瓦片打包文件名稱、瓦片在打包文件中的偏移量、瓦片大小和刪除標(biāo)志 位組成。
[0016] 所述根據(jù)(IndexKey,IndexValue)鍵值對中的IndexKey計算該瓦片在金字塔中 的順序號Number的具體過程為: 1) 獲得該金字塔的最小級別MinLevel,根據(jù)該MinLevel計算出該級別下第一張瓦片 的四叉樹編碼MinQuadtreCode,該四叉樹編碼即為該金字塔下的最小四叉樹編碼; 2) 從IndexKey中解析出該地圖瓦片對應(yīng)的四叉樹編碼CurrentQuadtreeCode和該地 圖瓦片所在層級CurrentLevel,根據(jù)該CurrentLevel計算出該級別下第一張地圖瓦片的 四叉樹編碼CurrentMinQuadtreeCode,并計算出CurrentLevel和MinLevel之間所有的地 圖瓦片數(shù) FirstTileCount ; 3) 根據(jù)公式 CurrentQuadtreeCode-CurrentMinQuadtreeCode 得出 QuanternaryNumber即地圖瓦片在當(dāng)前層級的四進(jìn)制順序號,最后將QuanternaryNumber 轉(zhuǎn)換為十進(jìn)制并與FirstTileCount相加,即可得到地圖瓦片順序號Number。<
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
泰州市| 东港市| 安龙县| 乌兰县| 仪陇县| 大安市| 罗山县| 清远市| 神木县| 太仆寺旗| 八宿县| 黄骅市| 两当县| 西乌| 永仁县| 富宁县| 汕尾市| 岢岚县| 科技| 石屏县| 漾濞| 香格里拉县| 黄骅市| 鄂托克旗| 呼和浩特市| 宝山区| 上栗县| 漾濞| 贺州市| 禄丰县| 福清市| 大新县| 平阴县| 克东县| 昔阳县| 南昌市| 泰安市| 镇康县| 九江市| 绥滨县| 普宁市|