羅 泉,陳寧江
基于GeoServer的等值面圖服務(wù)實(shí)現(xiàn)
羅泉,陳寧江
(廣西大學(xué)計(jì)算機(jī)與電子信息學(xué)院,南寧530004)
根據(jù)OGC WMS標(biāo)準(zhǔn),對(duì)GeoServer的WMS服務(wù)進(jìn)行擴(kuò)展,實(shí)現(xiàn)基于IDW算法的動(dòng)態(tài)生成等值面功能,并封裝成WMS服務(wù),使用戶可以從網(wǎng)絡(luò)進(jìn)行調(diào)用和瀏覽等值面圖。應(yīng)用實(shí)例表明,具有實(shí)時(shí)插值,生成等值面圖像,動(dòng)態(tài)與地圖數(shù)據(jù)疊加等特點(diǎn),是對(duì)GeoServer軟件的有益補(bǔ)充。
GeoServer;Web Map Service;等值面
國(guó)家科技支撐計(jì)劃課題(No.2015BAH55F02)、廣西高校優(yōu)秀人才資助計(jì)劃(No.[2011]40)、廣西科學(xué)研究與技術(shù)開發(fā)計(jì)劃項(xiàng)目(桂科軟13180015)
等值面的生成是GIS空間分析中常用的方法。文獻(xiàn)[1]利用商業(yè)軟件ArcGIS的功能,實(shí)現(xiàn)了降雨量等值面的繪制,功能滿足需求但方案的實(shí)施成本高。文獻(xiàn)[2]提出基于OGC WPS(Web Processing Service)標(biāo)準(zhǔn)[3]實(shí)現(xiàn)常用空間分析功能,并利用免費(fèi)開源的GeoServer實(shí)現(xiàn)了緩沖區(qū)分析功能。然而,依據(jù)WPS標(biāo)準(zhǔn),經(jīng)過空間分析后生成的柵格圖像以超鏈接的形式返回,無法供瀏覽器直接與其他地圖數(shù)據(jù)結(jié)合顯示。在實(shí)際應(yīng)用中,等值面圖,如溫度分布圖、降水量分布圖等,都需要與實(shí)際地圖影像進(jìn)行疊加,以便下一步的分析。使用WPS標(biāo)準(zhǔn)生成的柵格圖像,不便直接在地圖上進(jìn)行定位并與地圖影像進(jìn)行疊加。
針對(duì)以上問題,本文依據(jù)OGC(Open GIS Consortium)WMS(Web Map Service)標(biāo)準(zhǔn),使用IDW插值算法,設(shè)計(jì)并實(shí)現(xiàn)動(dòng)態(tài)生成等值面的功能,制作成GeoServer軟件插件,封裝成WMS服務(wù),供用戶通過網(wǎng)絡(luò)進(jìn)行調(diào)用。
為解決各種異構(gòu)平臺(tái)中的GIS空間數(shù)據(jù)共享問題,開放地理空間信息聯(lián)盟OGC推出了一系列基于WebService技術(shù)的空間數(shù)據(jù)交互操作標(biāo)準(zhǔn),如WMS、WFS(Web Feature Service)、WCS(Web Coverage Service)、WPS等。WMS即網(wǎng)絡(luò)地圖服務(wù),提供了一個(gè)標(biāo)準(zhǔn)統(tǒng)一的數(shù)據(jù)訪問接口,定義了客戶端通過HTTP協(xié)議從地圖服務(wù)器獲取地圖圖像的標(biāo)準(zhǔn)規(guī)范。WMS服務(wù)既可動(dòng)態(tài)生成地圖,也可直接返回靜態(tài)地圖數(shù)據(jù)。這些地圖既可以使用PNG、JPEG等圖像格式來呈現(xiàn),也可以使用KML、SVG等矢量圖形來呈現(xiàn)。一個(gè)基本的WMS服務(wù)包括三個(gè)基礎(chǔ)操作:GetCapabilities、GetMap、Get-FeatureInfo。GetCapabilities返回服務(wù)的元數(shù)據(jù)信息,元數(shù)據(jù)包括服務(wù)支持的操作、參數(shù)以及有效的圖層;GetMap返回指定區(qū)域的地圖圖像;GetFeatureInfo則返回用戶指定的地理要素信息??蛻舳丝赏瑫r(shí)請(qǐng)求多個(gè)WMS服務(wù),并將返回的地圖圖像疊加,在一個(gè)視圖內(nèi)顯示。
GeoServer是OGC標(biāo)準(zhǔn)的一個(gè)J2EE實(shí)現(xiàn)[4],采用Spring Web MVC開源框架,所有的WMS請(qǐng)求均由Spring Web MVC的核心控制類DispatcherServlet進(jìn)行派發(fā),轉(zhuǎn)到GeoServer的核心類ows.Dispatcher中處理。下圖的UML時(shí)序圖描述是一個(gè)默認(rèn)的WMS的GetMap請(qǐng)求響應(yīng)過程:
(1)瀏覽器利用HTTP協(xié)議,發(fā)起GetMap請(qǐng)求。
(2)ows.Dispatcher接收到請(qǐng)求后,調(diào)用wms.DefaultWebMapService的GetMap函數(shù)進(jìn)行處理,并最終獲得一個(gè)WebMap對(duì)象,該對(duì)象封裝了用戶所請(qǐng)求的地圖空間數(shù)據(jù)。
(3)ows.Dispatche選用合適的策略,調(diào)用ows.Response的Write函數(shù),將WebMap對(duì)象渲染成PNG或JPEG等格式的圖片,返回給瀏覽器顯示。
wms.DefaultWebMapService由GeoServer核心根據(jù)服務(wù)名稱,利用反射技術(shù)動(dòng)態(tài)加載,通過GetMap操作,向?yàn)g覽器返回請(qǐng)求區(qū)域的地圖圖像。若實(shí)現(xiàn)等值面的動(dòng)態(tài)生成、定位及顯示,則需要依照WMS標(biāo)準(zhǔn),實(shí)現(xiàn)GetMap操作,在GetMap中完成空間插值、圖形渲染等功能。
圖1 WMS GetMap請(qǐng)求響應(yīng)UML時(shí)序圖
等值面是以空間為定義域的連續(xù)函數(shù)的等位集,一個(gè)等值面里的每一個(gè)點(diǎn),其數(shù)值是一樣的,使用同樣的顏色表示。單獨(dú)的等值面圖能表示數(shù)值的空間分布及空間變化趨勢(shì),連續(xù)的等值面圖能表示數(shù)值的空間、時(shí)間內(nèi)的分布及變化趨勢(shì),常用于水文、氣象、勘探等行業(yè)中。生成等值面其難點(diǎn)在于插值算法,受空間多種因素的影響,同一個(gè)樣本集采用不同的插值算法,其預(yù)測(cè)值與實(shí)測(cè)值的誤差不同[5]。為提高插值的精度,需要事先對(duì)樣本集進(jìn)行分析以選擇合適插值算法。本文使用IDW算法闡述基于GeoServer設(shè)計(jì)和實(shí)現(xiàn)等值面服務(wù)的過程。
等值面動(dòng)態(tài)生成服務(wù)被設(shè)計(jì)成為一個(gè)通用的WMS服務(wù),參數(shù)支持:INTERVALS(分級(jí)量值)、INTERVAL_COLORS(分級(jí)顏色)、INTERPOLATE(插值方法),實(shí)現(xiàn)WMS的三個(gè)基本操作,依賴于空間插值算法和渲染類,UML類圖如下:
圖2 等值面服務(wù)UML類圖
等值面服務(wù)的核心在于GetMap操作,在GetMap中使用空間插值算法插值、分級(jí),并使用渲染類將結(jié)果分級(jí)著色,渲染成PNG圖像。為今后能支持更多的空間插值算法、方便擴(kuò)展,在設(shè)計(jì)上采用了工廠模式,運(yùn)用Spring框架的IoC(Inversion of Control控制反轉(zhuǎn))機(jī)制,可以做到在不修改原有源代碼的情況下新增空間插值方法。同時(shí),使用緩存類來緩存渲染的結(jié)果,在插值前判斷緩存中是否有渲染結(jié)果,如果有則直接返回,如果沒有則進(jìn)行插值并渲染,利用空間來縮短響應(yīng)時(shí)間。GetMap的偽代碼片段如下:
public WebMap GetMap(GetMapRequest request)throws ServletException,
IOException{
String cachekey=getCacheKey(request);//根據(jù)輸入?yún)?shù)來獲取緩存的索引值
if(ResultCache.InCache(cachekey)){
return ResultCache.Get(cachekey);//緩存中有處理結(jié)果,可直接返回
}else{
//獲取需要使用的插值算法名稱
String iName=GetParam(request,”INTERPOLATE”);
//根據(jù)算法名稱,獲取插值算法對(duì)象實(shí)例
IInterpolate interpolator=InterpolateFactory.GetInterpolation(iName);
……
//執(zhí)行插值操作
interpolateResult=interpolator.Interpolate(param1,param2,…);
……
//將插值結(jié)果渲染成圖像并返回
Return Image.RenderImage(interpolateResult);
}
}
該服務(wù)根據(jù)瀏覽器提交參數(shù),使用IDW(Inverse Distance Weighted,反距離權(quán)重插值)算法,對(duì)瀏覽器視圖范圍內(nèi)的離散點(diǎn)進(jìn)行插值、分級(jí)、著色,并返回PNG格式的地圖圖像,最后由瀏覽器完成地圖的顯示。
根據(jù)上述設(shè)計(jì)完成代碼,實(shí)現(xiàn)服務(wù)程序。此外,還須依據(jù)GeoServer的二次開發(fā)要求,使用application-Context.xml文件,將該服務(wù)注冊(cè)到GeoServer中:
〈bean id="contoursurfaceService"class="com.geoExtension.wms.ContoursurfaceService"〉
〈bean id="contoursurfaceDescriptor"class="org.geoserver. platform.Service"〉
〈constructor-arg index="0"value="contoursurface"/〉
〈constructor-arg index="1"ref="contoursurfaceService"/〉
〈constructor-arg index="2"value="1.1.1"/〉
〈constructor-arg index="3"〉
〈list〉
〈value〉GetCapabilities〈/value〉
〈value〉GetMap〈/value〉
〈value〉GetFeatureInfo〈/value〉
〈/list〉
〈/constructor-arg〉
〈/bean〉
該配置片段告訴GeoServer,等值面服務(wù)名為contoursurface,對(duì)應(yīng)的類為com.geoExtension.wms.ContoursurfaceService,支持WMS 1.1.1,包含GetCapabilities、GetMap、GetFeatureInfo操作。最后,將編譯的程序集打包為jar格式文件,拷貝到GeoServer的WEB-INFLib目錄中,重啟GeoServer,即完成了等值面動(dòng)態(tài)生成服務(wù)的安裝。
用戶只需在瀏覽器地址欄中輸入給定地址,即可調(diào)用等值面服務(wù)。GeoServer從地址中解析出所需信息,包括:請(qǐng)求的圖層、請(qǐng)求的服務(wù)名、請(qǐng)求的操作,以及請(qǐng)求的區(qū)域坐標(biāo)、投影等信息,并根據(jù)服務(wù)名查找對(duì)應(yīng)的類,執(zhí)行其中的GetMap函數(shù)。最后,GeoServer向?yàn)g覽器響應(yīng)請(qǐng)求區(qū)域內(nèi)的等值面圖形。流程如圖3所示意。
圖3 GeoServer加載、執(zhí)行等值面服務(wù)流程
為驗(yàn)證能否利用等值面服務(wù)生成等值面圖像,驗(yàn)證該等值面圖像能否和其他地圖疊加顯示,設(shè)計(jì)如下實(shí)驗(yàn)方案:
(1)使用PC作為服務(wù)器,配置為CPU 2.5GHz 4核,內(nèi)存4G
(2)支撐軟件為Win 7操作系統(tǒng),Java 7運(yùn)行庫,Jetty 6.1,GeoServer 2.5
(3)選用800個(gè)離散點(diǎn)作為測(cè)試數(shù)據(jù),包含坐標(biāo)值和離散點(diǎn)值,以Shape文件格式存儲(chǔ),并導(dǎo)入GeoServer的新圖層中,命名為sf:contours;
(4)根據(jù)離散數(shù)值的頻數(shù)分布,將離散點(diǎn)值分級(jí);
(5)瀏覽器端使用開源js框架OpenLayers請(qǐng)求等值面服務(wù),獲取相應(yīng)圖像并顯示。
在實(shí)驗(yàn)中,使用了某地的日降雨量數(shù)據(jù),依據(jù)數(shù)值的頻數(shù)分布,將數(shù)據(jù)分為5級(jí):1級(jí)[0~0.1]、2級(jí)[0.1~1]、3級(jí)[1~2]、4級(jí)[2~5]、5級(jí)[5~15],并為每個(gè)取值區(qū)間設(shè)置一種顏色。最后,用戶使用OpenLayers調(diào)用等值面生成服務(wù),OpenLayers獲得等值面圖像并顯示。
圖4為樣本集在二維平面上的分布情況,每一個(gè)點(diǎn)代表一個(gè)樣本的位置。從圖中可以看到,樣本并不是均勻分布,部分區(qū)域密集,而右上角區(qū)域、底部區(qū)域只有零星的幾個(gè)樣本。點(diǎn)擊樣本熱點(diǎn)可以查看樣本的數(shù)值,但無法獲知圖中任意空白區(qū)域的大概數(shù)值,無法根據(jù)樣本集直觀分析出數(shù)值變化趨勢(shì)。
圖5為等值面服務(wù)根據(jù)樣本集的數(shù)值,在可視范圍內(nèi)使用IDW算法插值而動(dòng)態(tài)生成的等值面圖,圖中的5種顏色代表5種取值區(qū)間,顏色由淺到深依次按低到高次序表示不同的樣本值區(qū)間。根據(jù)該圖像,可明顯看出西北方向區(qū)域降雨量較小,東南方向區(qū)域降雨量較大。圖6為等值面圖和樣本集地區(qū)的地形圖實(shí)時(shí)疊加顯示的效果。根據(jù)該圖像,很直觀看出該地區(qū)在當(dāng)日的降雨量分布情況。
圖4 樣本集分布圖
圖5 等值面圖
圖6 等值面、地圖疊加效果
通過實(shí)驗(yàn)可以看到,該等值面服務(wù)能夠根據(jù)樣本集的離散數(shù)據(jù),以及用戶的輸入?yún)?shù),動(dòng)態(tài)生成等值面圖像,并能實(shí)時(shí)與樣本集所在地區(qū)的地形圖疊加顯示,直觀地表現(xiàn)出區(qū)域內(nèi)的數(shù)值變化趨勢(shì),已達(dá)到了最初的設(shè)計(jì)目標(biāo)。
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)發(fā)展,WebGIS技術(shù)已普遍應(yīng)用于人們生活中。GeoServer軟件作為一個(gè)開源的J2EE應(yīng)用,遵循OGC標(biāo)準(zhǔn),支持插件式的二次開發(fā),廣泛應(yīng)用于科學(xué)研究、小型的商業(yè)WebGIS應(yīng)用中,是各類WebGIS解決方案中的一個(gè)廉價(jià)的選擇。等值面是GIS應(yīng)用中常用的空間分析技術(shù),但GeoServer并未提供相關(guān)功能。本文針對(duì)此問題,根據(jù)GeoServer二次開發(fā)接口和WMS規(guī)范,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)等值面生成服務(wù),供瀏覽器調(diào)用并顯示。實(shí)驗(yàn)結(jié)果顯示,該服務(wù)實(shí)現(xiàn)了預(yù)期的效果,是GeoServer軟件的一個(gè)有益補(bǔ)充。
[1]任斌,吳可,陳潔.基于ArcGIS的降雨量等值面生成系統(tǒng)研究[J].信息技術(shù),2013(9):125~128
[2]姜超,徐青,等.基于OGC WPS的GIS空間分析方法[J].測(cè)繪科學(xué),2011,11,36(6):198~200
[3]OGC.OGC Standard[EB/OL].http://www.opengeospatial.org/standards/
[4]張大鵬,張錦,等.開源WebGIS軟件應(yīng)用開發(fā)技術(shù)和方法研究[J].測(cè)繪科學(xué),2011.09,36(5):193-196
[5]胡剛,趙剛,宋慧.不同插值方法對(duì)降水量空間不確定性的影響[J].濟(jì)南大學(xué)學(xué)報(bào)(自然科學(xué)版),2012.10,26(4):428~432
[6]張凡,胡春陽,韓軍.高性能互操作的OGC WMS系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2010,27(5):1732~1736
GeoServer;Web Map Service;Contour Surface
Implementation of Contour Surface Service Based on GeoServer
LUO Quan,CHEN Ning-jiang
(School of Computer and Electronic Information,Guangxi University,Nanning 530004)
According to OGC WMS standards,extends the GeoServer WMS,and implements a GeoServer plugin which is used generating contour surface based on IDW algorithm and encapsulated into a WMS Service.Users can call the WMS Service from the network and browse the result.The experimental results show that the plug-in with real-time interpolation,it can produce the equivalent surface image,superimpose with map data dynamically.It is good for GeoServer software.
1007-1423(2015)12-0066-05
10.3969/j.issn.1007-1423.2015.12.015
羅泉(1979-),男,廣西南寧人,在讀碩士研究生,研究方向?yàn)檐浖こ獭eb服務(wù)
陳寧江(1975-),男,廣西南寧人,博士,教授,研究方向?yàn)檐浖こ獭⒅虚g件、網(wǎng)絡(luò)分布式計(jì)算
2015-02-26
2015-04-07