朱月琴,郭明強(qiáng),黃 穎,吳 亮,5,謝 忠,5
(1.自然資源部地質(zhì)信息技術(shù)重點實驗室,北京 100037; 2.中國地質(zhì)調(diào)查局發(fā)展研究中心,北京 100037; 3.中國地質(zhì)大學(xué)(武漢)信息工程學(xué)院,湖北 武漢 430074; 4.武漢中地數(shù)碼科技有限公司,湖北 武漢 430074; 5.國家地理信息系統(tǒng)工程技術(shù)研究中心,湖北 武漢 430074)
隨著科學(xué)研究方式第四范式的誕生,即數(shù)據(jù)密集型的知識發(fā)現(xiàn),地質(zhì)學(xué)領(lǐng)域具有多源、異構(gòu)等復(fù)合型數(shù)據(jù)已經(jīng)被列入大數(shù)據(jù)的范疇,被稱之為“地質(zhì)大數(shù)據(jù)”[1-2]。大數(shù)據(jù)量地理信息數(shù)據(jù)在線服務(wù)應(yīng)用提供的矢量服務(wù),其響應(yīng)速度和數(shù)據(jù)量、服務(wù)器性能,網(wǎng)絡(luò)環(huán)境相關(guān)性大,目前矢量大數(shù)據(jù)服務(wù)應(yīng)用存在的瓶頸有以下四點:數(shù)據(jù)發(fā)布準(zhǔn)備工作費時費力[3-4]、時效性難以保證[5-6]、無法在線編輯處理、難以支持大數(shù)據(jù)量應(yīng)用[7-9],迫切需要研究適應(yīng)矢量大數(shù)據(jù)實時渲染的并行處理方法。
面向地質(zhì)大數(shù)據(jù)實時渲染的計算域均衡分解系統(tǒng)層次架構(gòu)的設(shè)計包括:數(shù)據(jù)準(zhǔn)備層、前端應(yīng)用層、業(yè)務(wù)邏輯層、GIS服務(wù)層。數(shù)據(jù)準(zhǔn)備層為獨立的桌面軟件,與后面層級沒有直接的關(guān)系,但后面層級在運行之前必須首先通過數(shù)據(jù)準(zhǔn)備層生成必要的準(zhǔn)備數(shù)據(jù)。前端應(yīng)用層通過ajax向業(yè)務(wù)邏輯層發(fā)送http請求,業(yè)務(wù)邏輯層通過多線程并行的向多個MapGIS IGServer服務(wù)節(jié)點發(fā)送REST服務(wù)請求獲得矢量地圖圖像,如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
數(shù)據(jù)準(zhǔn)備層:該層為一個獨立的桌面軟件,即桌面自動采集工具,主要的功能是對矢量大數(shù)據(jù)進(jìn)行樣本自動采集,并通過對采集的樣本數(shù)據(jù)進(jìn)行統(tǒng)計分析,得到矢量大數(shù)據(jù)渲染時間的計算公式。同時實現(xiàn)了對矢量大數(shù)據(jù)自動網(wǎng)格化,為后面矢量大數(shù)據(jù)優(yōu)化做數(shù)據(jù)準(zhǔn)備工作。
前端應(yīng)用層:該層為面向地質(zhì)大數(shù)據(jù)實時渲染的計算域均衡分解系統(tǒng)的前端部分,主要實現(xiàn)了地圖顯示、地圖基本操作,包括放大,縮小,復(fù)位等功能,以及動態(tài)的監(jiān)視并顯示每一個服務(wù)器節(jié)點渲染矢量數(shù)據(jù)所耗費的時間。
業(yè)務(wù)邏輯層:該層為本系統(tǒng)的核心部分,主要實現(xiàn)了最佳網(wǎng)格級別查找、可視域范圍內(nèi)的網(wǎng)格單元檢索、可視域范圍內(nèi)矢量要素渲染時間統(tǒng)計、可視域范圍的均衡劃分、通過多線程對矢量數(shù)據(jù)并行渲染、無縫拼接渲染結(jié)果等一系列功能。
GIS服務(wù)層:即MapGIS IGServer,該部分主要負(fù)責(zé)地質(zhì)矢量大數(shù)據(jù)服務(wù)的管理與服務(wù)發(fā)布,提供了豐富的GIS功能服務(wù)以及完善的二次開發(fā)接口。
矢量地圖服務(wù)時間樣本的自動采集主要實現(xiàn)了在矢量數(shù)據(jù)的空間范圍內(nèi)隨機(jī)生成大小、位置各異的矩形范圍,利用每次生成的矩形范圍對矢量數(shù)據(jù)進(jìn)行空間查詢,記錄當(dāng)前矩形范圍內(nèi)要素的個數(shù)。并且利用以當(dāng)前隨機(jī)矩形范圍作為矢量地圖的渲染范圍,從服務(wù)器獲取圖像,同時記錄獲取圖像所耗費的時間。將每一個隨機(jī)矩形范圍對應(yīng)的要素總數(shù)及矢量地圖的渲染時間記錄到樣本文件并保存至指定的文件夾下。實現(xiàn)流程圖如2所示。
圖2 矢量地圖服務(wù)時間樣本自動采集實現(xiàn)流程圖
矢量地圖服務(wù)時間公式自動統(tǒng)計的功能是在矢量地圖服務(wù)時間樣本自動采集完成的基礎(chǔ)上進(jìn)行的,其目的是對采集的樣本數(shù)據(jù)通過一元線性回歸的方法,計算出在矢量要素渲染的過程中要素數(shù)量與渲染時間之間的線性關(guān)系CI=a×count+b中的系數(shù)a與截距b,以及R2。其主要的實現(xiàn)思路為:首先從采集的樣本數(shù)據(jù)中獲取多組觀察值(count1,CI1),(count2,CI2),…,然后調(diào)用已封裝好的最小二乘法計算接口,求出系數(shù)a、截距b以及R2。
實現(xiàn)效果圖如3所示。
圖3 矢量地圖服務(wù)時間公式自動統(tǒng)計實現(xiàn)效果圖
矢量圖層時間網(wǎng)格自動生成主要實現(xiàn)了將矢量圖層使用四叉樹的方式進(jìn)行網(wǎng)格劃分,劃分的實現(xiàn)思路為:網(wǎng)格組織方式按照四叉樹(4n)組織,第0級一個網(wǎng)格,第1級4個網(wǎng)格,依次類推。算法:首先獲取圖層的外包矩形范圍[Xmin,Ymin,Xmax,Ymax],然后將其擴(kuò)展為一個正方形范圍[XRmin,YRmin,XRmax,YRmax],擴(kuò)展分為兩種情況:
第一種,外包矩形寬度(Xmax-Xmin)大于高度(Ymax-Ymin)時,擴(kuò)展計算公式見式(1)~(4)。
XRmin=Xmin
(1)
(2)
XRmax=Xmax
(3)
(4)
第二種情況,外包矩形寬度(Xmax-Xmin)小于高度(Ymax-Ymin)時,擴(kuò)展計算公式見式(5)~(8)。
(5)
YRmin=Ymin
(6)
(7)
YRmax=Ymax
(8)
計算第0~n級網(wǎng)格的分辨率,計算公式見式(9)~(11)。
(9)
(10)
…
(11)
計算指定級別l下第r行第c列網(wǎng)格單元的矩形范圍[XCmin,YCmin,XCmax,YCmax],規(guī)定左下角(XRmin,YRmin)為計算原點,具體計算公式見式(12)~(15)。
XCmin=XRmin+c.Rl
(12)
YCmin=YRmin+r.Rl
(13)
XCmax=XCmin+Rl
(14)
YCmax=YCmin+Rl
(15)
在MapGISLocal數(shù)據(jù)源指定數(shù)據(jù)庫中創(chuàng)建區(qū)圖層,將計算的每個網(wǎng)格單元的矩形范圍作為幾何參數(shù),該網(wǎng)格單元的要素個數(shù)、渲染時間、行號、列號等作為屬性參數(shù)添加到上述新建的區(qū)圖層中。
矢量地圖服務(wù)均勻劃分首先需要在均衡分解模塊的全局配置文件中配置結(jié)點數(shù)量c和一個均衡參數(shù)p。如現(xiàn)有部署方式為:1+2模式,1臺機(jī)器為示例網(wǎng)站部署機(jī)器,2臺MapGIS IGServer服務(wù)器,則c=2??梢曈蚍秶捎镁W(wǎng)格劃分方法,則可視域到底在哪個分辨率的網(wǎng)格下劃分最均衡至關(guān)重要。為計算最佳網(wǎng)格分辨率,設(shè)置了均衡參數(shù)p。設(shè)現(xiàn)有可視域范圍為[XVmin,YVmin,XVmax,YVmax],最佳網(wǎng)格分辨率Rp計算公式見式(16)。
(16)
計算得到最佳分辨率Rp之后,通過遍歷所有級別的網(wǎng)格的分辨率,得到分辨率最接近Rp的網(wǎng)格的級別數(shù)lp。然后利用當(dāng)前可視域范圍對級別數(shù)為lp的網(wǎng)格區(qū)圖層進(jìn)行空間查詢,查詢該范圍內(nèi)的所有計算時間網(wǎng)格單元矩形要素。若可視域范圍不能完全覆蓋正方形范圍,則邊界求占比,修改可視域范圍覆蓋不完整的網(wǎng)格單元的渲染時間并且修改網(wǎng)格單元的矩形范圍。經(jīng)過研究分析,將視域范圍不能完全覆蓋的網(wǎng)格單元按照其所在不同的位置分別計算其邊占比,參與邊占比計算的網(wǎng)格單元的分布情況如圖4所示,具體的算法如下所述。
圖4 參與邊占比計算的網(wǎng)格單元分布圖
為了便于閱讀下列公式,此處給出公式相關(guān)參數(shù)含義:網(wǎng)格單元矩形范圍為[XCmin,YCmin,XCmax,YCmax],可視域矩形范圍為[XVmin,YVmin,XVmax,YVmax],修改后單元格范圍為[XNmin,YNmin,XNmax,YNmax],邊占比為Ratio,修改后網(wǎng)格單元的渲染時間為CInew。
左上角單元格計算公式為式(17)。
(17)
修改XCmin為XVmin,YCmax為YVmax。
左邊單元格計算公式式(18)。
(18)
修改XCmin為XVmin。
左下角單元格計算公式為式(19)。
(19)
修改XCmin為XVmin,YCmin為YVmin。
下邊單元格計算公式為式(20)。
(20)
修改YCmin為YVmin。
右下角單元格計算公式為式(21)。
(21)
修改XCmax為XVmax,YCmin為YVmin。
右邊單元格計算公式為式(22)。
(22)
修改XCmax為XVmax。
右上角單元格計算公式為式(23)。
(23)
修改XCmax為XVmax,YCmax為YVmax。
上邊單元格計算公式為式(24)。
(24)
修改YCmax為YVmax。
修改渲染時間的公式為式(25)。
CInew=CI×Ratio
(25)
網(wǎng)格數(shù)據(jù)檢索完成之后,遍歷所有的網(wǎng)格單元,計算當(dāng)前可視域范圍內(nèi)網(wǎng)格單元內(nèi)矢量要素的渲染時間總和。根據(jù)服務(wù)器節(jié)點數(shù)量求出平均時間。利用可視域范圍內(nèi)的網(wǎng)格單元進(jìn)行可視域劃分。劃分思路可簡述為:將可視域范圍內(nèi)的所有的單元格按照其行號進(jìn)行分行,遍歷單元格行,累加單元格渲染時間同時累加每一個單元格的空間范圍,直至渲染時間總和大于等于平均渲染時間為止,此處分為兩種情況:第一種,渲染時間總和等于平均渲染時間,則直接將空間范圍的累加結(jié)果分配給第一個服務(wù)器;第二種,渲染時間總和大于平均渲染時間,則計算超出平均時間部分與平均時間的占比,根據(jù)該占比調(diào)整空間范圍,然后再將該范圍分配給第一個服務(wù)器節(jié)點,多出的空間范圍則累計至下一個服務(wù)器節(jié)點的空間范圍,依此類推。實現(xiàn)流程圖如圖5所示。
本文在地質(zhì)大數(shù)據(jù)爆發(fā)式增長的背景下,結(jié)合目前在線大數(shù)據(jù)地圖服務(wù)在實際應(yīng)用中的瓶頸。面向地質(zhì)大數(shù)據(jù)實時渲染的計算域均衡分解系統(tǒng)采用了一系列的優(yōu)化方案,包括矢量地圖服務(wù)時間樣本自動采集、矢量地圖服務(wù)時間工時自動統(tǒng)計、矢量地圖網(wǎng)格化、基于網(wǎng)格的可視域劃分、多線程并行渲染,渲染結(jié)果合并等,在矢量大數(shù)據(jù)在線服務(wù)的響應(yīng)速率提升方面獲得了比較明顯的效果。其中基于網(wǎng)格的可視域劃分是該系統(tǒng)的核心部分,結(jié)合矢量大數(shù)據(jù)的特征,采用網(wǎng)格單元將矢量要素的渲染時間拆分,再根據(jù)服務(wù)器節(jié)點的數(shù)量按照平均渲染時間進(jìn)行網(wǎng)格單元合并的劃分方案,保證了每個服務(wù)器節(jié)點的渲染時間基本相等,負(fù)載均衡效率提升明顯。
圖5 矢量地圖服務(wù)均勻劃分實現(xiàn)流程圖