仇海亮
(江蘇省測繪地理信息局信息中心 江蘇省南京市 210013)
在計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展推動(dòng)下,GIS 應(yīng)用不斷深入,使各行業(yè)對(duì)地理信息的需求越來越迫切。地理信息服務(wù)提供地理空間數(shù)據(jù)服務(wù)和空間數(shù)據(jù)處理服務(wù),通過Web 服務(wù)的方式提供相應(yīng)的地理信息服務(wù)已成為當(dāng)前地理信息共享的主要方式[1]。在開放式地理信息協(xié)會(huì)(OGC)的推動(dòng)下,商業(yè)GIS 軟件和開源GIS 軟件均能遵循統(tǒng)一的OGC 標(biāo)準(zhǔn)實(shí)現(xiàn)地理信息服務(wù),但封閉的商業(yè)GIS 軟件平臺(tái)價(jià)格昂貴,在一定程度上限制了中小型企事業(yè)單位的地理信息事業(yè)的快速發(fā)展,因此基于免費(fèi)的GIS 開源框架構(gòu)建地理信息服務(wù),可規(guī)避高昂的經(jīng)濟(jì)和技術(shù)成本,助力地理信息產(chǎn)業(yè)的發(fā)展[2]。
本文研究了GIS 開源框架,提出基于GeoServer、OpenLayers、PostGIS、uDig 等GIS 開源軟件快速構(gòu)建地理信息服務(wù)的技術(shù)路線,并在實(shí)際項(xiàng)目中進(jìn)行應(yīng)用,為用戶訪問、使用地理信息提供了有效手段。
GeoServer 是遵循OGC 標(biāo)準(zhǔn)的開源地理信息服務(wù)器軟件,可運(yùn)行在基于J2EE/Servlet 的容器之上,有良好的安全性、擴(kuò)展性及跨平臺(tái)能力,支持PostGIS、ShapeFile、ArcSDE、Oracle、VPF、MySQL、MapInfo 等多種遵循開放連接標(biāo)準(zhǔn)的數(shù)據(jù)源,可將地理空間數(shù)據(jù)輸出為 jpeg、Gif、png、SVG、KML 等多種格式的網(wǎng)絡(luò)地圖資源供用戶調(diào)用[3]。GeoServer 可基于WMS、WFS、WFS-T、WCS、WPS 等開放標(biāo)準(zhǔn)發(fā)布各類地理信息服務(wù),實(shí)現(xiàn)地理空間數(shù)據(jù)的查看、修改、刪除及新增功能,并提供多用戶間地理空間數(shù)據(jù)和空間分析服務(wù)的快速共享。
OpenLayers 是專為WebGIS 客戶端開發(fā)提供的JavaScript 開源類庫,采用面向?qū)ο蟮乃枷脒M(jìn)行開發(fā),提供強(qiáng)大的地圖展示功能,包括瀏覽器端地理空間數(shù)據(jù)顯示及縮放、平移、要素選擇等操作,并具有靈活的擴(kuò)展機(jī)制。開發(fā)者可基于該庫提供的接口進(jìn)行開發(fā),實(shí)現(xiàn)對(duì)符合OGC 標(biāo)準(zhǔn)的WMS、WFS 等地理信息服務(wù)的統(tǒng)一調(diào)用,將地理空間數(shù)據(jù)加載到基于瀏覽器的OpenLayers客戶端進(jìn)行顯示。
PostgreSQL 是開源跨平臺(tái)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),提供了豐富的數(shù)據(jù)類型支持和數(shù)據(jù)連接接口,同時(shí)具有事務(wù)、觸發(fā)器、視圖等商業(yè)數(shù)據(jù)庫具有的特性。PostGIS 是PostgreSQL 的一個(gè)擴(kuò)展,增加了存儲(chǔ)管理地理空間數(shù)據(jù)的能力。PostGIS 遵循OpenGIS 規(guī)范,并能提供空間對(duì)象、空間索引、空間操作函數(shù)和空間操作符等空間信息服務(wù)功能[3]。通過PostGIS 空間數(shù)據(jù)引擎與PostgreSQL 關(guān)系數(shù)據(jù)庫的結(jié)合,實(shí)現(xiàn)了空間信息和屬性信息的統(tǒng)一管理,以及對(duì)地理空間數(shù)據(jù)的高效訪問。

圖1:基于SOA 的地理信息服務(wù)構(gòu)建流程
uDig 是跨平臺(tái)的桌面端開源地理信息軟件,提供地理空間數(shù)據(jù)查詢、編輯、縮放、平移及圖層控制等操作[4]。通過uDig 進(jìn)行圖層的樣式配置后,可將圖層效果導(dǎo)出為符合OGC 標(biāo)準(zhǔn)的SLD(風(fēng)格化圖層描述器)樣式文件,在GeoServer 中導(dǎo)入該SLD 文件,即可完成地理空間數(shù)據(jù)發(fā)布后的地圖渲染效果。
遙感影像數(shù)據(jù)量大,在實(shí)時(shí)空間數(shù)據(jù)傳輸過程中給網(wǎng)絡(luò)帶寬造成較大壓力,為了提高網(wǎng)絡(luò)中遙感影像數(shù)據(jù)傳輸?shù)乃俾剩蓪⒂跋駭?shù)據(jù)進(jìn)行切片處理,根據(jù)用戶的Web 服務(wù)請(qǐng)求返回服務(wù)器中的緩存切片,提高地圖顯示速度。GeoWebCache 是采用Java 實(shí)現(xiàn)Web地圖切片緩存的開源項(xiàng)目,已被集成在GeoServer 中,支持按配置信息提前將影像數(shù)據(jù)進(jìn)行切片,地圖加載時(shí)則直接從服務(wù)器文件系統(tǒng)中讀取相應(yīng)的切片數(shù)據(jù)。本文利用GeoWebCache 實(shí)現(xiàn)影像地圖數(shù)據(jù)的預(yù)緩存,在通過標(biāo)準(zhǔn)WMTS 進(jìn)行Web 地圖服務(wù)調(diào)用時(shí),GeoWebCache 將依據(jù)請(qǐng)求位置和比例尺在切片目錄中尋找對(duì)應(yīng)的地圖切片,無需實(shí)時(shí)動(dòng)態(tài)生成地圖,可減輕GeoServer 服務(wù)器數(shù)據(jù)處理壓力,實(shí)現(xiàn)更有效率的客戶端響應(yīng)。
圖層樣式描述(SLD)是基于OGC 規(guī)范的、用于描述地圖圖層樣式的標(biāo)準(zhǔn)文檔,其通過自定義地圖樣式的方式,實(shí)現(xiàn)地理空間數(shù)據(jù)與地圖表現(xiàn)形式的分離。SLD 文件采用XML 定義,可完全由人工按照規(guī)范進(jìn)行編寫,但為更便捷的生成SLD 樣式文件,本文采用開源桌面GIS 軟件uDig 進(jìn)行SLD 文件的生成。首先在uDig中對(duì)地圖圖層進(jìn)行符號(hào)化和渲染,再將各圖層的SLD 文件導(dǎo)出,最后在GeoServer 中發(fā)布WMS 服務(wù)時(shí)導(dǎo)入對(duì)應(yīng)的SLD 文件,從而實(shí)現(xiàn)WMS 的地圖定制服務(wù)。
為了使用戶可通過相同方式訪問不同數(shù)據(jù)源的地理空間數(shù)據(jù),OGC 制定了統(tǒng)一的Web 服務(wù)接口標(biāo)準(zhǔn),通過調(diào)用符合OGC 標(biāo)準(zhǔn)的Web 服務(wù)即可訪問地理空間數(shù)據(jù)。因此本文基于面向服務(wù)的體系結(jié)構(gòu)(SOA)思想,實(shí)現(xiàn)數(shù)據(jù)與應(yīng)用的分離,將按照OGC 標(biāo)準(zhǔn)發(fā)布的地理信息服務(wù)資源進(jìn)行集中管控,包括服務(wù)發(fā)布注冊(cè)、服務(wù)審核、服務(wù)申請(qǐng)及服務(wù)監(jiān)控管理等,具備了地理信息服務(wù)聚合與共享能力,形成了“分建共享、即拿即用”的服務(wù)模式。該模式直接通過互聯(lián)網(wǎng)傳遞地理信息服務(wù),使得WMS、WFS、WMTS、WCS、WPS 等一系列開放標(biāo)準(zhǔn)服務(wù)實(shí)現(xiàn)了全方位的共享,有效避免了地理空間數(shù)據(jù)的重復(fù)生產(chǎn)(圖1)。

圖2:基于GeoWebCache 的影像預(yù)切片
本文基于前述GIS 開源框架,利用地圖服務(wù)器、空間數(shù)據(jù)引擎和桌面端軟件等開源軟件間的相互配合,構(gòu)建了昆山天福國家濕地公園地理信息系統(tǒng),通過發(fā)布遵循OGC 標(biāo)準(zhǔn)的地理信息Web 服務(wù),實(shí)現(xiàn)了地理空間數(shù)據(jù)與空間分析功能的共享,以及園區(qū)的地理信息可視化展示功能。
系統(tǒng)使用的數(shù)據(jù)包括監(jiān)測、調(diào)查等業(yè)務(wù)屬性數(shù)據(jù),以及遙感影像、矢量等地理信息空間數(shù)據(jù),因數(shù)據(jù)由各業(yè)務(wù)單位生產(chǎn),在入庫前須對(duì)各類數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,包括坐標(biāo)系統(tǒng)及比例尺的統(tǒng)一。首先,對(duì)系統(tǒng)中不同年份的影像數(shù)據(jù)統(tǒng)一坐標(biāo)系統(tǒng)、進(jìn)行空間校正,保證各年份影像數(shù)據(jù)能夠疊加顯示;其次,對(duì)需要進(jìn)行切片處理的地圖服務(wù)按統(tǒng)一比例尺標(biāo)準(zhǔn)進(jìn)行層級(jí)設(shè)計(jì);最后,將經(jīng)過標(biāo)準(zhǔn)化處理的ShapeFile 數(shù)據(jù)導(dǎo)入PostGIS 空間數(shù)據(jù)引擎,業(yè)務(wù)屬性數(shù)據(jù)存入PostgreSQL 中。因發(fā)布WMS 服務(wù)時(shí)需使用SLD 樣式渲染文件,可利用uDig 加載PostGIS 中的ShapeFile 數(shù)據(jù),并將各地圖圖層樣式以SLD 文件導(dǎo)出,供GeoServer 在進(jìn)行地圖渲染時(shí)使用。
本文通過GeoServer 將PostGIS 中的矢量數(shù)據(jù)發(fā)布為OGC 標(biāo)準(zhǔn)Web 服務(wù),在發(fā)布地理信息Web 服務(wù)前,需對(duì)GeoServer 進(jìn)行配置,包括工作區(qū)創(chuàng)建、數(shù)據(jù)源創(chuàng)建、圖層SLD 樣式文件的配置等工作,待服務(wù)發(fā)布后可預(yù)覽地圖展示效果。利用GeoWebCache 的影像預(yù)切片能力可支持WMTS 服務(wù)調(diào)用緩存切片,影像預(yù)切片步驟為:
(1)配置切片存放目錄;
(2)創(chuàng)建GridSets 網(wǎng)格集,作為切圖方案;
(3)進(jìn)入GeoWebCache 主頁面,選擇要切圖的圖層,點(diǎn)擊該圖層下方“Seed this layer”鏈接,填寫切圖線程數(shù)、操作類型、網(wǎng)格集、切片級(jí)別、切片范圍等,點(diǎn)擊“Submit”按鈕,即開始切圖過程(圖2)。
昆山天福國家濕地公園地理信息系統(tǒng)分為數(shù)據(jù)層、服務(wù)層和應(yīng)用層3 個(gè)層次:
(1)數(shù)據(jù)層將業(yè)務(wù)屬性數(shù)據(jù)存儲(chǔ)于PostgreSQL 中,矢量數(shù)據(jù)通過空間數(shù)據(jù)引擎PostGIS 也存儲(chǔ)于其中,遙感影像經(jīng)切片處理后存儲(chǔ)于文件系統(tǒng)中,實(shí)現(xiàn)了屬性與空間數(shù)據(jù)的存儲(chǔ)管理;
(2)服務(wù)層利用Web 服務(wù)器Jetty 與客戶端進(jìn)行通信,基于地圖服務(wù)器GeoServer 發(fā)布符合OGC 標(biāo)準(zhǔn)的地理信息服務(wù),并實(shí)現(xiàn)了各類Web 服務(wù)的集中管控;
(3)應(yīng)用層由OpenLayers 實(shí)現(xiàn),可進(jìn)行地理信息的瀏覽查詢及地理信息Web 服務(wù)的調(diào)用。
(1)目前對(duì)GIS 環(huán)境下的地理信息共享需求不斷增大,但不同GIS 軟件會(huì)產(chǎn)生不同的地理信息數(shù)據(jù)格式,給數(shù)據(jù)共享帶來困難,應(yīng)通過屏蔽數(shù)據(jù)格式差異的方法,更好實(shí)現(xiàn)地理信息數(shù)據(jù)和功能共享。
(2)本文基于免費(fèi)的GIS 開源框架,通過構(gòu)建符合OGC 標(biāo)準(zhǔn)的地理信息服務(wù),實(shí)現(xiàn)了地理空間數(shù)據(jù)和功能共享,避免了地理空間數(shù)據(jù)的重復(fù)生產(chǎn),為開源軟件在地理信息行業(yè)的應(yīng)用起到一定的示范與借鑒作用。