仇海亮
(江蘇省測繪地理信息局信息中心 江蘇省南京市 210013)
在計算機網(wǎng)絡技術的發(fā)展推動下,GIS 應用不斷深入,使各行業(yè)對地理信息的需求越來越迫切。地理信息服務提供地理空間數(shù)據(jù)服務和空間數(shù)據(jù)處理服務,通過Web 服務的方式提供相應的地理信息服務已成為當前地理信息共享的主要方式[1]。在開放式地理信息協(xié)會(OGC)的推動下,商業(yè)GIS 軟件和開源GIS 軟件均能遵循統(tǒng)一的OGC 標準實現(xiàn)地理信息服務,但封閉的商業(yè)GIS 軟件平臺價格昂貴,在一定程度上限制了中小型企事業(yè)單位的地理信息事業(yè)的快速發(fā)展,因此基于免費的GIS 開源框架構建地理信息服務,可規(guī)避高昂的經(jīng)濟和技術成本,助力地理信息產(chǎn)業(yè)的發(fā)展[2]。
本文研究了GIS 開源框架,提出基于GeoServer、OpenLayers、PostGIS、uDig 等GIS 開源軟件快速構建地理信息服務的技術路線,并在實際項目中進行應用,為用戶訪問、使用地理信息提供了有效手段。
GeoServer 是遵循OGC 標準的開源地理信息服務器軟件,可運行在基于J2EE/Servlet 的容器之上,有良好的安全性、擴展性及跨平臺能力,支持PostGIS、ShapeFile、ArcSDE、Oracle、VPF、MySQL、MapInfo 等多種遵循開放連接標準的數(shù)據(jù)源,可將地理空間數(shù)據(jù)輸出為 jpeg、Gif、png、SVG、KML 等多種格式的網(wǎng)絡地圖資源供用戶調(diào)用[3]。GeoServer 可基于WMS、WFS、WFS-T、WCS、WPS 等開放標準發(fā)布各類地理信息服務,實現(xiàn)地理空間數(shù)據(jù)的查看、修改、刪除及新增功能,并提供多用戶間地理空間數(shù)據(jù)和空間分析服務的快速共享。
OpenLayers 是專為WebGIS 客戶端開發(fā)提供的JavaScript 開源類庫,采用面向對象的思想進行開發(fā),提供強大的地圖展示功能,包括瀏覽器端地理空間數(shù)據(jù)顯示及縮放、平移、要素選擇等操作,并具有靈活的擴展機制。開發(fā)者可基于該庫提供的接口進行開發(fā),實現(xiàn)對符合OGC 標準的WMS、WFS 等地理信息服務的統(tǒng)一調(diào)用,將地理空間數(shù)據(jù)加載到基于瀏覽器的OpenLayers客戶端進行顯示。
PostgreSQL 是開源跨平臺的關系型數(shù)據(jù)庫管理系統(tǒng),提供了豐富的數(shù)據(jù)類型支持和數(shù)據(jù)連接接口,同時具有事務、觸發(fā)器、視圖等商業(yè)數(shù)據(jù)庫具有的特性。PostGIS 是PostgreSQL 的一個擴展,增加了存儲管理地理空間數(shù)據(jù)的能力。PostGIS 遵循OpenGIS 規(guī)范,并能提供空間對象、空間索引、空間操作函數(shù)和空間操作符等空間信息服務功能[3]。通過PostGIS 空間數(shù)據(jù)引擎與PostgreSQL 關系數(shù)據(jù)庫的結合,實現(xiàn)了空間信息和屬性信息的統(tǒng)一管理,以及對地理空間數(shù)據(jù)的高效訪問。
圖1:基于SOA 的地理信息服務構建流程
uDig 是跨平臺的桌面端開源地理信息軟件,提供地理空間數(shù)據(jù)查詢、編輯、縮放、平移及圖層控制等操作[4]。通過uDig 進行圖層的樣式配置后,可將圖層效果導出為符合OGC 標準的SLD(風格化圖層描述器)樣式文件,在GeoServer 中導入該SLD 文件,即可完成地理空間數(shù)據(jù)發(fā)布后的地圖渲染效果。
遙感影像數(shù)據(jù)量大,在實時空間數(shù)據(jù)傳輸過程中給網(wǎng)絡帶寬造成較大壓力,為了提高網(wǎng)絡中遙感影像數(shù)據(jù)傳輸?shù)乃俾?,可將影像?shù)據(jù)進行切片處理,根據(jù)用戶的Web 服務請求返回服務器中的緩存切片,提高地圖顯示速度。GeoWebCache 是采用Java 實現(xiàn)Web地圖切片緩存的開源項目,已被集成在GeoServer 中,支持按配置信息提前將影像數(shù)據(jù)進行切片,地圖加載時則直接從服務器文件系統(tǒng)中讀取相應的切片數(shù)據(jù)。本文利用GeoWebCache 實現(xiàn)影像地圖數(shù)據(jù)的預緩存,在通過標準WMTS 進行Web 地圖服務調(diào)用時,GeoWebCache 將依據(jù)請求位置和比例尺在切片目錄中尋找對應的地圖切片,無需實時動態(tài)生成地圖,可減輕GeoServer 服務器數(shù)據(jù)處理壓力,實現(xiàn)更有效率的客戶端響應。
圖層樣式描述(SLD)是基于OGC 規(guī)范的、用于描述地圖圖層樣式的標準文檔,其通過自定義地圖樣式的方式,實現(xiàn)地理空間數(shù)據(jù)與地圖表現(xiàn)形式的分離。SLD 文件采用XML 定義,可完全由人工按照規(guī)范進行編寫,但為更便捷的生成SLD 樣式文件,本文采用開源桌面GIS 軟件uDig 進行SLD 文件的生成。首先在uDig中對地圖圖層進行符號化和渲染,再將各圖層的SLD 文件導出,最后在GeoServer 中發(fā)布WMS 服務時導入對應的SLD 文件,從而實現(xiàn)WMS 的地圖定制服務。
為了使用戶可通過相同方式訪問不同數(shù)據(jù)源的地理空間數(shù)據(jù),OGC 制定了統(tǒng)一的Web 服務接口標準,通過調(diào)用符合OGC 標準的Web 服務即可訪問地理空間數(shù)據(jù)。因此本文基于面向服務的體系結構(SOA)思想,實現(xiàn)數(shù)據(jù)與應用的分離,將按照OGC 標準發(fā)布的地理信息服務資源進行集中管控,包括服務發(fā)布注冊、服務審核、服務申請及服務監(jiān)控管理等,具備了地理信息服務聚合與共享能力,形成了“分建共享、即拿即用”的服務模式。該模式直接通過互聯(lián)網(wǎng)傳遞地理信息服務,使得WMS、WFS、WMTS、WCS、WPS 等一系列開放標準服務實現(xiàn)了全方位的共享,有效避免了地理空間數(shù)據(jù)的重復生產(chǎn)(圖1)。
圖2:基于GeoWebCache 的影像預切片
本文基于前述GIS 開源框架,利用地圖服務器、空間數(shù)據(jù)引擎和桌面端軟件等開源軟件間的相互配合,構建了昆山天福國家濕地公園地理信息系統(tǒng),通過發(fā)布遵循OGC 標準的地理信息Web 服務,實現(xiàn)了地理空間數(shù)據(jù)與空間分析功能的共享,以及園區(qū)的地理信息可視化展示功能。
系統(tǒng)使用的數(shù)據(jù)包括監(jiān)測、調(diào)查等業(yè)務屬性數(shù)據(jù),以及遙感影像、矢量等地理信息空間數(shù)據(jù),因數(shù)據(jù)由各業(yè)務單位生產(chǎn),在入庫前須對各類數(shù)據(jù)進行標準化處理,包括坐標系統(tǒng)及比例尺的統(tǒng)一。首先,對系統(tǒng)中不同年份的影像數(shù)據(jù)統(tǒng)一坐標系統(tǒng)、進行空間校正,保證各年份影像數(shù)據(jù)能夠疊加顯示;其次,對需要進行切片處理的地圖服務按統(tǒng)一比例尺標準進行層級設計;最后,將經(jīng)過標準化處理的ShapeFile 數(shù)據(jù)導入PostGIS 空間數(shù)據(jù)引擎,業(yè)務屬性數(shù)據(jù)存入PostgreSQL 中。因發(fā)布WMS 服務時需使用SLD 樣式渲染文件,可利用uDig 加載PostGIS 中的ShapeFile 數(shù)據(jù),并將各地圖圖層樣式以SLD 文件導出,供GeoServer 在進行地圖渲染時使用。
本文通過GeoServer 將PostGIS 中的矢量數(shù)據(jù)發(fā)布為OGC 標準Web 服務,在發(fā)布地理信息Web 服務前,需對GeoServer 進行配置,包括工作區(qū)創(chuàng)建、數(shù)據(jù)源創(chuàng)建、圖層SLD 樣式文件的配置等工作,待服務發(fā)布后可預覽地圖展示效果。利用GeoWebCache 的影像預切片能力可支持WMTS 服務調(diào)用緩存切片,影像預切片步驟為:
(1)配置切片存放目錄;
(2)創(chuàng)建GridSets 網(wǎng)格集,作為切圖方案;
(3)進入GeoWebCache 主頁面,選擇要切圖的圖層,點擊該圖層下方“Seed this layer”鏈接,填寫切圖線程數(shù)、操作類型、網(wǎng)格集、切片級別、切片范圍等,點擊“Submit”按鈕,即開始切圖過程(圖2)。
昆山天福國家濕地公園地理信息系統(tǒng)分為數(shù)據(jù)層、服務層和應用層3 個層次:
(1)數(shù)據(jù)層將業(yè)務屬性數(shù)據(jù)存儲于PostgreSQL 中,矢量數(shù)據(jù)通過空間數(shù)據(jù)引擎PostGIS 也存儲于其中,遙感影像經(jīng)切片處理后存儲于文件系統(tǒng)中,實現(xiàn)了屬性與空間數(shù)據(jù)的存儲管理;
(2)服務層利用Web 服務器Jetty 與客戶端進行通信,基于地圖服務器GeoServer 發(fā)布符合OGC 標準的地理信息服務,并實現(xiàn)了各類Web 服務的集中管控;
(3)應用層由OpenLayers 實現(xiàn),可進行地理信息的瀏覽查詢及地理信息Web 服務的調(diào)用。
(1)目前對GIS 環(huán)境下的地理信息共享需求不斷增大,但不同GIS 軟件會產(chǎn)生不同的地理信息數(shù)據(jù)格式,給數(shù)據(jù)共享帶來困難,應通過屏蔽數(shù)據(jù)格式差異的方法,更好實現(xiàn)地理信息數(shù)據(jù)和功能共享。
(2)本文基于免費的GIS 開源框架,通過構建符合OGC 標準的地理信息服務,實現(xiàn)了地理空間數(shù)據(jù)和功能共享,避免了地理空間數(shù)據(jù)的重復生產(chǎn),為開源軟件在地理信息行業(yè)的應用起到一定的示范與借鑒作用。