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