天天看點

關于WebGIS開源解決方案的探讨

 文章版權由作者李曉晖和部落格園共有,若轉載請于明顯處标明出處:http://www.cnblogs.com/naaoveGIS/。

1.背景

公司目前的多數項目采用的是ArcGIS産品+Oracle+WebLogic/Tomcat/APUSIC/WebShpere這樣的架構。由于公司從事的是政府項目,甲方機關普遍均采購有以上産品,是以很多時候忽略購買以上産品所需要的費用。并且很多項目的推廣,ARCGIS、IBM還有聯通或者移動是公司的合作夥伴,涉及到商務問題,對開源的需求并不是很大。再則,政府項目一般側重的是系統的穩定和易維護,是以他們在基礎建設上投資比較大方。

不過随着政府經費的控制趨于嚴格,管理者水準的提高,對相關軟體的購買開始謹慎起來。目前,公司越來越多的項目現場是沒有ArcGIS産品的,雖然,我們已能利用GeoServer來代替ArcGIS Server使用,也推出了相應的産品,并且在很多個項目中已經運用,但是仍然是有不足的。

2.目前公司GIS開源項目的不足——沒有全套的開源解決方案

A.底圖的整體處理還是用ArcGIS Desktop來進行的配置,然後将配置好的底圖用ArcGIS切圖。

B.雖然利用本地瓦片檔案作為底圖,繞開了地圖的線上服務,但是就切圖工具來說,雖然公司有自己的切圖軟體,但是普遍采用的還是ArcGIS的工具切好圖了再給現場實施。

C.涉及到空間資料的管理時,依然是用的ArcGIS Catalog+SDE導入到Oracle資料庫中。不涉及到大量空間資料庫管理時,是采用的直接通過GeoServer來修改shp資料。并沒有統一管理,也不利于其他業務組擷取資料。

D.目前基于GeoServer的項目,空間分析能力不強。部分功能已經探索出來,但是還沒有在專門的空間分析産品上做出GeoServer版本。

3.WebGIS通用型全套開源解決方案

根據開發環境,可以将主流的WebGIS開源解決方案分成兩派,一派是C/C++,一派是java。

C/C++的解決方案為:Mapserver(伺服器)+QGIS(桌面軟體)+Tomcat(中間件)+PostGIS|MySQL空間擴充(資料庫)+Openlayers(JS)/ openscale (FLex)(浏覽器用戶端)

JavaEE的解決方案為:Geoserver(伺服器)+uDig(桌面軟體)+Tomact(中間件)+PostGIS|MySQL空間擴充(資料庫)+Openlayers(JS)/ openscale (FLex)(浏覽器用戶端)

3.1MapServer和GeoServer的總體對比

功能上:MapServer弱于GeoServer,QGIS要強于UDIG。

效率上:Mapserver對WMS(Web Map service)的支援更為高效,而Geoserver則更擅長于結合WFS(Web Feature service)規範的屬性查詢。

以下是來自于http://www.cnblogs.com/mazhenyu/archive/2013/03/16/2963177.html統計的MapServer和GeoServer的使用量趨勢圖。

關于WebGIS開源解決方案的探讨

3.1.1 MapServer的特點

提供兩種工作方式,CGI方式(适用于CGI、AJAX、FLEX開發人員)和MapScript方式(适用于Php、Java、 C#、Python開發人員)。以原生CGI方式效率最高,配合TileCache,可以快速生成大範圍的地圖瓦片資料。比較基于.Net和J2EE的商 業或開源平台,MapServer更适合高負荷的大型網際網路地圖應用。MapServer 是基于C寫的地圖服務軟體,比用JAVA寫的GeoServer速度要快。而且 MapServer 曆史要比 GeoServer 悠久,甚至MapServer 的性能與商業的 ArcIMS 的功能可以娉美。

3.1.2 GeoServer的特點

GeoServer(http://geoserver.org/)是一個符合J2EE規範,且實作了WCS、WMS及WFS規格,支援TransactionWFS(WFS-T),其技術核心是整合了頗負盛名的JavaGISolkit--GeoTools。對于空間資訊存儲,它支援ESRI Shapefile及PostGIS、Oracle、ArcSDE等空間資料庫,輸出的GML檔案滿足GML2.1的要求。由于它是純Java的,是以更适合于複雜的環境要求,而且由于它的開源,是以開發組織可以基于GeoServer靈活實作特定的目标要求,而這些都是商業GIS元件所缺乏的。GeoServer作為一個純粹的Java實作,被部署在應用伺服器中,簡單的如Tomcat等;它的WMS和WFS元件響應來自于浏覽器或uDig的請求,通路配置的空間資料庫,如PostGIS、OracleSpatial等,産生地圖和GML文檔傳輸至用戶端。

具有以下優點: 1) 用 java 語言編寫、标準的 J2EE 架構、基于 ser vlet 和 STRUTS 架構、 支援高效的 Spring 架構開發; 2) 相容 WMS 和 WFS 特性、支援 WFS-T 規範; 3) 高效的資料庫支援 PostGIS、ShapeFile、ArcSDE,Oracle、MySQL 等; 4) 支援上百種投影; 5) 能夠将網絡地圖輸出為 jpeg、gif、png 等格式;

3.2QGIS和uDig的比較

A.界面:QGIS優于uDig。

B.空間分析能力:QGIS優于uDig。

C.發展趨勢上:uDig優于QGIS。

D.操作上:uDig優于QGIS。

E.支援的資料源上:uDig優于QGIS。

QGIS的界面:

關于WebGIS開源解決方案的探讨

uDig的界面:

關于WebGIS開源解決方案的探讨

3.3 PostGIS和MySQL空間擴充的對比

根據http://www.cnblogs.com/shanyou/p/3256906.html所提供的觀點,下面将其截取總結。

3.3.1 PostGIS的特點

A.PostgreSQL 的穩定性極強。

B. 任何系統都有它的性能極限,在高并發讀寫,負載逼近極限下,PG的性能名額仍可以維持雙曲線甚至對數曲線,到頂峰之後不再下降,而 MySQL 明顯出現一個波峰後下滑。

C. PostGIS多年來在 GIS 領域處于優勢地位,因為它有豐富的幾何類型,實際上不止幾何類型,PG有大量字典、數組、bitmap 等資料類型,相比之下MySQL就差很多,instagram就是因為PostGIDS的空間資料庫擴充POSTGIS遠遠強于MySQL的my spatial而采用PGSQL的。

D. 對于WEB應用來說,複制的特性很重要,mysql到現在也是異步複制,pgsql可以做到同步,異步,半同步複制。還有MySQL的同步是基于binlog複制,類似oracle golden gate,是基于stream的複制,做到同步很困難,這種方式更加适合異地複制,pgsql的複制基于wal,可以做到同步複制。同時,pgsql還提供stream複制。

3.3.2mySql空間擴充的特點

A.MySQL有一些實用的運維支援,如 slow-query.log ,這個PostGIS肯定可以定制出來,但是如果可以配置使用就更好了。

B. MySQL的innodb引擎可以充分優化利用系統所有記憶體,超大記憶體下PostGIS對記憶體使用的不那麼充分,

C.MySQL的複制可以用多級從庫,但是在9.2之前,PostgreSQL不能用從庫帶從庫。

D.從測試結果上看,MySQL5.5的性能提升很大,單機性能強于PostgreSQL,5.6應該會強更多.

E.對于web應用來說, MySQL5.6 的内置MC API功能很好用,PostgreSQL差一些。

4.适合公司的解決方案

4.1原因

公司的背景均由Java編寫,是以選擇肯定更偏向于基于JavaEE的解決方案。且我們GIS組已經在GeoServer的開源架構上進行了相關開發,比如最短路徑服務的開發和道路優化的開發等,并且已經能很好的利用GeoServer提供的WMS服務和WFS服務來進行替AGS化,而且還編寫了面向GeoServer的項目配置和釋出工具。

同時,公司的V14GIS産品前端采用的是ArcGIS_JS,并且已經對其方法進行了大量封裝和整合。

是以,适合目前公司的GIS開源化的解決方案應該是首選:

Geoserver(伺服器)+uDig(桌面軟體)+Tomact(中間件)+PostGIS(資料庫)+ArcGIS_JS (JS)。

對于老項目,隻需要将js部分換成我們已有的基于Flex的産品即可。

4.2具體解決方案

A.利用PostGIS将shp資料入庫管理。

B.利用uDig連接配接PostGIS後進行配圖。uDig可以生成sld檔案,以及釋出到GeoServer的樣式服務上去,進而實作對服務的配圖控制。

C.利用GeoServer來代替ArcGIS Server。通過WMS服務可以實作類似于AGS中的export出圖方式,實作部件圖層的動态出圖。通過WFS服務能實作與類似于AGS中的Query服務。通過WFS服務也可以實作類似于AGS中的FeatureServer服務,進而進行圖層的編輯。同時,通過WFS服務還能實作類似于AGS中的GeometryServer服務,實作比如union等功能。

D. 利用GeoWebCache插件,可以實作類似于AGS中的cache功能。同時支援切圖。

E.利用GeoTools,可以在背景開發複雜的空間分析和相關操作的功能。

5.亟待解決的問題

5.1技術問題

A.需要驗證GeoWebCache的配置和切圖功能。以及對GB以上資料的切圖效果。

B.需要驗證PostGIS對中文的支援(目前測試是支援的)。以及大資料入庫時的穩定性。

C.配圖的易用性。目前已測試uDig可以配圖生成sld,且能配置比較複雜的圖。但是如何能直接将所配的圖層釋出到GeoServer後,讓此sld自動與該圖層關聯,還沒測試。後期還需考慮是否有必要開發一個更簡易的配圖及釋出工具。

D.基于GeoServer的空間分析功能還沒有驗證,目前隻開發了部分。

5.2業務問題

如果GIS方面徹底換成開源方案,MIS、工作流、統計、手機等等業務如何和GIS業務結合?

目前公司對固定業務基本采用同一标準庫。不同的業務使用标準庫中的不同使用者空間。有互動的部分的表共用一個業務使用者空間。假如我們GIS部分全部采用了開源方案,甚至空間資料的管理都采用開源的資料庫來進行管理。如何做到和其他業務的整合,也是一個需要思考和通力解決的地方。

我個人覺得,是可以将GIS的空間資料用開源資料庫存放,GIS的業務表還是放入到主版本的資料庫中,應該是可以解決以上問題的。

但是問題又來了,既然都有主版本所用的資料庫了,比如Oracle,又何必還采用開源資料庫呢。

不過,經過我最近的研究,GeoServer也是支援Oracle中的資料的釋出的,隻是有相關的插件要安裝。同時,也有不通過SDE将空間資料導入Oracle的方法。

但是,這種方案,有個最大的問題就是操作相對複雜。

5.3 項目實施人員的實施難度加大問題

開源項目的部署實施問題,是對工程人員的一個巨大挑戰。同時,維護的難度也會加大。人的問題其實是最大的問題。

而且工程人員的教育訓練所需要的開銷也應該是公司必須考慮的一個方面。

                         -----歡迎轉載,但保留版權,請于明顯處标明出處:http://www.cnblogs.com/naaoveGIS/

                                                                           如果您覺得本文确實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^

                                    

關于WebGIS開源解決方案的探讨