蔡文文,王少華,,鐘耳順,胡辰璞,劉曉妮
(1. 北京超圖軟件股份有限公司,北京 100015; 2. 超圖地理信息技術研究所,北京 100015; 3. 中國科學院地理科學與資源研究所,北京 100101)
跨平臺開源桌面GIS軟件的設計與實現
蔡文文1,2,王少華1,2,3,鐘耳順3,胡辰璞1,劉曉妮1
(1. 北京超圖軟件股份有限公司,北京 100015; 2. 超圖地理信息技術研究所,北京 100015; 3. 中國科學院地理科學與資源研究所,北京 100101)
GIS軟件開源可有效促進GIS軟件技術的發展,這也是GIS技術發展的趨勢之一。目前,國內還沒有跨平臺的專業桌面GIS開源軟件。本文研究并實現了跨平臺的開源桌面GIS軟件-SuperMap iDesktop Cross,采用C++語言實現了GIS功能內核,同時基于OSGi框架,采用Java語言實現了用戶界面開發。該軟件具備數據管理、數據處理、三維可視化、空間分析等GIS功能,同時提供應用程序編程接口(API),支持定制開發。這將使專業桌面GIS軟件廣泛應用于包括Linux在內的更廣泛的操作系統,使更多的人參與到GIS軟件技術的發展中來,共同推動國產GIS軟件技術的發展。
開源;跨平臺;GIS;桌面軟件;C++;Java
自1997年Eric Raymond提出發展開源軟件的集市模型以來[1],開源軟件迅速發展,并逐漸進入GIS領域。開源GIS軟件以源碼共享和合作發展為理念,在特定的版權許可下,軟件的版權所有人允許任何人以任何目的下載、學習、更改或分發軟件的源代碼。
開源GIS軟件除開源GIS桌面軟件之外,還涉及許多與地理空間數據處理有關的軟件技術,包括:①軟件開發框架,如采用Python腳本語言開發的GIScript,是用于時空大數據處理的框架[2];②空間數據庫,如SpatiaLite,它是開源數據庫SQLite的空間擴展,支持地理空間查詢[3];③GIS功能庫(Libraries),如已廣泛應用于不同操作系統、不同平臺、不同終端的柵格空間數據轉換庫GDAL[4];④空間參考(地圖投影)工具,如Proj.4[5]等。這些軟件技術可歸結為桌面GIS軟件功能的一部分。因此,發展開源桌面GIS軟件技術難度較大。
開源GIS桌面軟件依據采用的開發語言的不同,大體可以分為3類:①以C語言為實現語言,C語言開發的GIS軟件具有計算效率高的特點,如GRASS、QGIS[6-7]等,后者支持創建、編輯、可視化和分析地理空間信息,可運行于Windows、Mac、Linux操作系統;②以Java為開發語言,如uDig[8]等,它支持數據的獲取、編輯和可視化,能夠實現復雜的空間操作功能;③利用.NET語言開發,如MapWindow GIS[9]等。
GIS軟件代碼的開源,既降低了使用者的開發成本,又可使其借助源碼深入研究軟件算法機理,擴展軟件功能,滿足個性化的應用需求。因此,開源GIS軟件具有強大的生命力,GIS軟件代碼開源成為適應與促進GIS技術發展趨勢的選擇。但目前國際上主流的開源桌面GIS軟件[6-9]沒有一個是我國自主研發的,不利于我國GIS軟件技術的發展。
此外,當前GIS軟件技術向著滿足應用與需求的多樣性、設備與操作系統的多樣性、開放性、云特性等幾個方面發展。這就要求GIS軟件需要具備跨平臺特征。
因此,本文將設計和實現國內第一個專業的開源桌面GIS軟件SuperMap iDesktop Cross,即采用C++語言開發統一GIS功能內核,在保證軟件高性能的同時,使其具備跨平臺特征;采用適合Linux操作系統的Java語言開發軟件用戶界面,大大降低Linux上軟件界面的開發難度,同時遵循OSGi動態模型框架標準;采用Java本地接口(java native interface,JNI)技術,為GIS功能內核封裝應用程序編程接口(application programming interface,API)。使用者可以借助API進行定制開發,幫助完善目前國內唯一的跨平臺開源桌面GIS軟件。
本文設計和實現的跨平臺開源桌面GIS軟件不僅支持跨平臺的桌面GIS應用與開發,還支持各類地理空間數據和多種空間數據庫,并且提供地理空間數據處理與管理、二三維一體化、空間分析、制圖與可視化等GIS功能,支持定制開發(如圖1所示)。其源碼已于2015年9月開源(http:∥git.oschina.net/supermap/SuperMap-iDesktop-Cross),借助Git進行分布式版本管理。

圖1 跨平臺開源桌面GIS軟件系統架構
1.1 軟件實現
C++和Java都是具備成熟跨平臺特征的高級語言[10]。考慮到GIS應用的復雜性及其對GIS軟件性能的高要求,本研究首先選用C++語言,在Windows操作系統上實現GIS功能(即開發GIS的C++組件),保證GIS軟件的高性能。同時,借助自動化腳本和持續集成技術,將在Windows上編寫的組件代碼,交由持續集成系統自動觸發不同指令集架構(X86、ARM、POWER、MIPS等)的CPU平臺下的代碼編譯與測試,使得GIS C++組件能在不同架構CPU平臺上正常工作,保障軟件的跨平臺特征。此外,編寫了大量的基礎庫,如同時支持大小端CPU和多國語言的字符串類型(UGString),支持不同平臺下數據高效存儲與管理的空間數據庫引擎(SuperMap SDX+)等,減少了不同架構CPU平臺對第三方的依賴。
在上述工作的基礎上,利用JNI技術對GIS的C++組件進行封裝,實現可通過Java語言調用的API;最后基于Java Swing圖形界面技術實現標準工具條方式的界面布局,完成桌面GIS的功能展現和用戶交互體驗(如圖2所示)。

圖2 SuperMap iDesktop Cross的用戶界面
1.2 軟件功能
本文開發的跨平臺桌面GIS軟件,具備地理空間數據管理、數據處理、空間分析、空間可視化、二三維一體化等功能(如圖1所示)。
在數據管理方面,它支持常用的空間數據及其屬性數據的管理,解決了Linux操作系統的數據生產問題;可導入多種GIS/非GIS數據格式,并可將不同類型的數據導出為相應的GIS數據格式。
基于該軟件可實現讀取和存儲各種類型的地理空間數據,包括矢量數據、影像數據、三維數據、傾斜攝影數據等;也可訪問百度地圖、OpenStreet Maps、SuperMap Online、OGC服務等,節約數據加工成本。對不同類型不同來源的地理空間數據,可實現多種空間數據引擎存儲、創建或讀取,包括SQL Plus、Oracle Spatial、DB2、KingBase等,使得數據存儲的選擇多樣化。
在數據處理方面,基于該軟件可實現繪制、復制、粘貼點、線、面等各類對象;可對地理空間數據設置投影或進行投影轉換,滿足不同投影下數據的處理、分析和可視化需求;可對矢量數據創建空間索引,對柵格數據創建影像金字塔,提高數據的瀏覽效率;還可對矢量數據進行拓撲檢查、拓撲構面等拓撲處理,使數據符合使用規則,保證數據質量,滿足后續應用(如圖3所示)。

圖3 SuperMap iDesktop Cross的拓撲功能
利用本文研發的軟件進行地理空間數據可視化時,可對點、線、面、文本進行風格渲染和專題表達,制作如單值、范圍分段、標簽等專題圖;可對不同圖層設置不同的可見比例尺,指定顯示規則,保障地圖顯示的美觀性,并提高顯示效率;可將已配置好的地圖保存為地圖模板,方便將模板應用于其他地圖。
該軟件還具備二三維一體化GIS功能,實現二維數據在三維場景中顯示,并進行風格設置;可新建三維場景,包括加載場景目標、設置場景亮度模式、實現多源數據的顯示和瀏覽;通過對場景圖層設置可見高度范圍,可提升場景的瀏覽效率。
1.3 軟件定制開發
OSGi被認為是面向Java語言的動態模型系統。從軟件開發的角度而言,OSGi具有組件化解耦合和Equinox統一調度兩個突出的優點(如圖4所示)。即可在不重啟容器的情況下,動態安裝、卸載、啟動和停止軟件中的不同模塊;對軟件中的某一特定模塊,容器可同時運行該模塊的多個版本。本文采用OSGi技術框架,遵循OSGi國際擴展標準,借助Java語言實現SuperMap iDesktop Cross的二次開發框架。
本文設計實現的二次開發框架包含13個Java API接口,供二次開發接入和擴展。這些接口按照功能的不同,可分為6類:①GIS的C++內核接口;②數據轉換接口、數據編輯接口、數據處理接口、數據拓撲接口、數據瀏覽與可視化接口;③地圖編輯接口、地圖瀏覽和可視化接口;④表格瀏覽與可視化接口;⑤空間分析接口;⑥輔助接口、控制接口、框架接口。使用者可根據自身需求,在具備良好擴展性的OSGi框架下,利用這些API接口,實現更多新的GIS功能模塊。

圖4 采用OSGi框架的價值
筆者簡單比較了不同操作系統下跨平臺桌面GIS軟件的性能。在國產Linux操作系統(如優麒麟)下,它的界面、功能和操作方式,如地圖瀏覽(縮放、平移)、地圖效果展示等,與在Windows操作系統下是一致的。這表明該軟件在不同操作系統下,用戶使用感受差別不大。這對于需要從Windows操作系統遷移到國產Linux操作系統的GIS桌面軟件使用者尤其重要,不會產生新的軟件學習成本。
除了使用感受差別不大之外,桌面GIS軟件高性能的保持是更重要的方面。以二三維一體化為例,這一功能在不同操作系統下性能相似,如圖5所示。

圖5 SuperMap iDesktop Cross的二三維一體化GIS
根據開發語言本身的特點,筆者比較了SuperMap iDesktop Cross與QGIS、uDig的異同。通過收集資料表明,QGIS由于采用C++語言編寫,C++編譯結果為目標機器指令,沒有中間層帶來的性能損耗,因此QGIS性能高。uDig采用Java編譯編寫,Java編譯結果為面向Java虛擬機(Java Virtual Machine,JVM)的字節碼,運行時由JVM解析執行。JVM作為源碼和目標機器指令之間的中間層,其存在引起性能損耗。本文采用C++語言開發GIS功能內核,并封裝為Java接口,因此開發的GIS軟件不僅具備高性能,還具備QGIS、uDig所不具備的三維GIS功能(見表1)。

表1 SuperMap iDesktop Cross、QGIS、uDig功能比較
隨著IT技術的發展,Linux操作系統在越來越多的領域獲得人們的青睞,GIS軟件逐漸向Linux靠攏和融入。但我國一直缺乏能運行于Linux操作系統的專業桌面GIS軟件,使得在Linux上進行地理空間數據的處理、制圖和空間分析等GIS功能難以實現。
本文設計和實現了國內第一個能夠跨平臺運行的專業GIS桌面軟件Supermap iDesktop Cross,填補了這一空白,使得研究者可在Linux上進行全功能的地理空間數據處理與操作。采用Java語言開發了用戶交互界面,基于C++語言開發的GIS功能內核,保障了不同操作系統下GIS軟件的高性能。這對數據密集型、計算密集型的GIS應用非常重要。
本文研究設計和實現的開源桌面GIS軟件具備跨平臺特性,不僅包括不同操作系統,還包括不同架構(X86、ARM等)的CPU指令集和多種國產芯片(龍芯3號、飛騰FT-1500A、安騰等)。該軟件是SuperMap GIS產品體系中的桌面GIS軟件,SuperMap GIS產品體系是唯一全系列產品支持國產CPU的大型GIS平臺軟件。
長期以來,桌面GIS軟件都是作為地理空間數據處理和制圖應用的工具軟件,這類軟件發展到現在,已經由純粹的工具軟件發展為可擴展的開發平臺。本文開發的開源桌面GIS軟件的API基于Java語言開發,為Java技術人員提供了GIS桌面軟件擴展開發的新領域。但它的擴展開發絕不局限于此,筆者已將其Java代碼在開源社區(包括開源中國OsChina)上全部開源,使用者除可進行擴展開發外,還可進行深度修改和定制。
跨平臺開源桌面GIS軟件的研發與實現,使得人們不僅可以在包括Linux在內的更廣泛的操作系統中使用GIS桌面軟件,還可以了解其內部運行機理,甚至可親自參與其開發和改進過程,共同推動我國GIS軟件技術的發展。
[1] RAYMOND E.The Cathedral and the Bazaar[J]. Knowledge Technology amp; Policy,1999,12(3):23-49.
[2] ZHANG M,YUE P,GUO X. GIScript: Towards an Interoperable Geospatial Scripting Language for GIS Programming[C]∥Proceedings of the Third International Conference on Agro-Geoinformatics. Beijing: IEEE,2014.
[3] FURIERI A. SpatiaLite,Un Innovativo Spatial DBMS[J]. GEOmedia,2010,14(3): 48-52.
[4] GDAL-Geospatial Data Abstraction Library[EB/OL].2013-08-30[2016-02-03]. http:∥www.gdal.org/.
[5] WARMERDAM F,FRASER B,BRUCE C,et al. PROJ. 4-cartographic Projections Library[EB/OL].1993-03-26 [2016-02-03].http:∥github.com/OSGeo/proj.4.
[6] NETELER M,MITASOVA H. Open Source GIS: a GRASS GIS Approach[M]. New York: Springer Science amp; Business Media,2013: 53-82.
[7] GRAY J. Quantum GIS: the Open-source Geographic Information System[J]. Linux Journal,2008(172): 8.
[8] RAMSEY P. User Friendly Desktop Internet GIS (uDig) for OpenGIS Spatial Data Infrastructures[EB/OL]. 2003-12-07 [2016-02-03]. http:∥udig.refractions.net/files/docs/.
[9] AMES D P,MICHAELIS C,DUNSFORD T. Introducing the MapWindow GIS Project[J]. OSGeo Journal,2007,2(1): 1-5.
[10] 劉愛龍,杜清運,陳濤,等.跨平臺嵌入式地圖可視化機制研究[J]. 測繪通報,2014(12): 51-55.
DesignandImplementationofaNewCross-platformOpenSourceGISDesktopSoftware
CAI Wenwen1,2,WANG Shaohua1,2,3,ZHONG Ershun3,HU Chenpu1,LIU Xiaoni1
(1. SuperMap Software Co. Ltd., Institution, Beijing 100015, China;2. SuperMap Research Institute of Geographic Information Technology, Beijing 100015, China; 3. Institute of Geographic Sciences and Nature Resources Research, CAS, Beijing 100101, China)
Requirements for open source and cross platform GIS software are increasing in China. But there is still no open-source cross-platform professional desktop GIS software at present. To meet the requirements, SuperMap iDesktop Cross, an open source and cross platform desktop GIS software, is designed and implemented based on OSGi framework. It consists of GIS core library developed by C++ programming language and user interface developed by Java programming language. SuperMap iDesktop Cross provides functions of data management, data processing, 3D visualization, spatial analysis and API for customization development. It can be used not only on windows operating system for personal computers, but also on Linux and UNIX for servers and high-end servers, which will broaden and deepen the application and development of professional GIS software.
open source; cross platform; GIS; desktop software; C++; Java
P208
A
0494-0911(2017)01-0122-04
蔡文文,王少華,鐘耳順,等.跨平臺開源桌面GIS軟件的設計與實現[J].測繪通報,2017(1):122-125.
10.13474/j.cnki.11-2246.2017.0027.
2016-02-18
北京市科技專項(Z151100003615012;Z141101004414011);中國科學院重點部署項目(KZZD-EW-07-01-001);國家科技支撐計劃(2013BAC03B00);資源與環境信息系統國家重點實驗室自主研究項目(088RAC00YA);測繪公益項目(201512015)
蔡文文(1986—),女,博士,主要研究方向為地理信息系統軟件技術。E-mail:caiwenwen_bnu@163.com
王少華。E-mail:wangshaohua@supermap.com