蔡文文,王少华,,钟耳顺,胡辰璞,刘晓妮
(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