張 倩,孫 玉,潘 蕓,左世祥,張曉鋒,李志軍,陳建華
(1.阿壩州自然資源與科技信息研究所,四川 汶川 624000;2.成都理工大學(xué) 地球物理學(xué)院,成都 610059;3.成都理工大學(xué) 地球科學(xué)學(xué)院,成都 610059)
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,空間地理信息在各行各業(yè)中變得越來越重要[1]。由于地理信息滲透領(lǐng)域廣泛,當(dāng)面對空間信息化日新月異變化時,傳統(tǒng)地理信息系統(tǒng)(Geographic Information System,GIS)搭建方式逐漸突顯出一些制約因素,主要有以下幾個方面。①平臺建設(shè)周期長。傳統(tǒng)開發(fā)模式從了解需求到搭建系統(tǒng)框架再到編寫代碼,開發(fā)時間長、效率低。②代碼復(fù)用率低。對于一些簡單的適用于所有場景的基礎(chǔ)地理信息功能未作封裝,使得后續(xù)系統(tǒng)存在重復(fù)建設(shè)的情況,導(dǎo)致代碼復(fù)用率低。③系統(tǒng)維護(hù)困難。過多的冗余代碼導(dǎo)致系統(tǒng)維護(hù)困難,不可預(yù)知的開發(fā)風(fēng)險上升。④對開發(fā)人員隊伍素質(zhì)要求高,開發(fā)成本高。當(dāng)團(tuán)隊核心開發(fā)人員崗位變更時,開發(fā)風(fēng)險將放大,嚴(yán)重制約著項目的健康發(fā)展。
地理信息系統(tǒng)是一門交叉學(xué)科也是一個技術(shù)系統(tǒng),其涉及地圖學(xué)、地理學(xué)和計算機(jī)科學(xué)等多種學(xué)科。同時,也是以地理信息數(shù)據(jù)為支撐,地理算法模型為輔助工具進(jìn)行數(shù)據(jù)分析,為地理研究、地理決策提供幫助的計算機(jī)系統(tǒng)。目前GIS在室內(nèi)定位[2]、車載導(dǎo)航[3]、路徑規(guī)劃[4]、城市建設(shè)[5]、地下管道維護(hù)[6]、交通管理[7]和環(huán)境保護(hù)[8]等領(lǐng)域被廣泛應(yīng)用,有較好應(yīng)用前景和應(yīng)用價值。二維地理信息系統(tǒng)是在二維平面上進(jìn)行地理信息處理和空間分析的技術(shù)系統(tǒng),經(jīng)過多年的發(fā)展,其強(qiáng)大的地理信息處理和空間分析能力已得到充分挖掘和應(yīng)用。
網(wǎng)頁地理信息系統(tǒng)(Web Geographic Information System,WebGIS)是互聯(lián)網(wǎng)技術(shù)與地理信息技術(shù)相融合的產(chǎn)物,是傳統(tǒng)地理信息系統(tǒng)在網(wǎng)絡(luò)上的延伸和發(fā)展[9]。WebGIS基于B/S(Browser/Server,瀏覽器/服務(wù)器)模式,客戶端與后臺服務(wù)依托網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸。WebGIS平臺與傳統(tǒng)GIS軟件相比界面美觀、使用便捷,有助于地理空間數(shù)據(jù)管理、分析[10]。由于WebGIS是GIS在網(wǎng)絡(luò)上的延伸和發(fā)展,所以其應(yīng)用領(lǐng)域相較于傳統(tǒng)GIS更加廣泛,是大多數(shù)GIS應(yīng)用場景的首選解決方案[11]。WebGIS以二維平面呈現(xiàn)方式,多使用開放圖層(OpenLayers)等開源庫設(shè)計實(shí)現(xiàn),有著豐富的地理信息處理和空間分析功能,在監(jiān)控預(yù)警[12]、國土規(guī)劃[13]和城市管理[14]等領(lǐng)域得到廣泛應(yīng)用。
鑒于此,本文基于WebGIS技術(shù)設(shè)計實(shí)現(xiàn)了二維地理信息服務(wù)子系統(tǒng)。以此為基礎(chǔ)進(jìn)行地理信息平臺搭建能夠降低項目風(fēng)險,縮短開發(fā)周期,提升代碼復(fù)用率,節(jié)省項目維護(hù)更新時耗費(fèi)的時間和經(jīng)濟(jì)成本,幫助開發(fā)人員將更多的時間投入到地理信息功能拓展研究中。
空間服務(wù)有2類,一為提供空間分析功能的空間服務(wù),二為提供空間數(shù)據(jù)支持的空間服務(wù)。第一類空間服務(wù)由基本的Web服務(wù)器提供,主要負(fù)責(zé)通用空間分析功能的業(yè)務(wù)邏輯處理和空間數(shù)據(jù)庫的增刪改查,多用于具體空間分析功能,如緩沖區(qū)分析等。第二類空間服務(wù)由空間服務(wù)器提供,主要負(fù)責(zé)處理客戶端讀取地理數(shù)據(jù)的請求[15],多用于二維地理場景構(gòu)建。本系統(tǒng)基于開源的地理服務(wù)器(GeoServer)搭建空間服務(wù),負(fù)責(zé)各種地理數(shù)據(jù)的發(fā)布與切片。
二維地理信息服務(wù)子系統(tǒng)依托二維地理場景的構(gòu)建,能夠?qū)Φ乩硇畔⑦M(jìn)行可視化展示。但是僅依靠矢量圖層來構(gòu)建二維場景是不夠的,為了得到更真實(shí)的場景體驗(yàn)還需結(jié)合影像圖來進(jìn)行展示。OpenLayers是一個輕量級的開源JavaScript框架[16],提供了許多可操作的接口,可為Web客戶端提供基礎(chǔ)的地圖數(shù)據(jù)展示和地圖操作功能,具有擴(kuò)展性強(qiáng)的特點(diǎn)。在地圖操作方面可幫助開發(fā)者實(shí)現(xiàn)圖層縮放、漫游及選取要素點(diǎn)、線和面等基本的操作功能。本文利用OpenLayers對二維地理場景進(jìn)行構(gòu)建,其總體流程如下。
(1)創(chuàng)建OpenLayers類,并構(gòu)建實(shí)例化方法獲取虛擬地圖對象Map。
(2)設(shè)置全局變量儲存圖層指定的服務(wù)器端URL地址。
(3)實(shí)例化矢量圖層(VectorLayer)對象,并將圖層地址賦值給VectorLayer對象下的VectorSource屬性以指定圖層數(shù)據(jù)的來源。OpenLayers同時支持多種數(shù)據(jù)格式和Open GIS協(xié)會制定的網(wǎng)絡(luò)對象服務(wù)(WMS)、網(wǎng)絡(luò)要素服務(wù)(WFS)和網(wǎng)絡(luò)地圖切片服務(wù)(WMTS)等網(wǎng)絡(luò)規(guī)范,因此可對遠(yuǎn)程空間服務(wù)發(fā)起請求[17],并對請求回來的對象(json)數(shù)據(jù)或圖片(png)數(shù)據(jù)進(jìn)行數(shù)據(jù)解析和渲染,渲染時可以特定樣式渲染到地圖場景中。在請求和渲染過程中,為避免一次性請求全部數(shù)據(jù)導(dǎo)致瀏覽器卡頓,限制了數(shù)據(jù)的請求范圍為當(dāng)前視圖范圍。
系統(tǒng)結(jié)構(gòu)通常歸納為3個層次:表現(xiàn)層、業(yè)務(wù)層和數(shù)據(jù)層。表現(xiàn)層一般作為人機(jī)交互的接口而存在,即基于B/S模式的Web瀏覽器和基于客戶端/服務(wù)器(C/S)模式的應(yīng)用客戶端。業(yè)務(wù)層接收業(yè)務(wù)請求,進(jìn)行業(yè)務(wù)處理,包括對數(shù)據(jù)庫的處理及對業(yè)務(wù)邏輯的封裝。業(yè)務(wù)需求通常是復(fù)雜特殊的,因此業(yè)務(wù)層是3層結(jié)構(gòu)中最具有特殊性和靈活性的1層。數(shù)據(jù)層完成數(shù)據(jù)的安全存儲。3者間的數(shù)據(jù)傳輸通過網(wǎng)絡(luò)請求進(jìn)行,整體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)設(shè)計圖
WebGIS二維地理信息服務(wù)子系統(tǒng)采用面向?qū)ο蟮姆绞骄帉?。面向?qū)ο缶幊叹哂蟹庋b性、繼承性及多態(tài)性特點(diǎn),可滿足模塊功能的需求。為了讓子系統(tǒng)適用于多行業(yè)地理信息平臺建設(shè),于是對部分通用GIS功能進(jìn)行了封裝實(shí)現(xiàn),主要有4大模塊。地理數(shù)據(jù)展示模塊:對矢量地理數(shù)據(jù)、柵格地理數(shù)據(jù)進(jìn)行展示;場景設(shè)置模塊:對二維場景中的地理圖層范圍、縮放層級進(jìn)行設(shè)置及對場景中的控件顯示與否進(jìn)行控制;空間計算模塊:對二維場景中的空間距離、面積進(jìn)行測量及對要素進(jìn)行緩沖區(qū)分析;基礎(chǔ)功能模塊:該模塊包括圖形繪制模塊、坐標(biāo)定位模塊、軌跡漫游模塊和動態(tài)信息展示模塊等功能模塊。各個功能模塊以接口的方式對外提供相應(yīng)服務(wù)保證了靈活性,開發(fā)人員可根據(jù)自身項目需求設(shè)置不同參數(shù)自定義功能。模塊間的功能調(diào)用也可作為服務(wù)提供方式,保證了系統(tǒng)的高內(nèi)聚低耦合,提高系統(tǒng)的容錯性,降低開發(fā)風(fēng)險。
2.2.1 地理數(shù)據(jù)展示模塊
地理數(shù)據(jù)展示模塊包括對矢量數(shù)據(jù)、柵格數(shù)據(jù)及矢量圖形要素進(jìn)行展示??蛻舳艘灾付ňW(wǎng)絡(luò)規(guī)范向GeoServer空間服務(wù)器請求已切片的地理空間數(shù)據(jù)并以特定樣式渲染到地圖場景中從而完成地理數(shù)據(jù)展示(如圖2所示)。
圖2 矢量圖層
2.2.2 空間計算模塊
空間計算模塊部分包括在二維場景中對空間距離、空間面積的測量(如圖3所示)及對要素進(jìn)行緩沖區(qū)分析(如圖4所示)。該模塊功能常用于對地理信息做空間分析。其中緩沖區(qū)分析應(yīng)用范圍廣泛,一般用于分析矢量實(shí)體對周圍的影響。例如分析工廠排放廢水廢氣所影響的空間范圍。
圖3 計算測量
圖4 緩沖區(qū)分析
2.2.3 圖形繪制模塊
圖形繪制模塊中繪制方式分為手繪、非手繪2種,繪制模塊留有可供開發(fā)者自定義的接口。當(dāng)開始繪圖時,開發(fā)人員可根據(jù)自身項目需求設(shè)置對應(yīng)參數(shù)對圖形要素的樣式、屬性進(jìn)行修改。繪圖結(jié)束時,圖形要素的坐標(biāo)、樣式等數(shù)據(jù)將自動返回給用戶,便于用戶進(jìn)行下一步工作(如圖5所示)。
圖5 圖形繪制
2.2.4 軌跡漫游模塊
軌跡漫游模塊根據(jù)用戶傳入的經(jīng)緯度坐標(biāo)數(shù)組創(chuàng)建軌跡線,再以此進(jìn)行漫游。漫游開始前,用戶可自定義漫游速度、漫游層級、漫游軌跡樣式和漫游要素樣式。漫游過程中,用戶可自主調(diào)整播放視角和選擇是否進(jìn)行重播(如圖6所示)。
圖6 軌跡漫游
2.2.5 信息展示模塊
信息展示模塊可對二維地理場景中的點(diǎn)、線和面要素以彈框的方式進(jìn)行信息展示,展示內(nèi)容包括基礎(chǔ)地理信息和用戶自定義信息,且彈框樣式可由用戶自行定義,包括彈框顏色、彈框?qū)挾?、彈框高度和字體顏色(如圖7所示)。
圖7 信息展示
2.2.6 坐標(biāo)定位模塊
坐標(biāo)定位模塊可直接定位至用戶自定義的任意坐標(biāo)點(diǎn),且定位時的地圖層級及是否在中心顯示該坐標(biāo)點(diǎn)可由用戶自行選擇(如圖8所示)。
圖8 坐標(biāo)定位
WebGIS二維地理信息服務(wù)子系統(tǒng)成功構(gòu)建后,基于該子系統(tǒng)快速搭建的阿壩州牦牛智慧牧場管理系統(tǒng)正在投入使用(如圖9所示)。管理者利用阿壩州牦牛智慧牧場管理平臺對牦牛進(jìn)行管理監(jiān)控,幫助牧企與牧民省時、省力、高效及方便地進(jìn)行牦牛養(yǎng)殖,平臺在實(shí)際應(yīng)用中取得了良好效果。
圖9 阿壩州智慧牧場牦牛管理平臺
本文基于WebGIS設(shè)計實(shí)現(xiàn)了二維地理信息服務(wù)子系統(tǒng),子系統(tǒng)提供了空間計算、地理數(shù)據(jù)展示、圖形繪制、坐標(biāo)定位和軌跡漫游等基礎(chǔ)功能模塊為快速搭建地理信息平臺提供了技術(shù)支持。系統(tǒng)在應(yīng)用中表現(xiàn)如下優(yōu)勢。
(1)為開發(fā)人員提供通用WebGIS服務(wù)。二維地理信息服務(wù)子系統(tǒng)提供了地圖基本操作、空間信息展示、地圖標(biāo)繪和空間計算等GIS功能。
(2)縮短平臺建設(shè)周期,降低開發(fā)成本。WebGIS二維地理信息服務(wù)子系統(tǒng)集成了地理信息平臺的通用功能,開發(fā)人員進(jìn)行地理信息平臺建設(shè)時無需從頭建設(shè),可根據(jù)自身項目需求引入相關(guān)功能模塊避免了代碼重復(fù)建設(shè)的問題,提高了開發(fā)人員的工作效率。
(3)提升了代碼復(fù)用率。系統(tǒng)實(shí)現(xiàn)了可供開發(fā)者拓展的接口,同時提供了封裝好的可直接調(diào)用的功能模塊接口,開發(fā)人員可自定義引入功能模塊,且子系統(tǒng)連接的GIS服務(wù)器地址可通過外部配置文件進(jìn)行修改,保證了系統(tǒng)的靈活性、適配性。綜上所述,二維地理信息服務(wù)子系統(tǒng)有助于快速搭建地理信息平臺在GIS建設(shè)中有一定的推廣價值。