關于WebGIS開源解決方案的探討
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的使用量趨勢圖。
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的界面:
uDig的界面:
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/p/4187679.html