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