木嘯林,牛坤龍,蔡世榮,楊現(xiàn)坤,王晉年,2
1.廣州大學(xué) 地理科學(xué)與遙感學(xué)院,廣州 510006
2.廣州大學(xué) 遙感大數(shù)據(jù)智能應(yīng)用創(chuàng)新中心,廣州 510006
空間數(shù)據(jù)是地理學(xué)研究的重要組成部分,基于網(wǎng)絡(luò)的空間數(shù)據(jù)共享、可視化和分析可以極大促進(jìn)空間數(shù)據(jù)的應(yīng)用。地理信息系統(tǒng)(geographic information system,GIS)軟件為這些專業(yè)需求提供了有效的解決方案。商業(yè)GIS軟件可以提供大多數(shù)的GIS功能,且自家軟件功能模塊間兼容和互操作性比較強(qiáng)。但是,其昂貴的采購成本使得很多公益性或研究性的研發(fā)項(xiàng)目無法使用。免費(fèi)開源軟件(free and open source software,F(xiàn)OSS)可以滿足這些項(xiàng)目的研發(fā)需求,是近年來比較流行的解決方式。
FOSS是指軟件創(chuàng)作者遵循開源協(xié)議,將源代碼部分或全部公開,允許用戶使用、研究、更改,不受許可證限制的免費(fèi)軟件[1-3]。自開源軟件運(yùn)動(dòng)以來,F(xiàn)OSS發(fā)展迅速,目前已有80%的軟件使用了開源方式進(jìn)行開發(fā)[2]。開源網(wǎng)絡(luò)地理信息系統(tǒng)是其發(fā)展的主要方向之一。20世紀(jì)90年代開源思想在GIS領(lǐng)域萌芽,國(guó)內(nèi)外諸多科研院所開始進(jìn)行GIS軟件開源嘗試。2006年,國(guó)際開源地理空間基金委(open source geospatial foundation,OSGeo)成立,與此同時(shí),國(guó)內(nèi)也開始了對(duì)FOSS軟件的應(yīng)用研究,比如,孫劍在2006年對(duì)FOSS軟件的體系架構(gòu)進(jìn)行了梳理[4],馮宇等基于MapServer中間件開發(fā)了佛山干線公路網(wǎng)用地控制規(guī)劃系統(tǒng)[5]。2014年OSGeo中國(guó)分中心成立,極大促進(jìn)了我國(guó)FOSS的發(fā)展。基金會(huì)也從最初的幾個(gè)項(xiàng)目逐漸發(fā)展至涵蓋前端地理信息渲染平臺(tái)、中間件及各類企業(yè)級(jí)地理空間計(jì)算平臺(tái)等數(shù)十個(gè)門類的開源地理空間項(xiàng)目[6]。當(dāng)前,可從OSGeo中國(guó)分中心網(wǎng)站上檢索到的GIS軟件有242個(gè)。30多年來,F(xiàn)OSS GIS取得長(zhǎng)足發(fā)展,現(xiàn)已形成完整的產(chǎn)品線。
相較于傳統(tǒng)的商業(yè)GIS軟件,F(xiàn)OSS GIS軟件免費(fèi)開源,無需授權(quán)即可使用;FOSS軟件兼容性強(qiáng),支持絕大多數(shù)的操作系統(tǒng);擴(kuò)展性強(qiáng),允許用戶創(chuàng)建和管理自己的插件;更新及時(shí),一般每個(gè)季度會(huì)發(fā)布一個(gè)小版本且對(duì)于軟件問題反饋及時(shí)高效。但FOSS項(xiàng)目由于經(jīng)費(fèi)和人力資源限制,一般只能實(shí)現(xiàn)某一項(xiàng)功能[7],因此,使用FOSS進(jìn)行GIS開發(fā)需要開發(fā)者綜合多個(gè)FOSS項(xiàng)目。大量的FOSS項(xiàng)目可能會(huì)使開發(fā)者難以取舍,所以對(duì)這些項(xiàng)目的基本功能及特點(diǎn)進(jìn)行梳理十分必要。
當(dāng)前,國(guó)產(chǎn)開源WebGIS軟件應(yīng)用較少,尚未得到廣泛推廣,且各軟件自成體系,應(yīng)用潛力還未得到有效挖掘。為全面了解FOSS的基本特點(diǎn)和功能,本文較為系統(tǒng)地梳理了當(dāng)前文獻(xiàn)中常用的開源網(wǎng)絡(luò)地理信息系統(tǒng)軟件,詳細(xì)介紹了開源WebGIS的技術(shù)體系、功能特征和應(yīng)用領(lǐng)域,并在此基礎(chǔ)上歸納當(dāng)前開源GIS的研究進(jìn)展與發(fā)展趨勢(shì),以期為中國(guó)地理信息系統(tǒng)軟件發(fā)展規(guī)劃和技術(shù)應(yīng)用提供技術(shù)參考和經(jīng)驗(yàn)借鑒。
目前在全球范圍內(nèi)科研和行業(yè)應(yīng)用領(lǐng)域都已開始大量使用開源WebGIS軟件對(duì)空間數(shù)據(jù)進(jìn)行獲取、修改、存儲(chǔ)、分析和可視化。本文主要關(guān)注應(yīng)用在地理學(xué)和遙感科學(xué)等領(lǐng)域的開源WebGIS軟件。這些軟件大多基于開放地理空間信息聯(lián)盟(open geospatial consortium,OGC)標(biāo)準(zhǔn)開發(fā)。OGC是制定FOSS軟件數(shù)據(jù)和服務(wù)標(biāo)準(zhǔn)的非盈利組織,其制定的標(biāo)準(zhǔn)包括,地理標(biāo)記語言(geographic markup language,GML)、網(wǎng)絡(luò)處理服務(wù)(Web processing service,WPS)、網(wǎng)絡(luò)地圖服務(wù)(Web map service,WMS)、網(wǎng)絡(luò)要素服務(wù)(Web feature service,WFS)、網(wǎng)絡(luò)地理場(chǎng)數(shù)據(jù)服務(wù)(Web coverage service,WCS)等,GIS廠商依照標(biāo)準(zhǔn)開發(fā)可實(shí)現(xiàn)對(duì)不同空間數(shù)據(jù)的互操作。
一套常規(guī)的WebGIS架構(gòu)主要由三部分組成,數(shù)據(jù)庫、GIS服務(wù)器和Web服務(wù)器(圖1)。其中,數(shù)據(jù)庫用于存儲(chǔ)地理信息數(shù)據(jù),如矢量數(shù)據(jù)、柵格數(shù)據(jù)等。GIS服務(wù)器用于向前端提供WMS、WFS、WCS等服務(wù)。Web服務(wù)器則用于調(diào)取GIS服務(wù)器所提供的OGC標(biāo)準(zhǔn)服務(wù),并在前端進(jìn)行渲染展示。
圖1 常規(guī)開源WebGIS軟件體系架構(gòu)Fig.1 Open source WebGIS software framework
根據(jù)不同軟件的技術(shù)特點(diǎn)和核心功能,本文將開源WebGIS軟件分為四大類分別闡述:用于存儲(chǔ)數(shù)據(jù)的空間數(shù)據(jù)庫軟件、用于數(shù)據(jù)共享的空間數(shù)據(jù)發(fā)布軟件、用于空間數(shù)據(jù)制圖的可視化軟件及用于地理處理和算法操作的空間分析軟件。
空間數(shù)據(jù)庫將地理數(shù)據(jù)存儲(chǔ)在一個(gè)文件系統(tǒng)中,該系統(tǒng)可以存儲(chǔ)數(shù)百萬的大型空間數(shù)據(jù)集,并可以高效查詢、分析和更新這些數(shù)據(jù)[8]。許多空間數(shù)據(jù)庫是對(duì)現(xiàn)有結(jié)構(gòu)化查詢語言(structured query language,SQL)數(shù)據(jù)庫的擴(kuò)展,實(shí)現(xiàn)了OGC的簡(jiǎn)單要素標(biāo)準(zhǔn)(simple feature standard,SFS),用于定義空間對(duì)象的表達(dá)方式。當(dāng)前支持空間查詢語言的開源數(shù)據(jù)庫主要有PostGIS、SpatiaLite和MySQL Spatial等(表1)。
表1 常用開源空間數(shù)據(jù)庫特點(diǎn)及應(yīng)用示例Table 1 Summary of spatial database features and examples in literature
1.1.1 PostGIS
PostGIS是對(duì)象關(guān)系數(shù)據(jù)庫PostgreSQL的空間數(shù)據(jù)庫擴(kuò)展,在開源空間數(shù)據(jù)庫中提供了最廣泛的OGC-SFS支持[8]。它實(shí)現(xiàn)了對(duì)地理對(duì)象的支持,并融合數(shù)據(jù)庫系統(tǒng)與空間數(shù)據(jù)管理,使用戶可以在數(shù)據(jù)庫內(nèi)核中實(shí)現(xiàn)空間分析等操作[28]。PostGIS集成了R-tree空間索引技術(shù),以加快空間數(shù)據(jù)查詢速度;并結(jié)合GDAL類庫來支持各種柵格格式讀取與分析。此外,PostGIS還提供一個(gè)大型空間數(shù)據(jù)庫函數(shù)庫(2.1版中約有400個(gè)操作函數(shù)),用于實(shí)現(xiàn)矢量和柵格數(shù)據(jù)的基本分析、矢量數(shù)據(jù)和柵格數(shù)據(jù)之間的相互轉(zhuǎn)換及投影轉(zhuǎn)換等功能。
1.1.2 SpatiaLite
SpatiaLite是SQLite數(shù)據(jù)庫的空間擴(kuò)展[8],簡(jiǎn)單、易用,只有幾百KB大小。它通過使用GEOS的幾何庫,PROJ.4、LIBICONV等類庫來實(shí)現(xiàn)OGC-SFS、坐標(biāo)轉(zhuǎn)換、多種編程語言支持等功能;通過集成R-tree空間索引機(jī)制來高效查詢和分析矢量空間數(shù)據(jù);通過創(chuàng)建抽象數(shù)據(jù)類型Geometry字段來存儲(chǔ)和管理矢量數(shù)據(jù)[21,29]。相較于PostGIS,SpatiaLite更像傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,當(dāng)前僅支持矢量數(shù)據(jù),并且更適合單機(jī)操作,在處理并發(fā)訪問或者基于網(wǎng)絡(luò)訪問操作時(shí)能力比較有限[30]。
1.1.3 MySQL Spatial
MySQL Spatial是MySQL數(shù)據(jù)庫的空間擴(kuò)展,實(shí)現(xiàn)了OGC-SFS標(biāo)準(zhǔn)。它支持GEOMETRY(空間要素類型基類)、POINT(點(diǎn))、CURVE(曲線)、SURFACE(面)等幾種空間幾何數(shù)據(jù),不支持柵格數(shù)據(jù)[31]。同PostGIS和SpatiaLite一樣,MySQL Spatial也提供了數(shù)據(jù)庫操作函數(shù)庫。5.7版中約有90個(gè)函數(shù),但其函數(shù)均假設(shè)在二維平面上進(jìn)行空間操作,并不考慮空間坐標(biāo)參考系統(tǒng)。
開發(fā)者可以通過空間數(shù)據(jù)服務(wù)器將空間數(shù)據(jù)向用戶發(fā)布,促進(jìn)數(shù)據(jù)交流與共享。這時(shí),空間數(shù)據(jù)服務(wù)器的作用是以友好的格式和方式傳遞空間數(shù)據(jù),方便客戶端解讀和顯示空間數(shù)據(jù)。當(dāng)前主流的開源地理空間數(shù)據(jù)發(fā)布軟件有MapServer、GeoServer、deegree和Geomajas(表2)。
表2 常用空間數(shù)據(jù)發(fā)布軟件特點(diǎn)及應(yīng)用示例Table 2 Summary of geospatial data server software features and examples in literature
1.2.1 MapServer
MapServer是用C語言編寫的通用網(wǎng)關(guān)接口(common gateway interface,CGI)程序,兼容多種操作系統(tǒng)[51]。它提供了2種工作模式:CGI和MapScript,一般選用CGI模式進(jìn)行應(yīng)用系統(tǒng)研發(fā)[35]。開發(fā)者亦可選用MapScript應(yīng)用程序編程接口(application programming interface,API)配置服務(wù)器,并以執(zhí)行腳本的方式與服務(wù)器交互。MapServer通過集成GDAL類庫實(shí)現(xiàn)多種柵格和矢量數(shù)據(jù)格式的訪問;通過使用Mapfiles文件配置數(shù)據(jù)發(fā)布服務(wù);通過支持PostGIS數(shù)據(jù)庫實(shí)現(xiàn)空間數(shù)據(jù)的存儲(chǔ)和查詢,并基于kamap、MapLab、CartoWeb等一系列客戶端JavaScript API來實(shí)現(xiàn)對(duì)地理空間數(shù)據(jù)的表達(dá)與傳輸[52]。
1.2.2 GeoServer
GeoServer是基于Java開發(fā)的空間數(shù)據(jù)服務(wù)發(fā)布軟件,是OpenGIS Web服務(wù)器規(guī)范的J2EE(Java 2 platform enterprise edition)實(shí)現(xiàn),可兼容WMS、WFS、GML等WebGIS相關(guān)服務(wù)[53]。GeoServer允許用戶插入、刪除、修改、查詢、發(fā)布特征數(shù)據(jù),以便在用戶之間迅速共享地理信息。GeoServer提供了圖形化的Web配置管理工具,方便開發(fā)者通過采用表述性狀態(tài)轉(zhuǎn)移(representational state transfer,REST)接口以編程的方式更加靈活地配置服務(wù)器[54]。此外,GeoServer還實(shí)現(xiàn)了對(duì)OpenLayers和Google Earth插件的支持,并支持GeoWebCache自動(dòng)空間數(shù)據(jù)緩存、瓦片制圖及空間數(shù)據(jù)庫訪問。GeoServer訪問空間數(shù)據(jù)是基于GeoTools類庫實(shí)現(xiàn)的,它嚴(yán)重依賴GeoTools類庫[55]。
1.2.3 deegree
deegree是用Java編寫的空間數(shù)據(jù)發(fā)布軟件,實(shí)現(xiàn)了WMS、WFS等OGC標(biāo)準(zhǔn)。deegree的功能由Servlet組件實(shí)現(xiàn),現(xiàn)有絕大多數(shù)Web服務(wù)器均支持Servlet技術(shù),因此可以很方便地將其部署到服務(wù)器上。它也提供了一個(gè)類似于REST的編程配置界面,能以編程方式配置服務(wù)器。此外,deegree還支持如PostGIS、shapefile和OGC-GML格式等多種數(shù)據(jù)源,動(dòng)態(tài)地產(chǎn)生點(diǎn)、線、多邊形等地理空間數(shù)據(jù)[56]。
1.2.4 Geomajas
Geomajas是一個(gè)用于建立WebGIS應(yīng)用的框架,具有顯示和管理復(fù)雜地理空間信息的能力。它基于谷歌網(wǎng)絡(luò)工具(Google Web tools,GWT)構(gòu)建,為瀏覽器提供了一個(gè)完整的映射API。Geomajas提供了服務(wù)器端平臺(tái)GWT Server實(shí)現(xiàn)空間數(shù)據(jù)的集成,它允許用戶從客戶端瀏覽器中控制、管理發(fā)布空間數(shù)據(jù),并提供了一套功能強(qiáng)大的模塊,幫助開發(fā)者構(gòu)建所需的地理信息系統(tǒng)應(yīng)用程序。Geomajas的主要功能包括模塊化結(jié)構(gòu)、集成的客戶端服務(wù)器架構(gòu)、高級(jí)幾何和屬性編輯與驗(yàn)證、明確定義的API等[49]。
空間數(shù)據(jù)需要制圖與可視化軟件實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境下可視化顯示??梢暬瘯r(shí),制圖軟件獲取后臺(tái)空間數(shù)據(jù)服務(wù)器提供的WMS、WFS和WCS服務(wù),對(duì)數(shù)據(jù)渲染并在瀏覽器中顯示。當(dāng)前,主流的開源網(wǎng)絡(luò)地圖制圖和可視化軟件有OpenLayers、Google Earth、QGIS Server、Leaflet等(表3)。
表3 常用空間數(shù)據(jù)制圖與可視化軟件特點(diǎn)及應(yīng)用示例Table 3 Summary of mapping libraries features and examples in literature
1.3.1 OpenLayers
OpenLayers是由MetaCarta公司開發(fā)的JavaScript包,是用于構(gòu)建網(wǎng)絡(luò)地圖應(yīng)用的類庫,可以在網(wǎng)頁上交互式顯示地圖[77]。OpenLayers通過集成WebGL標(biāo)準(zhǔn)和Canvas 2D圖形技術(shù)獲得高效的可視化性能。它可以渲染顯示各種格式的地理空間數(shù)據(jù),如GeoJSON、GML及OGC Web服務(wù)等[59,78]。OpenLayers提供在地圖上繪制和編輯的數(shù)據(jù)接口,允許開發(fā)人員使用各種基礎(chǔ)地圖,包括Open Street Map、Bing Map、MapQuest等[79]。此外,OpenLayers的API實(shí)現(xiàn)了類似Ajax的無刷新更新頁面,與用戶交互更便捷,減少了用戶的等待時(shí)間。當(dāng)前OpenLayers尚未支持三維顯示,但是無需任何插件及插件附帶的各種限制仍是它的優(yōu)勢(shì)[8]。
1.3.2 Google Earth
雖然Google Earth并非開源WebGIS軟件,但其對(duì)普通用戶免費(fèi),并且支持多種開源地圖數(shù)據(jù)可視化。由于版權(quán)問題,Google Earth不能用于商業(yè)用途,但個(gè)人用戶每天最多可以請(qǐng)求獲取25 000個(gè)地圖[8]。用戶可通過Google Earth插件使用Keyhole標(biāo)記語言(keyhole markup language,KML)在三維虛擬地球環(huán)境中可視化空間數(shù)據(jù)。但上述操作的前提是需要用戶安裝相應(yīng)瀏覽器插件,而有些操作系統(tǒng)或?yàn)g覽器不支持該插件。因此,谷歌Earth API已于2015年12月14日停用該Web插件。
1.3.3 QGIS Server
QGIS(原稱Quantum GIS)是基于Qt開發(fā)的開源桌面GIS軟件,2009年首次發(fā)行。QGIS的底層語言為C++,通過集成GDAL、Qt等開源類庫,用戶可進(jìn)行常規(guī)的遙感影像處理流程[67,69]。QGIS支持多種數(shù)據(jù)庫的訪問,擁有豐富全面的算法庫,每個(gè)算法都被封裝,有明確的輸入輸出,方便用戶跨平臺(tái)開發(fā)[70]。QGIS提供了QGIS Server插件,開發(fā)者可以將自己的QGIS可視化項(xiàng)目作為WMS一對(duì)一地發(fā)布在網(wǎng)絡(luò)上。QGIS Server是開源的WMS 1.3.0,WFS 1.0.0實(shí)現(xiàn)。它使用QGIS作為GIS邏輯和地圖渲染的后端,實(shí)現(xiàn)了高級(jí)制圖功能。當(dāng)前,用戶可以從QGIS提供的代碼開放平臺(tái)、官方教程及演示中學(xué)習(xí)QGIS、QGIS Server操作,進(jìn)行開發(fā)。
1.3.4 Leaflet
Leaflet是一個(gè)易用輕量的開源JavaScript庫,代碼量小,只有39 KB,但具備開發(fā)網(wǎng)絡(luò)地圖的大部分功能,適用于中大型WebGIS系統(tǒng)開發(fā)。Leaflet的設(shè)計(jì)堅(jiān)持簡(jiǎn)便、高性能和可用性好的原則,無需部署,可被程序直接引用。Leaflet支持插件擴(kuò)展,開發(fā)者可以通過集成多種插件來滿足地圖查詢、分析及渲染等操作需求[75]。Leaflet默認(rèn)采用“L”作為命名空間,核心為Map類,Map是一個(gè)地圖容器,可以在其中放置地圖控件,添加圖層、標(biāo)注、符號(hào),綁定事件等[80]。
在WebGIS應(yīng)用程序開發(fā)中,空間分析操作可通過使用OGC網(wǎng)絡(luò)處理服務(wù)(Web processing service,WPS)規(guī)范來實(shí)現(xiàn)。WPS規(guī)范定義了三種強(qiáng)制操作,以實(shí)現(xiàn)網(wǎng)絡(luò)上的空間信息處理。Get Capabilities操作允許客戶端請(qǐng)求和接收描述服務(wù)器功能實(shí)現(xiàn)的元數(shù)據(jù)文檔;Describe Process操作返回有關(guān)流程需求的詳細(xì)信息,如輸入輸出參數(shù)及允許的數(shù)據(jù)格式等;Execute操作使用用戶提供的輸入?yún)?shù)調(diào)用由WPS實(shí)現(xiàn)的特定流程,并將流程處理結(jié)果返回客戶端。開發(fā)者可以將WPS搭建在專門的空間數(shù)據(jù)處理服務(wù)器上來實(shí)現(xiàn)空間分析功能。前文所述的deegree和GeoServer雖也支持WPS,但很多現(xiàn)有使用deegree和GeoServer的文獻(xiàn)并未明確言明是否使用其網(wǎng)絡(luò)處理功能,因此本文未總結(jié)以上二者所涉及的應(yīng)用。常用網(wǎng)絡(luò)處理服務(wù)軟件如表4。
表4 常用空間數(shù)據(jù)處理軟件特點(diǎn)及應(yīng)用示例Table 4 Summary of geoprocessing software features and examples in literature
1.4.1 52°North WPS
52°North WPS軟件是全面支持OGC-WPS標(biāo)準(zhǔn)的典范。它實(shí)現(xiàn)了WPS 1.0標(biāo)準(zhǔn),支持多種地理數(shù)據(jù)格式訪問,如GeoTiff、Arc Grid、Shapefile、GML等,可以同時(shí)在線處理多種數(shù)據(jù)格式,并將結(jié)果反饋給用戶[82]。它提供了一個(gè)可擴(kuò)展、可集成的開發(fā)框架,允許開發(fā)人員把自己開發(fā)的R、Python腳本、Java程序以及地理處理算法等發(fā)布為網(wǎng)絡(luò)服務(wù)。此外,52°North WPS還可與現(xiàn)有的地理處理庫集成,如GRASS、Sextante和ArcGIS Server等,且集成開發(fā)后實(shí)現(xiàn)的地理處理功能,無需進(jìn)行任何修改,拿來即用,極大地降低了應(yīng)用開發(fā)難度。
1.4.2 PyWPS
PyWPS是唯一基于Python的WPS實(shí)現(xiàn),提供在Python中創(chuàng)建WPS的環(huán)境。與其他WPS服務(wù)一樣,PyWPS本身并不處理數(shù)據(jù),而是提供服務(wù)器與本地?cái)?shù)據(jù)操作工具(如GRASS、GDAL和R腳本)之間的連接,為WPS輸入和輸出提供簡(jiǎn)單的接口[30]。其開發(fā)自定義流程需要?jiǎng)?chuàng)建一個(gè)Python文件來實(shí)現(xiàn)業(yè)務(wù)邏輯,定義服務(wù)元數(shù)據(jù)和配置參數(shù)。開發(fā)PyWPS的過程不需要Python語言本身和WPS標(biāo)準(zhǔn)核心概念以外的額外知識(shí),更加適合缺乏編程高級(jí)培訓(xùn)的個(gè)人開發(fā)者使用。
1.4.3 ZOO-Project
ZOO-Project是用C、Python和JavaScript編寫的WPS服務(wù),實(shí)現(xiàn)了WPS 1.0和WPS 2.0接口標(biāo)準(zhǔn),能夠在線處理地理空間或非地理空間數(shù)據(jù)。它的核心處理引擎ZOO-Kernel允許用戶基于可靠的軟件和類庫來執(zhí)行諸多現(xiàn)有的ZOO服務(wù),并允許用戶從新的或現(xiàn)有的源代碼創(chuàng)建自己的WPS服務(wù)。ZOO-Project提供了另一種網(wǎng)絡(luò)處理服務(wù)實(shí)現(xiàn)方式來促進(jìn)網(wǎng)絡(luò)處理服務(wù)的發(fā)展。它支持20多種編程語言,簡(jiǎn)化了新服務(wù)作為獨(dú)立模塊的開發(fā),并提供了一個(gè)原始的方法來設(shè)置WPS服務(wù)器,使網(wǎng)絡(luò)處理服務(wù)更容易實(shí)現(xiàn)[94]。
WebGIS應(yīng)用一般需要設(shè)計(jì)開發(fā)Web界面作為與后臺(tái)軟件組件的交互入口。因此,一般的WebGIS應(yīng)用都配置一個(gè)Web服務(wù)器并設(shè)計(jì)基于HTML的Web頁面作為地圖數(shù)據(jù)和信息顯示的容器,用于和用戶進(jìn)行操作交互。Web服務(wù)器上的腳本語言通常需要承擔(dān)數(shù)據(jù)庫交互、與其他軟件和其他Web應(yīng)用的邏輯交互等任務(wù)。因此,合適的開發(fā)語言、簡(jiǎn)潔的開發(fā)框架、適當(dāng)?shù)膬?nèi)容管理系統(tǒng),對(duì)WebGIS應(yīng)用開發(fā)至關(guān)重要。本章主要回顧文獻(xiàn)中WebGIS應(yīng)用開發(fā)時(shí)常用的開發(fā)語言、網(wǎng)絡(luò)框架和內(nèi)容管理系統(tǒng)。常用WebGIS開發(fā)工具如表5。
表5 常用WebGIS開發(fā)工具Table 5 Summary of Web development software used by Web Apps in literature
在Web開發(fā)中,編程語言可以處理高級(jí)邏輯,使網(wǎng)站更加動(dòng)態(tài),而不僅僅簡(jiǎn)單地返回靜態(tài)HTML。例如,當(dāng)用戶提交操作請(qǐng)求時(shí),編程語言可以執(zhí)行模擬分析任務(wù)或處理復(fù)雜的可視化任務(wù)。事實(shí)上,只要編程語言提供了處理HTTP請(qǐng)求的機(jī)制,就可以實(shí)現(xiàn)以上目的,用于WebGIS開發(fā)。但由于不同編程語言提供的Web開發(fā)類庫豐富程度不同,使得開發(fā)難易程度和時(shí)間開銷不同,因而才有WebGIS開發(fā)語言的劃分。
2.1.1 PHP
超文本預(yù)處理器(hypertext preprocessor,PHP)是一種適用于Web開發(fā)的開源服務(wù)器端腳本語言。其語法吸收借鑒C、Java、Perl等語言,易于學(xué)習(xí)和實(shí)踐。PHP嵌入在網(wǎng)站的HTML頁面中,用戶請(qǐng)求網(wǎng)頁時(shí)在服務(wù)器上執(zhí)行代碼。它通過ODBC類庫支持不同數(shù)據(jù)庫,并提供PDO數(shù)據(jù)庫抽象層[51]。PHP官方提供了諸多功能擴(kuò)展模塊,并添加常見的Web功能(如管理會(huì)話和cookie、用戶身份驗(yàn)證和文件上傳等)使開發(fā)更加高效。目前,國(guó)內(nèi)比較主流的Web地圖服務(wù),如天地圖、高德地圖、騰訊地圖和百度地圖都提供了PHP語言的開發(fā)示例,支持用戶快速搭建WebGIS應(yīng)用程序。
2.1.2 Java
Java是一種基于類的面向?qū)ο缶幊陶Z言,廣泛應(yīng)用于企業(yè)級(jí)Web應(yīng)用開發(fā)和移動(dòng)應(yīng)用開發(fā)。Java繼承了C++中的面向?qū)ο蠹夹g(shù),摒棄了指針、運(yùn)算符重載和多重繼承特性,增加了垃圾回收器等功能,使得基于Java開發(fā)更加靈活、穩(wěn)健。在WebGIS應(yīng)用開發(fā)中,開發(fā)人員一般使用J2EE(Java 2 platform enterprise edition)和JSP(Java server pages)進(jìn)行程序開發(fā)?,F(xiàn)行大部分基于Android的WebGIS軟件都是使用Java語言開發(fā)的[30]。Java技術(shù)免費(fèi)、開源的特性,為創(chuàng)建和運(yùn)行大規(guī)模、多層、可擴(kuò)展、安全可靠的網(wǎng)絡(luò)應(yīng)用程序提供了強(qiáng)大的跨平臺(tái)開發(fā)環(huán)境,極大地促進(jìn)了Java語言在WebGIS開發(fā)領(lǐng)域的普及和應(yīng)用。
網(wǎng)絡(luò)框架是為構(gòu)建網(wǎng)站提供的可編寫腳本的方法,目的是減輕開發(fā)者在設(shè)計(jì)靜態(tài)網(wǎng)站時(shí)編寫低級(jí)代碼的任務(wù)量。例如,之前需要設(shè)計(jì)多個(gè)靜態(tài)網(wǎng)頁才能實(shí)現(xiàn)的任務(wù),通過網(wǎng)絡(luò)框架編寫動(dòng)態(tài)腳本可以集成在一個(gè)頁面內(nèi)完成。網(wǎng)絡(luò)應(yīng)用框架通常提供數(shù)據(jù)庫訪問、用戶管理、會(huì)話控制及網(wǎng)絡(luò)安全控制等功能。大多數(shù)網(wǎng)絡(luò)應(yīng)用框架都遵循軟件系統(tǒng)設(shè)計(jì)的模型(model)—視圖(view)—控制器(controller)的MVC開發(fā)范式。MVC開發(fā)范式實(shí)現(xiàn)了動(dòng)態(tài)的程序設(shè)計(jì),使開發(fā)者后續(xù)對(duì)程序的修改和擴(kuò)展更加簡(jiǎn)便,降低了程序設(shè)計(jì)的復(fù)雜度,方便開發(fā)者進(jìn)行程序開發(fā)。
2.2.1 Python網(wǎng)絡(luò)應(yīng)用框架
Python的SciPy和NumPy等科學(xué)計(jì)算模塊及簡(jiǎn)單易用的特性,使其成為流行的科學(xué)計(jì)算腳本語言[110]。當(dāng)前,Python驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用框架(如Django、Flask、Tornado、Web2py和Pylons等)是構(gòu)建地理科學(xué)網(wǎng)絡(luò)應(yīng)用程序的首選。但是,基于Python的網(wǎng)絡(luò)應(yīng)用框架的默認(rèn)功能差異很大。例如,Django提供了大量默認(rèn)可用的功能,使開發(fā)更加簡(jiǎn)單方便,而Pylons僅提供少量默認(rèn)功能,但卻為開發(fā)人員提供更大的開發(fā)靈活性。隨著近年來基于Python的開發(fā)愈加流行,采用Python網(wǎng)絡(luò)應(yīng)用框架的WebGIS應(yīng)用也將越來越多。
2.2.2 CodeIgniter
CodeIgniter是一個(gè)基于MVC開發(fā)范式,采用PHP語言開發(fā)的Web應(yīng)用框架,性能卓越,配置簡(jiǎn)單。CodeIgniter框架提供了完整的數(shù)據(jù)庫操作、表單操作和數(shù)據(jù)驗(yàn)證、安全控制、會(huì)話管理和文件上傳等功能。對(duì)于已使用PHP的WebGIS應(yīng)用,想要使用結(jié)構(gòu)化框架的方法進(jìn)行功能擴(kuò)展的任務(wù)來說,CodeIgniter是一個(gè)比較好的選擇[111]。
2.2.3 Ruby on Rails
Ruby on Rails,簡(jiǎn)稱Rails,是采用Ruby語言編寫的Web應(yīng)用框架。它嚴(yán)格按照MVC結(jié)構(gòu)開發(fā),框架自身簡(jiǎn)單,實(shí)際應(yīng)用開發(fā)代碼量少[112]。許多其他Web應(yīng)用框架都曾受到Rails開發(fā)思想的影響。據(jù)統(tǒng)計(jì),有數(shù)以萬計(jì)的網(wǎng)站是基于Rails開發(fā)的,包括比較流行的Twitter和GitHub網(wǎng)站等[112]。
2.2.4 客戶端開發(fā)框架
為避免瀏覽器和服務(wù)器之間頻繁交互造成的延遲,一些Web應(yīng)用被開發(fā)成完全在客戶端(Web瀏覽器)上運(yùn)行的純JavaScript應(yīng)用程序。用戶初次請(qǐng)求會(huì)傳遞給服務(wù)器,從服務(wù)器下載應(yīng)用程序的源代碼,而后啟動(dòng)Web應(yīng)用程序。Walker等在2014年開發(fā)了客戶端Web應(yīng)用程序,運(yùn)行基于Web的交互式河流模型WIRM[102]。該Web應(yīng)用是使用Backbone.js開發(fā)的JavaScript MVC客戶端框架。在服務(wù)器端,該程序使用Django處理用戶認(rèn)證和數(shù)據(jù)庫交互。
內(nèi)容管理系統(tǒng)(content management system,CMS)是一種位于Web服務(wù)器和后端辦公系統(tǒng)之間的軟件系統(tǒng)。內(nèi)容管理系統(tǒng)中的“內(nèi)容”涵括除地理數(shù)據(jù)外,其他任何形式的數(shù)字信息組合,如文本、Web頁面、視頻、聲音、XML文件等?;贑MS的WebGIS應(yīng)用只需在瀏覽器中使用有限代碼和界面交互即可完成網(wǎng)站構(gòu)建。CMS的用戶界面具有前端和后端結(jié)構(gòu),用戶訪問前端進(jìn)行交互,管理員訪問后端進(jìn)行維護(hù)和開發(fā),這種類型系統(tǒng)非常適合非技術(shù)管理員維護(hù)網(wǎng)站。在WebGIS應(yīng)用開發(fā)完成后,只需對(duì)一般人員進(jìn)行簡(jiǎn)單的網(wǎng)站維護(hù)和數(shù)據(jù)更新培訓(xùn)即可承擔(dān)網(wǎng)站管理工作。文獻(xiàn)中常用的開源CMS系統(tǒng)主要有Drupal、CKAN等。
2.3.1 Drupal
Drupal是基于PHP語言編寫的開源內(nèi)容管理系統(tǒng)。它提供了基于瀏覽器的圖形用戶界面用于開發(fā)WebGIS應(yīng)用,以此來最大限度地減少代碼編寫量[107]。Drupal本身僅提供了基本功能,開發(fā)者可以按照自己的需求安裝相應(yīng)模塊庫的模塊來為網(wǎng)站添加功能。此外,開發(fā)者還可以使用PHP調(diào)用其他Drupal開發(fā)者提供的模塊來快速創(chuàng)建自己的模塊。
2.3.2 CKAN
CKAN是建立在Pylons Python框架上內(nèi)容管理系統(tǒng)。和Drupal主要用于網(wǎng)絡(luò)應(yīng)用的頁面可視化不同,CKAN使用內(nèi)置數(shù)據(jù)管理系統(tǒng)托管地理數(shù)據(jù)集[109]。CKAN的系統(tǒng)以“開箱即用”的方式托管數(shù)據(jù),并創(chuàng)建豐富的元數(shù)據(jù)支持對(duì)地理數(shù)據(jù)信息描述[42]。同時(shí),CKAN還提供了一組用于構(gòu)建自定義擴(kuò)展的Python編程接口及以編程方式上傳和下載數(shù)據(jù)的REST API。當(dāng)前,美國(guó)政府、加拿大政府及開源非洲等地理數(shù)據(jù)共享網(wǎng)站都是采用CKAN框架開發(fā)的。
免費(fèi)和開源網(wǎng)絡(luò)地理信息系統(tǒng)軟件的獨(dú)特優(yōu)勢(shì)和技術(shù)特點(diǎn)促使其在實(shí)際中應(yīng)用越來越廣。相較于商業(yè)GIS軟件,用于地理空間的FOSS軟件完全免費(fèi)、兼容性強(qiáng),支持多種操作系統(tǒng),且開發(fā)過程中幾乎無需考慮軟件成本問題。FOSS完全開源,開發(fā)者可通過研究源代碼了解WebGIS相關(guān)技術(shù)的底層實(shí)現(xiàn)方法。一些開源WebGIS軟件還提供了獨(dú)立的插件管理器,允許開發(fā)者自由分享插件。開源WebGIS軟件中許多插件由一線科研工作者研發(fā),涉及領(lǐng)域內(nèi)前沿學(xué)術(shù)問題,并且,諸多經(jīng)典模型在軟件中都有完備模塊,可以幫助剛?cè)腴T的小白節(jié)省編程實(shí)現(xiàn)模型所帶來的時(shí)間消耗,提高科研和學(xué)習(xí)效率。
本文主要介紹文獻(xiàn)中常用的開源WebGIS開發(fā)技術(shù),并相應(yīng)列舉了目前已公開發(fā)表的85個(gè)項(xiàng)目,其中73個(gè)近十年發(fā)表,35個(gè)近五年發(fā)表。本文總結(jié)的開源軟件項(xiàng)目雖不完全,但也在一定程度上反映,網(wǎng)絡(luò)應(yīng)用程序作為地球科學(xué)建模和數(shù)據(jù)的媒介越來越受關(guān)注。文中所列網(wǎng)絡(luò)應(yīng)用程序質(zhì)量和功能差異很大,一些網(wǎng)絡(luò)應(yīng)用程序作為原型或演示系統(tǒng)開發(fā),如Feng等在2011年開發(fā)的濕地生態(tài)在線服務(wù)模型GeoMSP;另一些則作為全功能數(shù)據(jù)和建模服務(wù)開發(fā),如USGS地理數(shù)據(jù)門戶網(wǎng)站。這些網(wǎng)絡(luò)應(yīng)用程序涉及生態(tài)學(xué)、地質(zhì)學(xué)、氣象學(xué)、測(cè)繪學(xué)乃至于火星表面信息處理等諸多領(lǐng)域。此外,綜述中的WebGIS應(yīng)用至少包含一個(gè)FOSS軟件組件,大多數(shù)采用多個(gè)FOSS項(xiàng)目來滿足各種空間數(shù)據(jù)操作和管理的需求。本章將按先前劃分的類別,對(duì)比分析FOSS4G程序并剖析它們的技術(shù)優(yōu)勢(shì)。
在本綜述的WebGIS應(yīng)用程序中,有19個(gè)使用了帶有空間數(shù)據(jù)擴(kuò)展的SQL數(shù)據(jù)庫。其中,PostGIS因?yàn)槠涔δ苋?,并發(fā)訪問能力強(qiáng)等特性在空間數(shù)據(jù)庫應(yīng)用中占有優(yōu)勢(shì),是絕大多數(shù)WebGIS應(yīng)用開發(fā)的首選。SpatiaLite因?yàn)镾QLite對(duì)于Web環(huán)境的支持較弱,因此使用率較低。MySQL在一般網(wǎng)絡(luò)應(yīng)用開發(fā)中的使用率較高,但目前在WebGIS應(yīng)用開發(fā)中使用較少。
PostGIS的優(yōu)勢(shì)在于:PostGIS對(duì)柵格數(shù)據(jù)具有廣泛的支持,而SpatialLite和MySQL Spatial則不支持柵格數(shù)據(jù)。PostGIS提供了超過400個(gè)空間數(shù)據(jù)操作函數(shù),可以對(duì)柵格和矢量數(shù)據(jù)執(zhí)行空間分析;而MySQL Spatial的空間函數(shù)庫只有大約90個(gè)函數(shù)。PostGIS支持各類空間坐標(biāo)參考系統(tǒng),而SpatialLite和MySQL Spatial的空間分析函數(shù)忽略空間參考,使用歐氏平面參與空間數(shù)據(jù)分析,降低了數(shù)據(jù)處理的精度。雖然當(dāng)前PostGIS相較于其他空間數(shù)據(jù)庫具有一定優(yōu)勢(shì),但隨著地理信息系統(tǒng)發(fā)展,MySQL Spatial可能會(huì)成為PostGIS的競(jìng)爭(zhēng)對(duì)手,因?yàn)樗鳛榛ヂ?lián)網(wǎng)應(yīng)用的標(biāo)準(zhǔn)數(shù)據(jù)庫管理系統(tǒng)擁有龐大的用戶基礎(chǔ)。表6總結(jié)了文中所列空間數(shù)據(jù)庫及其特點(diǎn)。
表6 空間數(shù)據(jù)庫主要特征比較Table 6 Comparison of notable features of spatial databases
在綜述的WebGIS應(yīng)用中,有23個(gè)使用空間數(shù)據(jù)發(fā)布軟件。其中MapServer和GeoServer應(yīng)用數(shù)目相差無幾,均高于deegree和Geomajas GWT Server。比較來看,GeoServer和deegree提供了Web頁面用于在服務(wù)器上做服務(wù)發(fā)布和數(shù)據(jù)配置,比MapServer基于文件的配置更加友好,操作更加直觀。然而,MapServer允許開發(fā)人員通過MapScript在不同的編程環(huán)境中以編程方式配置,并且MapServer支持PHP、Python、Perl、Ruby、Java和.NET等多種語言。而GeoServer和deegree卻僅可通過REST API配置。在性能方面,MapServer憑借C語言的開發(fā)基礎(chǔ),性能略優(yōu)于GeoServer和deegree。在配置環(huán)境方面,Geomajas和degree配置較為復(fù)雜,需要有一定的開發(fā)經(jīng)驗(yàn)才能定制界面或功能。上述四個(gè)軟件中,degree的可視化和編輯能力最為有限,但如果用其分發(fā)數(shù)據(jù),使之成為像GeoNetwork那樣的目錄服務(wù),它仍是一個(gè)可用工具。表7總結(jié)了文中所列空間數(shù)據(jù)發(fā)布軟件及其特點(diǎn)。
表7 空間數(shù)據(jù)發(fā)布軟件主要特征比較Table 7 Comparison of notable features of spatial data publishing software
在綜述的WebGIS應(yīng)用程序中,有32個(gè)應(yīng)用使用制圖與可視化軟件。其中,OpenLayers憑借其優(yōu)秀的前端渲染能力成為應(yīng)用制圖與可視化軟件開發(fā)的首選。Google Earth使用率高主要源自于Google地圖服務(wù)的強(qiáng)大支持。且與OpenLayers和Leaflet相比,Google Earth具有提供三維可視化的優(yōu)勢(shì)。但在支持的數(shù)據(jù)格式方面,Google Earth僅限于KML或JavaScript API的數(shù)據(jù)。而OpenLayers和Leaflet則支持多種格式,包括KML、GML、GeoJSON、OGC制圖服務(wù)(如WMS和WFS)等。另外,OpenLayers、Leaflet和Google Earth還允許用戶在地圖上以繪圖的方式進(jìn)行交互式輸入。QGIS作為FOSS客戶端程序,實(shí)現(xiàn)了OGC的各項(xiàng)服務(wù),并依托豐富的開源類庫,實(shí)現(xiàn)了媲美ArcGIS的功能,其QGIS Server插件可以方便地發(fā)布用戶數(shù)據(jù),在制圖與可視化方面表現(xiàn)出色。表8總結(jié)了文中所列制圖與可視化軟件及其特點(diǎn)。
表8 制圖與可視化軟件主要特征比較Table 8 Comparison of notable features of mapping libraries
在綜述的WebGIS應(yīng)用程序中,有16個(gè)使用空間分析軟件。其中,52°North WPS安裝簡(jiǎn)單配置容易,提供了大多數(shù)“開箱即用”的分析功能。它能連接Sextante和ArcGIS Server地理處理類庫,并可調(diào)用Python、R及Java編寫的自定義數(shù)據(jù)分析腳本,因此在開源WebGIS開發(fā)中應(yīng)用較高。而PyWPS安裝配置過程復(fù)雜,有必須安裝的依賴項(xiàng),且僅支持用Python和R編寫的進(jìn)程,實(shí)際開發(fā)中應(yīng)用較少。ZOO-Project實(shí)現(xiàn)了以上二者的大部分功能,且相較于以上兩者,率先支持WPS 2.0標(biāo)準(zhǔn),雖然當(dāng)前應(yīng)用率不如前兩者高,但其強(qiáng)大的兼容性可能會(huì)使其成為未來網(wǎng)絡(luò)空間分析軟件的主流??臻g分析軟件及主要特點(diǎn)總結(jié)如表9。
表9 網(wǎng)絡(luò)空間分析軟件主要特征比較Table 9 Comparison of notable features of spatial analysis software
GIS開發(fā)采用的軟件比較混雜,但開發(fā)語言相對(duì)集中。在文中總結(jié)的26個(gè)WebGIS開發(fā)項(xiàng)目中,Java是WebGIS開發(fā)的首選。原因主要有:一是實(shí)現(xiàn)OGC標(biāo)準(zhǔn)的許多軟件由Java實(shí)現(xiàn),如GeoServer、deegree、52°North WPS等。二是許多成熟的GIS開發(fā)框架均可與Java集成,如GeoTools和JTS Topology Suite等。PHP是當(dāng)前最流行的網(wǎng)絡(luò)開發(fā)語言,是WebGIS應(yīng)用開發(fā)的第二選擇,有著巨大的群眾基礎(chǔ)。此外,Python也是WebGIS開發(fā)者的常見選擇。Python開發(fā)社區(qū)提供了豐富地理數(shù)據(jù)處理開發(fā)包,方便用戶按需開發(fā)。
大多數(shù)Web開發(fā)框架都提供了網(wǎng)絡(luò)開發(fā)的基本功能,如用戶管理、數(shù)據(jù)庫交互、創(chuàng)建動(dòng)態(tài)HTML和文件上傳處理等。WebGIS開發(fā)軟件之間的主要區(qū)別在于Web開發(fā)框架解決每個(gè)開發(fā)任務(wù)的方法。比如,Drupal和CKAN提供了網(wǎng)絡(luò)用戶管理系統(tǒng)原型,可以實(shí)現(xiàn)登錄、注銷、忘記密碼和用戶個(gè)人資料頁面等功能。Django也提供了一個(gè)用戶管理系統(tǒng)原型,但是創(chuàng)建登錄、注銷和用戶配置文件網(wǎng)頁等任務(wù)都需要開發(fā)者二次開發(fā)。以上兩種方法各有優(yōu)劣,前者基礎(chǔ)功能較多開發(fā)方便,定制能力弱;后者功能較少,需要靠外部模塊集成開發(fā)額外功能,但定制能力強(qiáng)。在Web開發(fā)時(shí),框架的選擇主要取決于WebGIS項(xiàng)目的需求、項(xiàng)目復(fù)雜度及開發(fā)人員的偏好等因素。此外,開發(fā)者在選擇Web開發(fā)框架時(shí)還需考慮開發(fā)團(tuán)隊(duì)編程經(jīng)驗(yàn)、地理數(shù)據(jù)庫支持能力、項(xiàng)目規(guī)模及項(xiàng)目所需功能等,尤其是涉及到網(wǎng)絡(luò)空間分析功能時(shí)更應(yīng)該慎重選擇Web開發(fā)框架。表10總結(jié)了文中涉及的FOSS Web開發(fā)軟件及其主要技術(shù)特點(diǎn)。
表10 WebGIS常用開發(fā)軟件及其主要技術(shù)特點(diǎn)比較Table 10 Comparison of notable features of WebGIS development software
目前,全球97%的軟件開發(fā)者和99%的企業(yè)使用開源軟件,全球70%以上的新立項(xiàng)軟件項(xiàng)目采用開源模式。在開源為軟件工業(yè)帶來變革的同時(shí),也促進(jìn)了WebGIS的發(fā)展,尤其當(dāng)前開發(fā)基本采用Java、PHP等開源語言,幾乎主導(dǎo)了WebGIS應(yīng)用開發(fā)。當(dāng)前國(guó)內(nèi)較為主流的云計(jì)算平臺(tái)(如阿里云、華為云和騰訊云等)都提供PostGIS、MySQL等開源數(shù)據(jù)庫架構(gòu)與開發(fā)業(yè)務(wù)。MapServer和GeoServer是當(dāng)前應(yīng)用最為廣泛的空間數(shù)據(jù)發(fā)布軟件,其充分兼容國(guó)內(nèi)主流的地圖服務(wù)(如天地圖、百度、高德地圖服務(wù)),因而諸多WebGIS應(yīng)用使用其進(jìn)行數(shù)據(jù)發(fā)布和共享。Openlayers、Leaflet等制圖可視化軟件發(fā)展相對(duì)成熟,已廣泛應(yīng)用于移動(dòng)端地圖應(yīng)用中,如高德地圖手機(jī)端APP深度集成Leaflet來實(shí)現(xiàn)地圖可視化。而52°North WPS等基于WPS的空間分析軟件仍處于探索階段,應(yīng)用率不高??梢钥闯?,以FOSS為開源的WebGIS軟件已經(jīng)有效促進(jìn)了國(guó)內(nèi)地理信息產(chǎn)業(yè)發(fā)展。
但就國(guó)內(nèi)當(dāng)前應(yīng)用狀況而言,基于FOSS的國(guó)產(chǎn)WebGIS軟件仍然相對(duì)較少,技術(shù)和應(yīng)用潛力有待進(jìn)一步挖掘。國(guó)內(nèi)針對(duì)開源WebGIS的開發(fā)都旨在解決一些具體應(yīng)用問題,比較典型的應(yīng)用包括:國(guó)家自然保護(hù)區(qū)信息服務(wù)系統(tǒng)NRS,青藏公路凍土災(zāi)害信息系統(tǒng),JUST京東城市時(shí)空數(shù)據(jù)引擎等。這些典型應(yīng)用功能較為單一,可在此基礎(chǔ)上進(jìn)一步深化完善,為各類WebGIS應(yīng)用提供技術(shù)支持。
本文從空間數(shù)據(jù)庫、空間數(shù)據(jù)發(fā)布、制圖與可視化和空間分析等方面對(duì)當(dāng)前公開發(fā)表的85個(gè)開源WebGIS應(yīng)用程序進(jìn)行了總結(jié),梳理了開源WebGIS應(yīng)用開發(fā)中常用的FOSS軟件和主要技術(shù)。當(dāng)前國(guó)內(nèi)開源WebGIS開發(fā)還處于早期階段,其技術(shù)和應(yīng)用潛力仍有待進(jìn)一步挖掘,通過本文對(duì)FOSS軟件及技術(shù)進(jìn)行總結(jié)和歸納,可以使更多學(xué)者和技術(shù)人員了解開源WebGIS軟件,促進(jìn)國(guó)內(nèi)開源WebGIS發(fā)展,推動(dòng)國(guó)內(nèi)GIS軟件技術(shù)進(jìn)步,形成可替代的國(guó)產(chǎn)開源WebGIS軟件,促進(jìn)技術(shù)自主創(chuàng)新和技術(shù)獨(dú)立。但也需要看到的是,當(dāng)前FOSS軟件開發(fā)仍有很多技術(shù)問題亟需解決,如各個(gè)不同的FOSS軟件自成體系,把不同軟件充分集成依然是一個(gè)技術(shù)難點(diǎn)。