彭會(huì)湘
(中國(guó)電子科技集團(tuán)公司第五十四研究所河北石家莊050081)
隨著現(xiàn)代測(cè)繪技術(shù)的發(fā)展,測(cè)繪成果極大豐富,形成了多種比例尺、多種坐標(biāo)系、多種投影方式的矢量地圖數(shù)據(jù)、影像地圖數(shù)據(jù)、DEM 數(shù)據(jù)、柵格地圖數(shù)據(jù)等,為各行業(yè)應(yīng)用提供了強(qiáng)有力的信息保障。然而各行業(yè)的應(yīng)用部門不是測(cè)繪專業(yè)部門,對(duì)相關(guān)測(cè)繪專業(yè)知識(shí)了解有限,面對(duì)復(fù)雜的、海量的多源異構(gòu)數(shù)據(jù)常常一籌莫展,不知所措,極大地影響了測(cè)繪成果的應(yīng)用效果。WMS 是一種基于OGC 規(guī)范的網(wǎng)絡(luò)地圖服務(wù),它提供了一個(gè)地理空間信息和地理空間服務(wù)資源的軟件框架,封裝了多源異構(gòu)地理空間數(shù)據(jù)的復(fù)雜性,以返回地圖圖像的方式簡(jiǎn)化了客戶端的開發(fā),為各行業(yè)的地圖應(yīng)用提供了有效的解決方案。
OGC 制定了開放式地理數(shù)據(jù)互操作規(guī)范OGIS,依照該規(guī)范,可以構(gòu)建一個(gè)提供地理空間信息和空間服務(wù)資源的軟件框架。在OGC 規(guī)范中,最重要的3個(gè)地理信息服務(wù)實(shí)現(xiàn)規(guī)范是WMS、網(wǎng)絡(luò)要素服務(wù)(W FS)和網(wǎng)絡(luò)覆蓋服務(wù)(WCS)。其中WMS 能夠根據(jù)用戶的請(qǐng)求返回相應(yīng)的地圖,W FS 支持對(duì)地理要素的插入、更新、刪除和檢索等服務(wù),WCS 提供的是包含了地理位置信息或?qū)傩缘目臻g柵格圖層[1]。
按照OGC 規(guī)范可以將多源異構(gòu)地理空間數(shù)據(jù)發(fā)布成3種地理信息服務(wù),基于這3種服務(wù)進(jìn)行地理信息應(yīng)用是解決多源異構(gòu)地理空間數(shù)據(jù)互操作和應(yīng)用的有效途徑,并且現(xiàn)在各大GIS 軟件廠商、開源GIS 軟件都支持符合OGC 規(guī)范的地理信息服務(wù)發(fā)布,利用商業(yè)或開源GIS 軟件對(duì)多源異構(gòu)地理空間數(shù)據(jù)進(jìn)行專業(yè)處理、發(fā)布服務(wù),自主開發(fā)服務(wù)訪問應(yīng)用是適應(yīng)行業(yè)應(yīng)用特點(diǎn)、降低成本的有效途徑。
WMS 屬于OGC 圖示表達(dá)服務(wù),它利用具有地理空間位置信息的數(shù)據(jù)制作地圖。在WMS 規(guī)范中將地圖定義為地理數(shù)據(jù)可視的表現(xiàn),WMS 返回的不是地圖數(shù)據(jù),而是地圖圖像。WMS 規(guī)范定義了3個(gè)操作[2]:
①GetCapabilities 操作返回服務(wù)級(jí)元數(shù)據(jù),它是對(duì)服務(wù)信息內(nèi)容和請(qǐng)求參數(shù)的一種描述,使用XM L 形式文件表示,關(guān)鍵要素是Layers,其主要內(nèi)容包括:標(biāo)題(Title)、圖層名(Name)、坐標(biāo)范圍(BoundingBox)等元素[3];
②GetM ap 操作根據(jù)客戶端發(fā)出的請(qǐng)求參數(shù)在服務(wù)端進(jìn)行檢索,服務(wù)器端返回一個(gè)地圖圖像,其地理空間參數(shù)和大小參數(shù)是已經(jīng)明確定義的,返回的地圖圖像可以是PNG、GIF 和JPEG 等格式[4];
③GetFeaturelnfo 操作根據(jù)用戶所請(qǐng)求的X、Y 坐標(biāo)或感興趣的圖層,返回地圖上某些特殊要素的信息,信息以HTML,GM L 或ASCII 的格式表示[5]。
在WMS 的3個(gè)操作中,GetCapabilities 和GetM ap 是必須要實(shí)現(xiàn)的,而GetFeaturelnfo 是可選的,WMS 的請(qǐng)求與響應(yīng)是在客戶端和服務(wù)器端實(shí)現(xiàn)的,客戶端既可以是普通的瀏覽器,也可以是應(yīng)用系統(tǒng)或組件。用UM L 時(shí)序圖描述的客戶端與服務(wù)器端的交互過程如圖1 所示。
圖1 客戶端與服務(wù)器端的交互過程
WMS 客戶端與WMS 服務(wù)端建立連接后,客戶端向服務(wù)端發(fā)送GetCapabilities 請(qǐng)求,服務(wù)端返回XML 格式的元數(shù)據(jù)描述文件,XML 元數(shù)據(jù)描述文件提供的信息包括:WMS 服務(wù)器支持的所有功能接口列表;所能提供的圖像格式;從服務(wù)器端傳送地圖數(shù)據(jù)的可用的空間參照系列表;從服務(wù)器端返回的所有異常的列表;特定與某一軟件商的WMS 服務(wù)器修改和控制功能的專用元數(shù)據(jù)的列表;某一WMS 服務(wù)器的可用圖層及可選屬性的列表等。
客戶端解析XM L 元數(shù)據(jù)文件,獲取圖層信息后,向服務(wù)端發(fā)送GetMap 請(qǐng)求,請(qǐng)求中包含圖層名稱、請(qǐng)求的地理坐標(biāo)范圍、要求返回圖像的格式、大小等信息。服務(wù)端對(duì)GetMap 請(qǐng)求進(jìn)行處理,按要求生成對(duì)應(yīng)的圖像數(shù)據(jù),以數(shù)據(jù)流的方式返回??蛻舳耸盏綌?shù)據(jù)流后,將數(shù)據(jù)流打包形成圖像文件進(jìn)行顯示。如果客戶端知道WMS 服務(wù)端提供的圖層信息,也可以不發(fā)送GetCapabilities 請(qǐng)求,直接發(fā)送GetMap 請(qǐng)求獲取地圖圖像??蛻舳藢?duì)地圖進(jìn)行放大、縮小、移動(dòng)時(shí)都需要重新發(fā)送GetM ap 請(qǐng)求,在請(qǐng)求中更新當(dāng)前的顯示范圍,以獲取符合屏幕顯示范圍的地圖圖像。
許 多 商 用 軟 件 ( 如 ArcGis、SuperMap、Eardas、ENVI、GlobalMapper)和開源軟件(如GeoServer、Udig 等)都具備對(duì)常用格式的矢量數(shù)據(jù)、影像數(shù)據(jù)、DEM 數(shù)據(jù)進(jìn)行投影變換、格式轉(zhuǎn)換、建立金字塔、發(fā)布符合OGC 標(biāo)準(zhǔn)地圖服務(wù)等專業(yè)處理能力。因此可以借助這些軟件來制作數(shù)據(jù)、發(fā)布服務(wù),應(yīng)用的重點(diǎn)是連接服務(wù),從服務(wù)獲取地圖數(shù)據(jù)進(jìn)行顯示和行業(yè)應(yīng)用。應(yīng)用主要采用W in Inet 庫(kù)的接口函數(shù)來實(shí)現(xiàn)與WMS 服務(wù)器的連接、從WMS 服務(wù)器下載元數(shù)據(jù)文件、地圖圖像,主要用到InternetOpen、InternetOpenU rl、H ttpQueryInfo、InternetReadFile和InternetC loseHandle 等幾個(gè)接口函數(shù)。
其中:①InternetOpen 的作用是初始化應(yīng)用程序,該函數(shù)調(diào)用成功后返回Internet 會(huì)話句柄,以使用其他W in Inet 函數(shù);②InternetOpenU rl 的作用是通過一個(gè)完整的FTP、Gopher 或HTTP 網(wǎng)址打開一個(gè)資源,InternetOpenU rl 函數(shù)解析URL 字符串,建立到服務(wù)器的連接,并準(zhǔn)備下載指定的URL 數(shù)據(jù);③H ttpQueryInfo 的作用是返回一個(gè)與HTTP 請(qǐng)求關(guān)聯(lián)的信息頭;④InternetReadFile 的作用是通過Internet 會(huì)話句柄下載數(shù)據(jù),將數(shù)據(jù)保存到緩沖區(qū)中;⑤InternetCloseHandle 的作用是下載完相關(guān)數(shù)據(jù)后關(guān)閉Internet 會(huì)話。從WMS 服務(wù)器下載資源是核心處理流程,具體流程如圖2 所示。
圖2 資源下載處理流程
WMS 發(fā)布的地圖服務(wù)可以通過調(diào)用GetCapabilities 接口,從返回的XML 元數(shù)據(jù)描述文件中獲取,應(yīng)用中通過構(gòu)造URL 語句向WMS 服務(wù)器發(fā)送 GetCapabilities 請(qǐng)求,GetCapabilities 接口中應(yīng)包含如下要素:
①WMS 服務(wù)地址:以安裝于本機(jī)的GeoServer 為例,其服務(wù)地址為:http://localhost:8080/geoserver/wms;
② 服 務(wù) 類 型: 固 定 為 wms,URL 語 句 寫 法 為service=wms;
③請(qǐng)求類型:固定為GetCapabilities,URL 語句為request= GetCapabilities;
④版本信息:URL 語句為VERSION=version;
⑤向WMS 發(fā)送GetCapabilities 請(qǐng)求的URL 語法要求為:WMS 服務(wù)地址與其他要素之間用“?”符號(hào)隔開,其他各要素之間用“&”符號(hào)隔開,舉例如下:
http://localhost:8080/geoserver/wms?service=wms&version=1.3.0&request=GetCapabilities;
⑥將以上URL 語句作為參數(shù)執(zhí)行圖2 流程,即可得到WMS 服務(wù)元數(shù)據(jù)描述文件,從該文件中可以獲取WMS 發(fā)布的地圖信息,包括地圖名稱、坐標(biāo)范圍等內(nèi)容。
從WMS 服務(wù)元數(shù)據(jù)中獲取到地圖名稱、坐標(biāo)范圍后可以通過調(diào)用GetM ap 接口獲取地圖圖像,應(yīng)用中通過構(gòu)造URL 語句向WMS 服務(wù)器發(fā)送GetM ap 請(qǐng)求,GetM ap 接口中應(yīng)包含如下要素:
①WMS 服務(wù)地址:以安裝于本機(jī)的GeoServer 為例,其服務(wù)地址為:http://localhost:8080/geoserver/wms;
②服務(wù)類型:固定為WMS,URL 語句寫法為service=WMS;
③請(qǐng)求類型:固定為GetM ap,URL 語句為request=GetM ap;
④版本信息:URL 語句為VERSION=version;
⑤圖層信息:URL 語句為layers= 圖層名稱;
⑥請(qǐng)求地理范圍:URL 語句為bbox=最小經(jīng)度、最小緯度,最大經(jīng)度,最大緯度;
⑦需要的圖像寬度:URL 語句為w idth=圖像寬度;
⑧需要的圖像高度:URL 語句為height=圖像高度;
⑨需要的圖像格式:URL 語句為format=image/ 圖像格式;
⑩向WMS 發(fā)送GetM ap 請(qǐng)求的URL 語法要求為:WMS 服務(wù)地址與其他要素之間用“?”符號(hào)隔開,其他各要素之間用“&”符號(hào)隔開,舉例如下:
將以上URL 語句作為參數(shù)執(zhí)行圖2 流程,即可得到WMS 返回的根據(jù)world 圖層生成的一幅圖像,圖像左下角對(duì)應(yīng)的經(jīng)緯度坐標(biāo)為(- 180,- 90),圖像右上角對(duì)應(yīng)的經(jīng)緯度坐標(biāo)為(180,90),圖像的寬度為800 像素,圖像的高度為600 像素,圖像的格式為jpeg。
按原始分辨率顯示圖像可達(dá)到最佳的顯示效果,圖像顯示的清晰度最高,因此,在向WMS 發(fā)送GetM ap 請(qǐng)求時(shí)需要注意以下2個(gè)方面:①請(qǐng)求的地圖范圍取當(dāng)前地圖顯示窗口的地理范圍與請(qǐng)求圖層地理范圍的交集;②請(qǐng)求圖像的寬度和高度要等于請(qǐng)求地理范圍轉(zhuǎn)換為屏幕坐標(biāo)后的屏幕坐標(biāo)寬度和高度??蛻舳嗣看螌?duì)地圖進(jìn)行放大、縮小、移動(dòng)等操作時(shí)都需要重新計(jì)算請(qǐng)求的地圖范圍、請(qǐng)求圖像的寬度和高度,然后重新生成GetMap 請(qǐng)求發(fā)送給WMS 服務(wù),獲取新的圖像后刷新地圖窗口進(jìn)行顯示。
隨著信息技術(shù)、現(xiàn)代測(cè)繪技術(shù)的發(fā)展,產(chǎn)生了海量的、多種來源、多種格式的測(cè)繪信息,用戶提出了支持多種地理空間數(shù)據(jù)的需求,在數(shù)據(jù)格式和數(shù)據(jù)量上都對(duì)既有地圖顯示組件提出了更高的要求,如果在地圖顯示組件中直接增加對(duì)多種格式海量數(shù)據(jù)的支持,不僅技術(shù)難度大、開發(fā)周期長(zhǎng),并且還會(huì)面臨因技術(shù)發(fā)展而難以適應(yīng)新的需求的問題。
經(jīng)過反復(fù)論證,認(rèn)為開發(fā)適應(yīng)OGC 開放式地理數(shù)據(jù)互操作規(guī)范的WMS 服務(wù)是解決當(dāng)前和將來面臨問題的捷徑,對(duì)于應(yīng)用來說,WMS 實(shí)現(xiàn)了對(duì)多種數(shù)據(jù)格式的封裝和轉(zhuǎn)換,以通用格式的圖像提供地圖服務(wù),使得客戶端的處理變得相對(duì)簡(jiǎn)單,由于各專業(yè)廠商的地理信息處理軟件都支持OGC 規(guī)范,提供了應(yīng)用的通用性。
對(duì)基于地圖顯示組件開發(fā)的項(xiàng)目軟件,采用了如下解決方案:在應(yīng)用局域網(wǎng)中部署一臺(tái)GeoServer 服務(wù)器,利用專業(yè)處理軟件(如GlobalM apper)對(duì)地理空間數(shù)據(jù)進(jìn)行處理,生成符合要求的數(shù)據(jù)格式,利用GeoServer 發(fā)布成WMS 服務(wù),然后改造原地圖顯示組件,使之能夠連接WMS 服務(wù),獲取WMS服務(wù)的元數(shù)據(jù)描述,解析WMS 發(fā)布的地圖服務(wù)信息。原地圖顯示組件提供了影像圖層類,用于對(duì)本地影像地圖的加載和顯示,現(xiàn)在為地圖顯示組件增加WMS 圖層類,以實(shí)現(xiàn)對(duì)WMS 圖層的加載和顯示,WMS 圖層類提供D raw、GetM ap 和DownLoad 3個(gè)函數(shù),其中:
①D raw 的主要功能是在地圖控件刷新時(shí)調(diào)用,實(shí)現(xiàn)本圖層的繪制。該函數(shù)首先計(jì)算本次請(qǐng)求的地理范圍、請(qǐng)求圖像的大小,然后調(diào)用GetM ap 函數(shù)從WMS 服務(wù)獲取地圖圖像文件,再利用原影像圖層類實(shí)現(xiàn)對(duì)地圖圖像的加載顯示;
②GetMap 的主要功能是根據(jù)D raw 函數(shù)傳遞的地理范圍、圖像大小、圖像文件名稱等參數(shù)生成獲取地圖圖像的URL語句,調(diào)用Dow nLoad 函數(shù)實(shí)現(xiàn)地圖圖像數(shù)據(jù)的下載;
③Dow nLoad 的主要功能是根據(jù)GetMap 函數(shù)傳遞的URL、圖像文件名稱等參數(shù),向WMS 服務(wù)發(fā)送GetM ap 請(qǐng)求,將獲取的數(shù)據(jù)寫入到指定名稱的文件中。
開放性和互操作是地理信息系統(tǒng)的發(fā)展趨勢(shì),WMS 規(guī)范對(duì)異構(gòu)數(shù)據(jù)源訪問及操作的復(fù)雜性進(jìn)行了封裝,以W eb Services 的形式提供了簡(jiǎn)單易用的訪問接口,實(shí)現(xiàn)了對(duì)異構(gòu)數(shù)據(jù)源的訪問。在ISO/TC211 和OGC 的推動(dòng)下,WMS 的相關(guān)規(guī)范已經(jīng)發(fā)展得相當(dāng)成熟[6],目前,許多GIS 軟件,如ArcGIS、SuperM ap 等都已經(jīng)支持WMS 接口,借助于這些專用GIS 信息處理軟件,很容易實(shí)現(xiàn)對(duì)異構(gòu)數(shù)據(jù)源的處理整合,并發(fā)布為WMS 服務(wù),使得基于地圖的應(yīng)用避免了復(fù)雜的數(shù)據(jù)處理,而把主要的精力用于行業(yè)應(yīng)用。
[1]楊鵬,鄒時(shí)林.基于OpenLayers 的WebGis 客戶端的開發(fā)[J].測(cè)繪與空間地理信息,2012,35(3):131- 133.
[2]賈文玨,陳玉敏,龔健雅,李愛霞.基于WebService 的OGC地圖服務(wù)實(shí)現(xiàn)方法[J].測(cè)繪信息與工程,2004,29(4):34- 36.
[3]白玉琪,楊崇俊.空間信息搜索引擎研究[J].中國(guó)礦業(yè)大學(xué)學(xué)報(bào),2004,33(1):90- 94
[4]許朝暉,陳榮國(guó),謝炯.WMS 的自定義地圖服務(wù)聚合技術(shù)研究[J].測(cè)繪科學(xué)技術(shù)學(xué)報(bào),2011,28(3):223- 226
[5]黃向,張毅坤,房玉峰.基于WMS 服務(wù)規(guī)范的Web GIS 實(shí)現(xiàn)方法[J].山東農(nóng)業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)),2007.38(1):131- 136
[6]鄔群勇,王欽敏,王煥煒.一種Web 地圖服務(wù)搜索器的設(shè)計(jì)[J].微計(jì)算機(jī)應(yīng)用,2009,30(2):35- 39.