跨平台开源桌面 GIS 软件的设计与实现

蔡文文,王少华,钟耳顺,胡辰璞,刘晓妮

( 1. 北京超图软件股份有限公司,北京 100015; 2. 超图地理信息技术研究所,北京 100015;3. 中国科学院地理科学与资源研究所,北京 100101)

论文来源:《测绘通报》2017年 第1期

摘要:GIS 软件开源可有效促进 GIS 软件技术的发展,这也是 GIS 技术发展的趋势之一。目前,国内还没有跨平台的专业桌面 GIS开源软件。本文研究并实现了跨平台的开源桌面 GIS 软件-SuperMap iDesktop Cross,采用 C++语言实现了 GIS 功能内核,同时基于OSGi 框架,采用 Java 语言实现了用户界面开发。

关键词: 开源,跨平台,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 inter-face,JNI) 技术,为 GIS 功能内核封装应用程序编程接口( application programming interface,API) 。使用者可以借助 API 进行定制开发,帮助完善目前国内唯一的跨平台开源桌面 GIS 软件。

1 跨平台桌面 GIS 软件系统架构

本文设计和实现的跨平台开源桌面 GIS 软件不仅支持跨平台的桌面 GIS 应用与开发,还支持各类地理空间数据和多种空间数据库,并且提供地理空间数据处理与管理、二三维一体化、空间分析、制图与可视化等 GIS 功能,支持定制开发 ( 如图 1 所示) 。其源码已于 2015 年 9 月开源( https://gitee.com/supermap/SuperMap-iDesktop-Cross) ,借助Git 进行分布式版本管理。

更多内容请点击下方的PDF下载