国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向矢量瓦片的海量空間數(shù)據(jù)并行處理技術(shù)

2018-09-17 04:32:06胡明曉龔志紅樊竝君
關(guān)鍵詞:圖幅瓦片線程

李 瀚,胡明曉,龔志紅,樊竝君

(1.中國(guó)電子科技集團(tuán)公司第十五研究所基礎(chǔ)三部,北京 100083; 2.溫州大學(xué)數(shù)理與電子信息工程學(xué)院,浙江 溫州 325035; 3.空軍駐華北地區(qū)軍事代表室,北京 100086)

0 引 言

本文的并行處理實(shí)驗(yàn)基于中國(guó)電子科技集團(tuán)公司第十五研究所基礎(chǔ)三部地理信息研發(fā)中心的地理信息系統(tǒng)二期平臺(tái)。地理信息系統(tǒng)(GIS)是一種為了獲取、存儲(chǔ)、檢索、分析和顯示空間定位數(shù)據(jù)而建立的計(jì)算機(jī)化的數(shù)據(jù)庫(kù)管理及數(shù)據(jù)處理系統(tǒng)[1]。

本文實(shí)驗(yàn)的數(shù)據(jù)源為地圖原始矢量數(shù)據(jù),矢量數(shù)據(jù)經(jīng)過(guò)瓦片生成工具切圖以及瓦片服務(wù)上傳瓦片至數(shù)據(jù)存儲(chǔ)平臺(tái)(HBase等)進(jìn)行顯示[2]。采用傳統(tǒng)的基于GIS組件的切片工具,對(duì)海量矢量數(shù)據(jù)切圖往往需要數(shù)周甚至更多的時(shí)間,而且在硬件條件有限的情況下(內(nèi)存限制等),不能勝任切圖任務(wù)。針對(duì)矢量數(shù)據(jù)特性進(jìn)行合理的任務(wù)劃分,通過(guò)并行處理框架進(jìn)行多機(jī)多進(jìn)程切圖,并且在服務(wù)端進(jìn)行并行上傳,可以大幅度提升矢量數(shù)據(jù)整體處理效率。

1 空間數(shù)據(jù)的處理流程

1.1 空間數(shù)據(jù)裝載與存儲(chǔ)

空間數(shù)據(jù)庫(kù)是GIS系統(tǒng)的核心所在,空間數(shù)據(jù)庫(kù)技術(shù)的發(fā)展帶動(dòng)了GIS系統(tǒng)的技術(shù)革新??臻g數(shù)據(jù)庫(kù)不僅擁有通用數(shù)據(jù)庫(kù)的基本特征,而且包含5個(gè)獨(dú)有的特征:空間特征、非結(jié)構(gòu)化特征、空間關(guān)系特征、分類(lèi)編碼特征和海量數(shù)據(jù)特征[3]。作為大量具有相同特征的數(shù)據(jù)集的有序集合,需要數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行管理,并且通過(guò)GIS組件提供必要的查詢(xún)、檢索與可視化功能。

空間數(shù)據(jù)庫(kù)從適用方面可劃分為基礎(chǔ)地理空間數(shù)據(jù)庫(kù)和專(zhuān)題數(shù)據(jù)庫(kù)?;A(chǔ)地理數(shù)據(jù)庫(kù)包括矢量要素?cái)?shù)據(jù)(DLG)、數(shù)字高程數(shù)據(jù)(DEM)、影像數(shù)據(jù)(DOM)和柵格地圖數(shù)據(jù)(DRG);專(zhuān)題數(shù)據(jù)庫(kù)包含地名數(shù)據(jù)、兵要數(shù)據(jù)、導(dǎo)航數(shù)據(jù)等[4]。本文所使用的數(shù)據(jù)源為矢量要素?cái)?shù)據(jù),通過(guò)GIS系統(tǒng)入庫(kù)工具進(jìn)行入庫(kù)。

1.2 矢量數(shù)據(jù)切圖原理

本文對(duì)矢量原始數(shù)據(jù)采用矢量瓦片切片技術(shù)。矢量瓦片地圖采用金字塔結(jié)構(gòu),這是一種基于多分辨率的層次數(shù)據(jù)模型[5]。在表示地理范圍不變的條件下,從瓦片金字塔的頂層到底層,比例尺數(shù)值越來(lái)越小,如圖1所示。

圖1 瓦片金字塔結(jié)構(gòu)

矢量瓦片地圖分為2種:1)瓦片客戶端技術(shù),即在本地客戶端上將目標(biāo)地圖原始數(shù)據(jù)分解為多次請(qǐng)求,通過(guò)客戶端多次請(qǐng)求將切圖生成的地圖瓦片組合渲染,生成一幅完整的地圖,此種技術(shù)對(duì)服務(wù)器及網(wǎng)絡(luò)負(fù)載提出了極高的需求;2)瓦片服務(wù)器技術(shù),即先在服務(wù)器上切圖生成金字塔結(jié)構(gòu)的地圖瓦片,通過(guò)客戶端發(fā)送請(qǐng)求進(jìn)行訪問(wèn),此技術(shù)本質(zhì)上是服務(wù)器端存儲(chǔ)的數(shù)據(jù)加載過(guò)程,因此其速度比瓦片客戶端技術(shù)及原始矢量地圖技術(shù)效率高得多。本文采用服務(wù)器端瓦片技術(shù),且在此基礎(chǔ)上通過(guò)并行處理技術(shù)可有效提高矢量原始數(shù)據(jù)的處理效率。

1.3 矢量瓦片上傳流程

經(jīng)過(guò)矢量原始數(shù)據(jù)切圖處理之后,產(chǎn)生vector格式的數(shù)據(jù),存放在服務(wù)器上,在GIS平臺(tái)中提供瓦片服務(wù)與HBase集群進(jìn)行上傳下載交互。

上傳過(guò)程分為4個(gè)步驟:1)啟動(dòng)瓦片服務(wù);2)將已切圖完成的瓦片存儲(chǔ)在瓦片服務(wù)中以便于查看;3)發(fā)布瓦片地圖元數(shù)據(jù),即將瓦片服務(wù)中的地圖元數(shù)據(jù)文件(.tifo、.xml)等信息寫(xiě)入數(shù)據(jù)庫(kù)(Oracle)當(dāng)中,起到索引的作用;4)地圖瓦片數(shù)據(jù)上傳。通過(guò)所需上傳瓦片的地圖級(jí)別以及識(shí)別出的地圖范圍,通過(guò)存儲(chǔ)平臺(tái)IP地址定位進(jìn)行數(shù)據(jù)上傳,上傳結(jié)束后,生成.map索引文件存儲(chǔ)至數(shù)據(jù)庫(kù)中,作為客戶端訪問(wèn)矢量瓦片地圖的入口,流程如圖2所示。

圖2 矢量瓦片上傳流程

2 矢量數(shù)據(jù)兩級(jí)并行處理技術(shù)

本文提出的并行處理技術(shù)針對(duì)的是單PC機(jī)、PC機(jī)搭建的集群、多核服務(wù)器這3種處理情況[6],通過(guò)合理的進(jìn)程處理設(shè)計(jì)安排切圖任務(wù)及上傳任務(wù)的兩級(jí)并行處理,有效提高數(shù)據(jù)處理效率。

在矢量數(shù)據(jù)處理過(guò)程中,本文在邏輯及物理形式上采用2種策略:

1)基于圖幅的并行處理(邏輯層)。

從邏輯層面上來(lái)看,地圖顯示是由每一塊圖幅拼接生成。對(duì)于原始矢量數(shù)據(jù),在其處理后數(shù)據(jù)最終入庫(kù)之前,其組織形式為分幅組織。具體表現(xiàn)形式為單個(gè)文件夾表示某一范圍的地圖數(shù)據(jù)及編號(hào)。這種文件夾的組織形式,根據(jù)不同圖幅的不同序號(hào)進(jìn)行數(shù)據(jù)讀取,解決了I/O中讀沖突的問(wèn)題。

因大量圖幅的切片處理不可能采取串行處理操作,所以在數(shù)據(jù)處理邏輯上,以圖幅為處理單元的并行處理是有必要的。但圖幅數(shù)量巨大的情況下,按照?qǐng)D幅進(jìn)行的并行任務(wù)分割過(guò)于細(xì)化,對(duì)硬件資源提出了極高的需求,且原始圖幅數(shù)據(jù)表示范圍與矢量瓦片目的切片范圍并不一致。因此瓦片切分后的結(jié)果會(huì)產(chǎn)生地圖數(shù)據(jù)碎片。碎片不能夠直接顯示,會(huì)產(chǎn)生數(shù)據(jù)覆蓋,導(dǎo)致顯示雜亂的問(wèn)題。所以需要在實(shí)際數(shù)據(jù)處理即物理層上對(duì)并行任務(wù)單元進(jìn)行包裝。

2)基于桶的并行處理(物理層)。

由上文可知,矢量數(shù)據(jù)切圖的指令集是相同的,皆為矢量圖幅。將圖幅按照合適范圍組織為集合,單個(gè)集合啟動(dòng)并占用一個(gè)進(jìn)程,最終此集合切圖產(chǎn)生的矢量瓦片都存放在一起,稱(chēng)作桶[7]。

桶是矢量瓦片的物理組織形式,其組織結(jié)構(gòu)是通過(guò)數(shù)據(jù)處理之前的范圍劃分形成。例如:在實(shí)驗(yàn)中設(shè)定一個(gè)桶中包含256×256塊瓦片,規(guī)定6級(jí)為全球范圍500萬(wàn)(即1∶500萬(wàn),下文類(lèi)同)比例尺等級(jí)。由于0~6級(jí)矢量瓦片數(shù)量少于256×256,那么0~6級(jí)的矢量瓦片作為1個(gè)桶。7級(jí)為250萬(wàn)比例尺等級(jí),根據(jù)0~6級(jí)的瓦片數(shù)量可分為4個(gè)桶。8級(jí)及以上以此類(lèi)推。桶的個(gè)數(shù)與實(shí)際原始數(shù)據(jù)表示的地理范圍有關(guān),全球、全國(guó)、地區(qū)的瓦片數(shù)量差別很大,導(dǎo)致具體任務(wù)桶的個(gè)數(shù)同樣差別很大。表1展示了地圖比例尺與瓦片層級(jí)的對(duì)應(yīng)關(guān)系。

表1 瓦片層級(jí)與地圖比例尺對(duì)應(yīng)關(guān)系

地圖比例尺分母/萬(wàn)瓦片層級(jí)地圖比例尺分母/萬(wàn)瓦片層級(jí)50000010071000015085000225925003101010004511700511250060.513

2.1 并行處理技術(shù)的參考因素

在數(shù)據(jù)處理流程中,通常會(huì)考慮3個(gè)方面的協(xié)調(diào)問(wèn)題:數(shù)據(jù)讀取、網(wǎng)絡(luò)服務(wù)傳輸與數(shù)據(jù)應(yīng)用。在流程結(jié)構(gòu)上有2種處理方式:1)全部任務(wù)輸入,全部任務(wù)傳輸,全部數(shù)據(jù)應(yīng)用;2)部分任務(wù)輸入,部分任務(wù)應(yīng)用,部分任務(wù)傳輸,部分?jǐn)?shù)據(jù)應(yīng)用。

第1種邏輯即為最常見(jiàn)的串行模式,其處理結(jié)構(gòu)單一,但在海量數(shù)據(jù)的輸入下,效率低下,計(jì)算資源在等待I/O完成時(shí)空閑,容易產(chǎn)生內(nèi)存耗盡、磁盤(pán)空間不足等問(wèn)題。第2種方式即為并行模式[8],但并不是一味地針對(duì)所有任務(wù)并行,需要通過(guò)對(duì)整個(gè)流程涉及的子任務(wù)進(jìn)行并行性分析,針對(duì)復(fù)雜的實(shí)際情況進(jìn)行并行串行的復(fù)合解決,如I/O與顯示、處理并行,I/O負(fù)責(zé)讀取數(shù)據(jù),顯示線程負(fù)責(zé)矢量瓦片加載,處理線程負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)換、切圖。

依據(jù)流程結(jié)構(gòu)思想,在本文中,面向矢量數(shù)據(jù)及矢量瓦片,已有的I/O與Orale、HBase的主要線程包括連接線程、接收線程、讀線程、發(fā)送線程、消息線程和寫(xiě)線程。讀線程和寫(xiě)線程,負(fù)責(zé)從Oracle讀取矢量數(shù)據(jù)和寫(xiě)入矢量數(shù)據(jù)。連接線程響應(yīng)和處理瓦片服務(wù)器和加載用戶的連接請(qǐng)求。接收線程處理瓦片請(qǐng)求事務(wù),接收瓦片存儲(chǔ)位置HBase平臺(tái)IP地址并對(duì)應(yīng)建立讀取隊(duì)列和發(fā)送消息。消息線程響應(yīng)用戶加載服務(wù)請(qǐng)求,響應(yīng)后,接收瓦片數(shù)據(jù)并對(duì)應(yīng)分發(fā)到寫(xiě)線程。讀線程通過(guò)瓦片服務(wù)從HBase讀取瓦片數(shù)據(jù),將瓦片數(shù)據(jù)加入引用緩存,再設(shè)置發(fā)送事件,實(shí)現(xiàn)地圖顯示等后續(xù)功能。

在上文中的多種線程中,切圖過(guò)程的讀、寫(xiě)線程根據(jù)桶的范圍劃分對(duì)矢量圖幅進(jìn)行并行處理;瓦片服務(wù)的消息線程、發(fā)送線程根據(jù)瓦片桶的劃分進(jìn)行并發(fā)操作。

2.2 數(shù)據(jù)處理的并行性分析

對(duì)于海量矢量原始數(shù)據(jù),順序執(zhí)行單個(gè)瓦片切圖生成操作效率低下,因此進(jìn)行并行程序設(shè)計(jì)是極有必要的。

在海量空間數(shù)據(jù)處理的流程中,并不是所有的處理環(huán)節(jié)都需要并行解決,需要根據(jù)其內(nèi)在的并行性進(jìn)行評(píng)估。下面介紹分析待解決問(wèn)題并行性的集中常用方法[9]:

1)數(shù)據(jù)相關(guān)性。每個(gè)節(jié)點(diǎn)代表一個(gè)待完成的任務(wù),從一個(gè)節(jié)點(diǎn)u到另一個(gè)節(jié)點(diǎn)v的帶方向的邊e表示任務(wù)u必須在任務(wù)v之前完成,若沒(méi)有節(jié)點(diǎn)u到節(jié)點(diǎn)v的有向邊,表示任務(wù)u與任務(wù)v無(wú)相關(guān)性,即存在較大的并行性。

2)數(shù)據(jù)并行性。若任務(wù)u與任務(wù)v無(wú)相關(guān)性,但是2個(gè)任務(wù)對(duì)數(shù)據(jù)集內(nèi)的不同要素進(jìn)行相同的處理操作,可視為相關(guān)節(jié)點(diǎn)展現(xiàn)了數(shù)據(jù)并行性。

假設(shè)矢量切圖為任務(wù)u,瓦片上傳為任務(wù)v,則u必須在v之前完成,相關(guān)性極強(qiáng),所以切圖與上傳并不能夠并行處理;假設(shè)001圖幅與002圖幅分別為切圖任務(wù)i、j,對(duì)應(yīng)生成的瓦片上傳任務(wù)為s、t,那么可知i與j,s與t無(wú)相關(guān)性,且每對(duì)任務(wù)的處理要素相同,即i與j,s與t存在數(shù)據(jù)并行性,可并行處理。

圖3 矢量瓦片調(diào)度策略對(duì)比

在并行性分析基礎(chǔ)上,需將具有并行性的應(yīng)用程序分解為一系列小任務(wù)。并行小任務(wù)的調(diào)度方式分為靜態(tài)調(diào)度、動(dòng)態(tài)調(diào)度2種。如圖3所示,瓦片并行任務(wù)單元分為A桶、B桶、C桶3種。A桶的任務(wù)執(zhí)行時(shí)間為2個(gè)單位時(shí)間,B桶的任務(wù)執(zhí)行時(shí)間為1個(gè)單位時(shí)間,C桶的任務(wù)執(zhí)行時(shí)間為3個(gè)單位時(shí)間。靜態(tài)調(diào)度分為4個(gè)進(jìn)程,任務(wù)平均分配,所有桶完成的總時(shí)間為7個(gè)單位時(shí)間。動(dòng)態(tài)調(diào)度每當(dāng)有一個(gè)桶完成,下個(gè)桶馬上從任務(wù)隊(duì)列調(diào)出執(zhí)行,所有桶完成的總時(shí)間為5個(gè)單位時(shí)間。此種調(diào)度方式可以顯著提升矢量數(shù)據(jù)處理效率,并有效利用軟硬件資源。

2.3 單圖幅的切圖算法

在1.2節(jié)提到的金字塔模型完整地定義了切圖生成的瓦片層級(jí)結(jié)構(gòu)。在本文中,瓦片尺寸為256×256像素,瓦片行號(hào)從0開(kāi)始按照經(jīng)度-180°到180°遞增,瓦片列號(hào)按照緯度90°到-90°遞增,以此類(lèi)推所有層級(jí)的瓦片[10]。圖4展示了實(shí)際矢量瓦片地圖的行列號(hào)及顯示范圍等信息。

圖4 矢量瓦片地圖的格網(wǎng)信息

在矢量數(shù)據(jù)切圖之前需要對(duì)地理顯示范圍的原始值進(jìn)行校準(zhǔn),使其長(zhǎng)高比為某一便于切圖的比例。從西北角開(kāi)始對(duì)此固定范圍進(jìn)行切圖,后續(xù)的多層級(jí)地圖之間采用四叉樹(shù)數(shù)據(jù)結(jié)構(gòu)。如圖4所示,第level級(jí)上的一張瓦片到第level+1級(jí)將裂變成4張,此結(jié)構(gòu)有助于切圖和顯示。

根據(jù)所述的基本原則及圖4所示,可得到單個(gè)瓦片的切圖生成算法[11]流程如圖5所示。

矢量瓦片對(duì)應(yīng)地理顯示范圍如下:

TileRange=360°/TileLvl2

(1)

其中,TileRange為當(dāng)前層級(jí)下一瓦片對(duì)應(yīng)的地理顯示范圍,其單位為度,TileLvl為當(dāng)前瓦片所在金字塔層級(jí)。那么據(jù)此可以得到瓦片行列號(hào)TileRows、TileCols與地理坐標(biāo)MX、MY的換算關(guān)系,其中Floor為向下取整操作,(orgX,orgY)為金字塔坐標(biāo)原點(diǎn)(-180°,90°),TileRows、TileCols計(jì)算分別如式(2)和式(3)所示。

TileRows=Floor((MX-orgX)/TileRange)

(2)

TileCols=Floor((orgY-MY)/TileRange)

(3)

圖5 單瓦片的切圖生成流程

按照以上規(guī)則配置的矢量原始數(shù)據(jù)進(jìn)行矢量瓦片切圖[12]。首先加載矢量數(shù)據(jù)中的切片限定范圍Bound,對(duì)此Bound進(jìn)行道格拉斯抽稀得到矢量數(shù)據(jù)切片的實(shí)際范圍,同時(shí)計(jì)算出目標(biāo)地圖的初始化切片范圍,即為按照所選圖幅選定的默認(rèn)切片范圍BBOX。為了得到實(shí)際切片范圍RealBound,需要對(duì)上文中的Bound及BBOX進(jìn)行疊置分析,其具體算法如下:

通過(guò)獲得的實(shí)際切片范圍RealBound上的特征點(diǎn)坐標(biāo)及當(dāng)前的切片層級(jí)TileLvl,完成式(2)和式(3)的計(jì)算得到實(shí)際切片范圍對(duì)應(yīng)的瓦片行列號(hào)范圍(minTileRow,minTileCol)到(maxTileRow,maxTileCol)。那么切片工作可以概括為對(duì)(maxTileRow-minTileRow+1)×(maxTileCol-minTileCol+1)二維矩陣內(nèi)由當(dāng)前切片層級(jí)TileLvl、行號(hào)Line、列號(hào)Row唯一確定的圖幅范圍進(jìn)行切圖處理。

根據(jù)單塊瓦片的實(shí)驗(yàn)結(jié)果顯示,無(wú)組織順序處理矢量數(shù)據(jù)會(huì)耗費(fèi)巨大的時(shí)間資源,且硬件空間資源利用效率較差。

2.4 并行切圖技術(shù)的任務(wù)分割實(shí)現(xiàn)

對(duì)矢量瓦片整體處理流程運(yùn)用2.2節(jié)的思想進(jìn)行分析[13],如圖6所示。

圖6 矢量瓦片整體處理流程

矢量數(shù)據(jù)入庫(kù)環(huán)節(jié)不支持并行處理,原因在于相同的圖層不能同時(shí)入庫(kù),比如2個(gè)水域陸地圖層不能同時(shí)入庫(kù),因?yàn)槠鋵?duì)應(yīng)的目標(biāo)ID相同。矢量數(shù)據(jù)切圖及上傳瓦片流程為串行模式,其原因在于2節(jié)點(diǎn)處理對(duì)象的不同,數(shù)據(jù)形式發(fā)生了改變,但是在2關(guān)鍵節(jié)點(diǎn)的子流程內(nèi),矢量數(shù)據(jù)切圖的子任務(wù)處理的對(duì)象相同,且互不干擾,因此其可并行性較強(qiáng),瓦片并行上傳亦是如此。

劃分是將計(jì)算任務(wù)和數(shù)據(jù)進(jìn)行分塊的過(guò)程[14],劃分的過(guò)程一般采用以計(jì)算任務(wù)為中心的劃分策略。本文中任務(wù)分解的結(jié)果為切圖中桶的概念,那么并行切圖的過(guò)程如下:將所有待切片的任務(wù)放入任務(wù)隊(duì)列q中,每個(gè)任務(wù)包含切片層級(jí)、切片地理范圍2類(lèi)信息,通過(guò)并行處理參數(shù)設(shè)定,如主線程數(shù)、子線程數(shù)等,啟動(dòng)切片任務(wù)主線程mainThread,并開(kāi)啟子線程Thread1、Thread2、…、Threadn,當(dāng)隊(duì)列q中無(wú)任務(wù)時(shí),切圖完成,返還系統(tǒng)資源,具體過(guò)程如圖7所示。

2.5 并行上傳技術(shù)的實(shí)現(xiàn)

矢量數(shù)據(jù)進(jìn)行并行切圖處理后,需要將生成好的瓦片上傳[15]至相應(yīng)的存儲(chǔ)平臺(tái),快速將海量數(shù)據(jù)生成的瓦片數(shù)據(jù)上傳是并行處理技術(shù)的最后一個(gè)環(huán)節(jié)。在1.3節(jié)中提到了矢量瓦片上傳流程中需要在服務(wù)器端部署瓦片服務(wù),在本文中采用多線程并發(fā)進(jìn)行上傳任務(wù)規(guī)劃,利用HBase提供的接口進(jìn)行矢量瓦片上傳。

HBase中矢量數(shù)據(jù)以表的形式存在,每張表存儲(chǔ)每張瓦片的行列號(hào)信息,用于確定該瓦片的基本信息,表的列存儲(chǔ)該行列號(hào),代表瓦片的具體顯示信息。針對(duì)HBase中存儲(chǔ)節(jié)點(diǎn)的分布情況,在多核處理器端,進(jìn)行并行瓦片上傳。針對(duì)服務(wù)器端存在大量用戶并發(fā)訪問(wèn)的情況,瓦片服務(wù)采用Java線程池設(shè)計(jì),其具體設(shè)計(jì)類(lèi)似于2.2節(jié)中的切片任務(wù)并行設(shè)計(jì):在啟動(dòng)瓦片服務(wù)時(shí),創(chuàng)建線程池,對(duì)提出的上傳請(qǐng)求進(jìn)行分解,分別對(duì)應(yīng)線程池中的若干個(gè)線程,實(shí)現(xiàn)并行處理的效果,各子線程任務(wù)結(jié)束后自動(dòng)結(jié)束并釋放系統(tǒng)資源。編程接口亦采用多線程設(shè)計(jì),并應(yīng)用散列(Hash)技術(shù)提高瓦片緩存查找效率。

瓦片服務(wù)不需要專(zhuān)門(mén)硬件支持,可最大限度利用硬件性能,支持多網(wǎng)卡配置并共同提供網(wǎng)絡(luò)I/O。應(yīng)用編程接口支持多個(gè)獨(dú)立的瓦片服務(wù),共同為單個(gè)或多個(gè)應(yīng)用系統(tǒng)提供瓦片服務(wù)。

3 實(shí)驗(yàn)結(jié)果對(duì)比與分析

本文的硬件實(shí)驗(yàn)環(huán)境如表2所示。

表2 實(shí)驗(yàn)硬件環(huán)境

硬件類(lèi)型CPU操作系統(tǒng)內(nèi)存/GB硬盤(pán)/TBPCInter Core i72.67 GHzWin7 64位81服務(wù)器(物理)Inter Xeon E74830 2.1 GHzWindows Server R2 20082565服務(wù)器(虛擬)Inter Xeon E74830 2.1 GHzWindows Server R2 20082565

HBase集群部署如表3所示。

表3 HBase集群部署

節(jié)點(diǎn)名稱(chēng)節(jié)點(diǎn)IPMaster7.5.9.1Master17.5.9.2Slave17.5.9.3Slave27.5.9.4Slave37.5.9.5

矢量數(shù)據(jù)處理服務(wù)器部署如表4所示。

表4 數(shù)據(jù)處理服務(wù)器部署情況

服務(wù)器名稱(chēng)服務(wù)器地址地理信息數(shù)據(jù)庫(kù)服務(wù)器7.5.9.36瓦片服務(wù)器(主)7.5.9.180瓦片服務(wù)器(備)7.5.9.181切圖服務(wù)器(主)7.5.9.183切圖服務(wù)器(備)7.5.9.182

依據(jù)第2章提出的并行處理思想,對(duì)其進(jìn)行綜合實(shí)現(xiàn)得到如圖8所示的效果圖,圖中每個(gè)圓圈代表一塊瓦片,圓圈內(nèi)的數(shù)字代表此瓦片的層級(jí)及地理范圍信息,按照從上至下,從左至右序號(hào)遞增。切圖結(jié)束后通過(guò)服務(wù)自動(dòng)上傳到HBase集群。

圖8 集成測(cè)試界面

實(shí)驗(yàn)所用矢量數(shù)據(jù)分布情況:500萬(wàn)比例尺全球圖,100萬(wàn)比例尺全球圖,50萬(wàn)比例尺全國(guó)圖,25萬(wàn)比例尺全國(guó)圖,5萬(wàn)比例尺含廣東廣西等6省地區(qū)圖,實(shí)驗(yàn)所用數(shù)據(jù)約400 GB,其源數(shù)據(jù)格式如圖9所示,每個(gè)文件夾代表某一范圍(圖幅)的原始矢量數(shù)據(jù)。

圖9 原始矢量數(shù)據(jù)組織形式

針對(duì)矢量數(shù)據(jù)并行切圖處理這一環(huán)節(jié),桶設(shè)定為256×256塊圖幅,通過(guò)進(jìn)程數(shù)量設(shè)定,對(duì)500萬(wàn)、100萬(wàn)、50萬(wàn)、25萬(wàn)、5萬(wàn)比例尺地圖數(shù)據(jù)分別在服務(wù)器端及PC進(jìn)行實(shí)驗(yàn),結(jié)果如表5所示。

表5 矢量切圖耗時(shí)結(jié)果

進(jìn)程數(shù)量地圖比例尺分母/萬(wàn)50010050255163.8 min4.8 h 35.2 h2.9 d12 d417.2 min74.3 min 8.95 h19 h 3 d810.4 min39.4 min4.6 h8.9 h 33 h 167.1 min25.6 min2.2 h4.2 h17 h326.4 min20.8 min1 h1.9 h8 h

從表5可以看出,在輸入數(shù)據(jù)量較小的500萬(wàn)、100萬(wàn)比例尺情況下,在8進(jìn)程之后,增加并行任務(wù)數(shù)量并不能顯著提高處理效率。原因在于此時(shí)并行任務(wù)小于進(jìn)程數(shù)量,過(guò)大的進(jìn)程數(shù)量設(shè)定反而浪費(fèi)計(jì)算資源[16]。但在數(shù)據(jù)量較大的50萬(wàn)、25萬(wàn)、5萬(wàn)比例尺情況下,增加并行處理的進(jìn)程數(shù)可大幅度提高切圖效率。在32進(jìn)程、256 GB內(nèi)存的服務(wù)器上尤為明顯,將單進(jìn)程處理的近半個(gè)月時(shí)間縮短為8 h,大大提高了海量矢量數(shù)據(jù)的處理效率。

針對(duì)矢量瓦片上傳并行這一環(huán)節(jié),對(duì)500萬(wàn)、100萬(wàn)、50萬(wàn)、25萬(wàn)、5萬(wàn)比例尺瓦片地圖進(jìn)行并行上傳的時(shí)間測(cè)試,如表6所示。

表6 瓦片上傳時(shí)間對(duì)比

由表6數(shù)據(jù)可得到單任務(wù)即單線程執(zhí)行上傳任務(wù)所需平均速率如圖10所示。

圖10 單線程執(zhí)行上傳任務(wù)平均速率

如圖10所示,上傳帶寬約為百兆光纖的傳輸平均速率12.5 MB/s[17]。本文實(shí)驗(yàn)的上傳速率計(jì)算中,單線程任務(wù)的寫(xiě)入時(shí)間可以忽略不計(jì),其主要時(shí)間消耗在于讀取時(shí)間以及網(wǎng)絡(luò)時(shí)延。隨著數(shù)據(jù)量的大幅增加,單線程的任務(wù)負(fù)載由不充分到滿負(fù)荷,所以總體趨勢(shì)上看,單線程執(zhí)行上傳任務(wù)平均速度是遞增的,到達(dá)峰值時(shí)保持平穩(wěn)的波動(dòng)。

4 結(jié)束語(yǔ)

綜上所述,本文所提出的并行處理技術(shù)包含矢量數(shù)據(jù)并行處理以及矢量瓦片并行上傳2部分,通過(guò)合理的2步并行及其他環(huán)節(jié)的串行處理可以使服務(wù)端瓦片地圖的整體處理效率得到有效提升。

從海量空間數(shù)據(jù)處理的整體架構(gòu)方面考慮,本文的空間數(shù)據(jù)庫(kù)可整體遷移至HBsae集群,利用分布式數(shù)據(jù)庫(kù)高并發(fā)的特點(diǎn),在矢量數(shù)據(jù)讀寫(xiě)等方面可繼續(xù)進(jìn)行優(yōu)化,為瓦片地圖的生成提供更簡(jiǎn)潔更有效的生成方式。

猜你喜歡
圖幅瓦片線程
一種基于主題時(shí)空價(jià)值的服務(wù)器端瓦片緩存算法
慣性
淺談linux多線程協(xié)作
基于EXCEL的地形圖圖幅號(hào)轉(zhuǎn)換查詢(xún)方法
基于ArcMap的圖幅接合表快速生成方法研究
地形圖圖幅編號(hào)規(guī)則及實(shí)現(xiàn)
基于NoSQL數(shù)據(jù)庫(kù)的瓦片地圖服務(wù)
基于Bing Maps的地形圖圖幅編號(hào)的網(wǎng)絡(luò)可視化查詢(xún)
Linux線程實(shí)現(xiàn)技術(shù)研究
么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
乡城县| 上虞市| 武平县| 屏南县| 宁夏| 武威市| 什邡市| 临猗县| 雅江县| 潍坊市| 班戈县| 伽师县| 桃园县| 武夷山市| 浠水县| 拜城县| 天津市| 黄骅市| 岳西县| 绩溪县| 绍兴市| 焉耆| 宝山区| 竹山县| 曲沃县| 桐梓县| 台湾省| 罗田县| 赤峰市| 苍溪县| 睢宁县| 平果县| 阿拉善盟| 兰考县| 绥江县| 游戏| 黑河市| 谷城县| 株洲县| 泰顺县| 遂昌县|