基于ArcEngine与Skyline的二三维联动GIS系统的设计研究
2014-04-29刘杨程朋根
刘杨 程朋根
摘要
二维GIS有成熟的理论与技术,特别是分析能力较好,但对用户来说不够直观。三维GIS在最近几年发展势头迅猛且拥有良好的表达效果,但其分析功能尚待提高。如需结合各自的优点,则需要在同一框架下实现二三维联动。该研究分析了二三维联动GIS开发环境的选择及功能设计思路,基于ArcGIS Engine和Skyline软件实现了二三维联动系统的设计与开发。
关键词二维GIS;三维GIS;二三维联动;GIS系统
中图分类号S127文献标识码A文章编号0517-6611(2014)36-13119-03
AbstractTwoDimensional GIS have mature theory and technology, particularly its good analysis feature. But it lacks the intuitive expression for users. ThreeDimensional GIS, in recent years, have enjoyed rapid development trends and satisfactory expression results, but it needs to be perfected in analysis function. The premise of combining the respective advantages of 2D and 3D GIS is to achieve the two threedimensional linkage in the same framework. This paper discussed and analyzed the interactive technology of 2D GIS and3D GIS first, then designed and developed this system based on ArcGIS Engine and Skyline software.
Key words 2DGIS; 3DGIS; Interaction; GIS system
隨着地理信息系统的发展,地理信息系统的相关应用与人们的联系越发密切。用户已经不再满足最简单的地图制图的相关应用,对多功能集成应用的需求日益强烈。其应用领域也在不断扩展,从专业性较强的国土、规划和交通等领域扩展到公共服务和灾害应急响应等众多与人民们生活息息相关的领域。
经过几十年的发展,二维地理信息系统凭借着成熟的理论与技术开发出许多种相关产品并被广大用户所接受。但其表达抽象的缺点也越发凸显,已无法完全满足现阶段用户对地理信息系统的要求。三维地理信息的出现满足了用户对第三维度的需求,能够较为真实的描述三维地理对象。近年来三维地理信息系统研究发展迅猛,许多公司也推出了相应的三维产品。但其分析能力欠佳的劣势还是使单一的三维地理信息系统表现的不够那么完美。因此如何在同一框架下实现二三维一体化即实现二三维联动技术已经成为当今研究的热门话题。
笔者基于ArcGIS Engine和Skyline软件平台,旨在通过对二三维联动的理论与技术的研究,探讨出一条能够实现二三维联动GIS系统的技术路线,并通过实验实现二三维联动GIS系统的设计,从而证明二三维联动GIS系统的可行性与适用性。结合各自平台的优势,发挥出更大的效能,从而提高了工作效率。
1开发的环境选择
1.1 开发方式的选择
目前GIS开发的产品主要包括商业GIS平台和自定义的GIS系统。市场上常见的商业GIS平台有美国ESRI的ArcGIS和国内中地数码的MapGIS等系列产品。这种商业GIS的开发需要大型团队合作完成,消耗时间较长且需要开发综合的GIS功能,所以不适合小型GIS设计实验。所谓自定义的GIS系统是指用户选择一定的方式开发出能够满足自身需求的GIS系统,如各地信息决策系统的构建。这类GIS系统的方式主要包括独立开发和二次开发。
1.1.1
独立开发。 曹代勇等将OpenGL用于三维模型可视化中并构建了用于三维显示的软件雏形[1]。可是OpenGL只是个底层图形库,如需实现自定义的功能,开发者必须从底层开发,通过编程语言完成一整套GIS系统的开发工作。这种开发方式属于独立开发,其特点在于开发者不依赖任何现有的制式GIS软件,仅根据自身的功能需求独立完成GIS系统的设计开发工作。独立开发的优点在于开发的功能完全满足开发者的要求,但缺点在于开发周期长、难度大。
1.1.2
二次开发。 由于独立开发对开发者的能力及时间要求严格,因此许多开发者选择基于已有的 GIS软件,再根据自身需求对其进行功能扩展。二次开发的方式有两种:一种是利用GIS软件所提供的脚本语言进行二次开发,如MapInfo平台的MapBasic,ArcInfo平台提供的VBA等。这种开发方式的优点在于开发快速,缺点在于脚本语言功能薄弱,效率低下。另一种是基于GIS软件并选用相应的开发工具(VB、C++或C#等)进行二次开发,这种开发方式更为高效。
1.2 二次开发平台的比较
随着三维GIS的发展,国内外都相继推出各种3DGIS相关的软件。国外主流的软件有谷歌公司推出的Google Earth;NASA发布的World Wind;微软公司研发的Virtual Earth3D及美国Skyline公司出品的Skyline系列软件等。国内三维GIS虽然起步较晚,但近几年也推出了多款3DGIS相关软件,包括武大吉奥的GeoGlobe,中地数码的MapGIS-TDE和超图公司的SuperMap等。
这些软件平台各有各的优势,所以基于这些平台也有许多人进行了各种各样的研究。杨志刚基于开源软件World wind对森林防火三维仿真做了一定的研究[2]。其结果总体运行良好,但开源软件都有各自的缺陷,故此次实验不运用。苗作华等分别利用ArcGIS Engine和Vega Prime在三维可视化方面进行对比研究,指出ArcGIS Engine易于搭建程序框架且与传统的二维GIS的兼容性更好[3]。陈鹏等对Skyline和SuperMap6R进行对比分析,得出虽然SuperMap6R开放程度更高,但Skyline在三维可视化运行效率方面表现更好的结论[4]。
考虑到开发难度与周期及综合性能的问题,该研究选择基于ArcGIS Engine和Skyline软件实现二三维联动GIS系统的开发实验。
2 功能设计思路
二维GIS和三维GIS经过多年的发展有着广大的软件受用群体,但也逐渐暴露出各自的不足之处。因此,现阶段用户对地理信息系统相关软件的要求在于用够结合二维GIS和三维GIS各自的特点,最大程度地发挥各自的功能以提高工作效率。
想要实现这一构想,则必须在二维GIS和三维GIS 间建立联系并建立结合系统。结合的原理是通过互响应机制实现二维矢量地图和三维GIS的结合[5],这一机制的实质是通过二维数据和三维场景间的一一映射关系来表达。联动的效果应表现为操作同步和信息一致。例如:当二三维窗口有一方放大或缩小时,另一方相应的放大或缩小;二三维窗口的地物信息要一致且能够进行属性信息的双向查询。
Skyline软件有着强大的信息管理能力和数据显示能力,所以此次实验采用Skyline作为三维场景的开发平台的。由于Skyline旗下产品TerraExplorer Pro提供了众多API接口[6-7],且每个接口都有不同的属性和方法,所以需要熟悉软件所提供的API的属性与方法,这样才能通过编程语言调用接口达到目的。部分接口的介绍如表1所示。
3二三维联动的实现
3.1数据准备
二三维联动的准备工作包括二维地图的制作和三维场景的生成。利用CAD和ArcGIS对二维影像数据进行处理得到二维地图。而三维场景则通过3dsMax和Skyline构建。
目前主流的景观模型建模软件有AutoCAD、Google Sketchup及3dsMax。AutoCAD主要应用于二维制图,在三维建模方面较另两个软件较为逊色。Google Sketchup的优点是界面简单,容易学习。而3dsMax制作的模型真实感更强。该研究实验所用景观模型是通过CAD、3dsMax和Photoshop软件构建的。首先需完成纹理的采集与制作,通过相机采集对象的特征,然后将采集后的照片导入Photoshop编辑处理。再将二维CAD底图文件导入到 3dsMax 中进行三维模型主体制作,模型结构完成后,进行纹理贴图。
实验所用场景文件是利用TerraExplorer Pro打包生成的.fly文件。将矢量数据、地形数据和景观数据导入到TerraExplorer Pro中打包生成场景文件。
3.2联动实现流程
完成准备工作后,通过C#再根据功能需要调用ArcGIS Engine和Skyline的API相关接口,实现二维数据与三维场景间的一一映射从而达到联动效果。二三维联动实现流程图如图1所示。
3.3实现的方法与功能
3.3.1
实现的方法。
TerraExplorer能够将三维窗口、信息窗口和导航窗口作为ActiveX组件嵌入到可视化界面中,此次实验的主要窗口采用ActiveX控件。主要有:三维窗口控件(3D windows),用于显示三维场景;信息树窗口控件(information windows),用于陈列场景中的对象的基本信息;导航图控件(navigation map),用于显示导航地图。
ArcEngine提供了许多控件。此次实验主要采用:制图控件(MapControl),MapControl封装了Map对象,提供了不同的属性和方法,可用于地图的可视化显示;工具栏控件(ToolbarControl),通过Hook将命令对象和伙伴控件联系在一起协同工作。ArcEngine提供了许多命令和工具,这使得有众多相应的功能可供添加选择,此次试验在工具栏中添加了平移、放大、缩小等按钮。
3.3.2
主要实现功能。
(1)观测同步。用户在二维地图中选取一个地物时,在相应的三维场景中跳到对应的位置;在移动三维场景中的观测点时,二维地图也移动到相应位置。
(2)瀏览同步。用户在三维场景漫游时,二维地图移动对应位置,反之亦然。当二维地图放大或缩小时对应的三维地图对应实现,反义亦然。
(3)信息一致。用户在三维场景中选定对象查询其属性信息时,二维场景转跳至相应位置,且属性信息相同,能够实现二维地图和三维场景的双向查询。此次实验完成的二三维联动GIS系统运行效果如图2所示。
4 总结与展望
多年来,二维地理信息系统和三维地理信息系统同步发展。其中二维地理信息系统发展最为成熟,所发开的二维GIS软件较多且性能较高,特别是分析功能;另一方面三维地理信息系统发展迅速,特别是可视化方面的成绩优异[8-10]。但目前用户已不再单纯满足独立的系统应用,多平台集成式的应用系统软件已被越来越多的用户所需求。因此需要开发出一个融合二者之间优势的系统平台,这样才能满足现阶段用户的需求。
笔者对二三维联动GIS系统的相关理论进行研究并设计开发试验,意在证明二三维联动的可行性与适用性。实验证明,利用ArcGIS Engine和Skyline实现二三维联动的GIS的构想是可行的。二三维联动的GIS实现了二三维显示联动的功能,可具体表现为显示的一体化和信息的一体化。实验中也暴露出一些不足之处,例如界面设计较为简单且功能实现不够完善。今后将进一步完善其功能,并对有关二三维联动的理论与应用进行进一步的研究与探索。
参考文献
[1]
曹代勇,朱小弟,李青元.OpenGL在三维地质模型可视化中的应用[J].中国煤田地质,2000(4):20-23.
[2] 杨志刚.基于World Wind的森林防火三维仿真系统研究和实现[J].广东林业科技,2012(3):51-56.
[3] 苗作华,黄志平,何伟魏,等.基于ArcGIS Engine和Vega Prime的三维可视化研究[J].软件导刊,2014(2):144-146.
[4] 陈鹏,林鸿,张鹏程,等.二三维一体化在Skyline与SuperMap6R中的实现对比[J].地理空间信息,2011(3):65-68,189.
[5] 程海洋,宋立松,曹建兵,等.二维GIS与三维GIS联动技术研究[J].浙江水利科技,2010(3):31-32.
[6] 郭皓.基于Skyline的3DGIS二次开发技术研究[D].南京:东南大学,2009.
[7] 江昕.基于GIS的虚拟校园的设计与实现[D].开封:河南大学,2010.
[8] 王之顺.基于Skyline和SketchUp的三维可视化技术研究[D].福州:福建师范大学,2012.
[9]刘海飞.基于 SuperMap 的二、三维一体化校园 GIS 系统构建[D].杨凌:西北农林科技大学大学,2013.
[10] 单楠.基于 SketchUp 和 ArcGIS 的三维 GIS 开发技术研究[D].重庆:西南大学,2009:6.