基于ArcEngine的三维场景交互漫游系统 | ![]() |
2. 武汉大学灾害监测和防治研究中心, 湖北 武汉, 430079;
3. 地球空间信息技术协同创新中心,湖北 武汉, 430079
2. Hazard Monitoring and Prevention Research Center, Wuhan University, Wuhan 430079, China;
3. Collaborative Innovation Center for Geospatial Technology, Wuhan 430079, China
过去各个领域的信息显示都是基于二维电子地图,但二维地图只能展示各地物或建筑的平面信息,没有充分利用空间多维信息,缺乏空间分析能力。随着科技的发展,三维GIS已渗透到各个领域,如石油、地质、海洋、环境、城市等各个领域,可见,三维电子地图必然成为一大趋势。
目前我国各个城市正在创建数字城市,更多的学者也加入了三维可视化研究领域,如杨必胜等基于分层组合模型开发了三维城市应用系统[1];朱庆等建立了室内外三维一体化显示的文化遗产GIS三维可视化系统[2];谢义林等采用VR(virtual reality)技术与GIS组件相结合实现了三维GIS的应用[3]。可见三维可视化是一个非常有效的展示窗,如果能够将所展示的信息用更加真实形象的三维场景显示出来,必然增加所展现场景的真实感,能使观看者更加直观地认识所展现的场景。许多三维显示软件已经被广泛开发并应用于各种领域[4-18],例如,采矿、地质的三维显示,但这只是对地形的不规则三角网(triangulated irregular network, TIN)或数字高程模型(digital elevation model,DEM)的显示;一些学校的三维浏览,实现了地形与建筑物的同步显示,但是缺乏开放的数据格式;基于ArcGIS的三维显示对三维模型的分析还比较少,而且许多领域的三维GIS一般是针对自己的领域开发的,没有面向通用平台进行设计,存在一定的局限性。基于以上三维显示开发的局限性,本文提出了基于SketchUp三维建模软件与ArcEngine组件相结合的开发方法实现三维场景驱动,解决了对数据格式的各种限制,实现了地形和建筑物的同步显示,并以某校园的三维建模及三维展现为例,详细介绍了基于ArcEngine的三维交互漫游系统的总体结构和该系统功能实现中的技术问题。
1 系统设计三维交互漫游系统使用Windows10操作系统, ArcGIS10.2为开发平台, SketchUp软件为地理要素的的建模平台, 采用Microsoft Visual Studio.Net2010为编程开发环境。三维交互漫游系统的基本思想是基于SketchUp实现三维场景建模,结合ArcGIS平台中的ArcEngine组件进行二次开发,采用组件对象模型(componet object model, COM)技术以ArcEngine提供的SceneControl作为三维显示平台, TocControl作为图层导航控件, 编程开发实现三维的场景的驱动, 形成脱离GIS环境的三维地形显示与三维模型分析相统一的可视化交互系统,系统总体架构如图 1所示。
![]() |
图 1 三维交互漫游系统架构 Fig.1 Framework of 3D Interactive Roaming System |
2 系统功能的实现 2.1 数据加载
利用ArcEngine组件提供的DataSurcesFile接口,实现了多种数据源的数据读取。数据加载模块主要包括*.sxd文件的加载,*.shp文件的加载和*.DOM文件的加载。*.sxd文件是三维场景图层,它的创建是在ArcScene中实现的,将建好的三维模型通过格式转换显示在ArcScene中,设计编辑其属性信息,最终保存为*.sxd文件即可。*.shp文件和*.DOM文件是通过遥感影像下载软件91卫图助手并通过ArcGIS裁剪得到的。设计使用的栅格数据DOM是TIFF格式,使用栅格工作空间工厂和接口编程实现栅格影像数据的加载。
2.2 三维建模三维建筑物模型主要包括教学楼、宿舍楼、食堂和图书馆等,在SketchUp中,以建筑物的影像作为底图,根据对建筑物及地物纹理和高度的采集进行建模。SketchUp建模主要有直接创建法和后期导入法两种方法。直接创建法将影像导入SketchUp中,以建筑物的影像作为底图,在SketchUp中绘制建筑物的平面图,根据对建筑物及地物纹理和高度的采集来创建三维模型,但该方法不利于模型的重复使用,且当数据量较大时,软件运行速度慢,降低工作效率。所以本设计采用后期导入法,分别完成不同建筑物、地物的独立建模,之后将模型导入SketchUp中,该方法的难点在于导入模型时需要调整每一个模型与地面的位置关系。为了获取AE开发需要的数据格式,需要将SketchUp中构建好的三维模型通过ArcMap中ArcToolBox工具箱的数据转换工具Layer3D to Feature Class将3D格式转换为要素类,在ArcScene中显示三维模型要素,设计编辑其属性,保存为.sxd文件即可在AE开发中加载。
三维地形的建模是通过输入高程点编辑生成TIN实现的,TIN是基于矢量的数字地理数据的一种形式,通过将导入的一系列点组成三角形来构建。三维地形数据是从卫星图上获取高分辨率的影像数据和DEM数据,将数据添加到三维显示控件SceneControl中编程实现三维地形的构建。许多三维场景的浏览都是直接导入地形数据和三维模型数据,无法对地形进行操作,本设计通过输入坐标点创建TIN或导入TIN的方法,可以单独操作地形数据,使地形更具有真实起伏效果。
地形渲染通过叠加TIN的操作实现。通过添加DOM(digital orthophoto map)栅格数据,将栅格影像数据叠加到TIN上,实现地形和地表影像的对应整合,使影像具有三维起伏效果,在此基础上导入三维模型更具真实感。具体操作是加载影像,再将影像看作纹理贴在地形表面上,加载的影像便贴在了TIN表面,效果如图 2所示。叠加影像的实现使用TinLayer、RasterLayer、Tin3DProperties和Raster3DProperties共4个组件类。TinLayer和RasterLayer组件用于创建TIN和Raster图层对象,Tin3DProperties和Raster3DProperties组件类分别用于创建TIN和Raster数据的三维场景属性对象。
![]() |
图 2 叠加TIN Fig.2 Superposition TIN |
2.3 三维浏览
三维交互漫游系统采用ArcEngine提供的地图控件MapControl作为二维显示窗口,三维场景控件SceneControl作为三维显示窗口,二维显示需要将TIFF格式的影像数据加载到MapControl中,在SceneControl中加载转换好的三维场景数据实现三维显示。ArcEngine组件提供的ToolbarControl场景工具控件,可以方便加载已封装好的浏览工具并应用于MapControl和SceneControl中,基本浏览通过在ToolbarControl控件属性中添加基本的浏览工具实现,主要包括平移、旋转、放大、缩小、显示全图、导航浏览及空中浏览。其中,导航浏览是三维浏览所特有的,通过按住鼠标左键进行移动,三维场景便可以在三维空间旋转,方便用户从任意角度进行观察;而飞行操作可以实现空中飞行,只需左击鼠标一下,视点就会随着鼠标的移动方向进行飞行,通过再次点击鼠标可以加速度飞行,当需要近距离观察时,将鼠标对准地物保持不动便可以靠近地物进行浏览。Toolbar控件中的放大缩小功能使用时并不方便,无法针对感兴趣区域进行缩放,所以设计实现鼠标滚轮的实时缩放,由于SceneControl控件的事件中没有Mouseweel_click事件,需要自己定义该事件响应函数,函数中设置相机的位置和视角范围即可实现缩放操作。
2.4 三维数据更新为了满足场景数据库动态更新的要求,需要将新建的地物模型通过添加要素的方式导入到数据库中,ArcGIS10.2提供了导入3D模型到样式库的工具,通过构造3D容器、设置导入点位置、添加模型要素,可以将三维模型以3D符号的形式导入到已有的三维场景中,通过保存操作实现数据库的更新,模型的位置需要根据现有场景的位置进行推算, 模型导入过程如图 3所示。如果某些模型已经不存在了,便可以删除该模型,模型的添加与删除操作高效实现了数据库的更新,避免了重复建模。
![]() |
图 3 模型导入图书馆效果图 Fig.3 Effect of Import Library Model |
2.5 空间分析
空间分析模块主要包括二、三维联动和建筑物属性查询功能。二、三维联动将二维和三维显示结合起来,提供宏观、真实性的场景,建筑物属性查询可以实时显示用户点击的三维建筑物的属性信息,他们共同辅助用户的三维交互体验。
二、三维联动综合了二维GIS的宏观性、整体性和三维GIS的现实性、直观性的优点, 克服了二维GIS的抽象多样性和三维虚拟场景漫游的迷失感。二、三维GIS之间的信息传递通过互操作响应机制来实现,而互操作响应机制的前提是实现二维GIS数据和三维GIS场景之间的一一映射,将同名点的二维坐标和三维地理坐标相对应,将坐标相互转换并相互传递,实现二、三维的同步放大、缩小和平移等基本操作;当用户在三维场景漫游时,很难确定自己处于该三维场景的哪一具体位置,可以通过二维地图同步显示当前浏览的位置。当用户希望仔细浏览某一物体时,可以通过同步放大操作,近距离分析物体的二维及三维效果。具体操作是将二维坐标转换为三维坐标,将MapControl中的观察范围和角度传递给SceneControl的相机设置SceneControl和MapControl同步缩放操作,最后在各个控件的重绘事件中加入转换操作,便可以实现消息互传,实现感兴趣区域的二维及三维同步显示。
属性查询通过对建筑物的选取及对数据库的调用实现。用属性查询工具进行信息查询是用户快速了解三维场景详细信息的主要手段。属性查询前,鼠标点击进行目标选取,设置被选中的物体高亮显示,然后点击属性输出按钮,该系统会自动调用数据库来获取模型的信息,弹出属性框显示所选取三维模型属性信息。三维模型的属性查询难点在于鼠标点击的不是二维坐标,而是空间位置,需要通过识别鼠标点击的图层输出模型属性,这就要求导出三维模型时,根据不同的属性进行导出,例如,教学楼、宿舍楼、实验楼等需要放在不同的图层。通过属性信息的显示,能够加深用户体验,使用户快速了解其信息。另外,通过对TocControl控件进行功能扩展,实现了图层的移除、缩放到图层等功能,加强了人机交互性。
3 结束语随着三维地理信息的广泛涉及,如何实现三维虚拟场景的强感知和高效的交互成为迫切的需求。ArcEngine较好地满足了融合二维GIS与三维GIS应用系统的开发需求。本文采用三维建模软件SketchUp与ArcEngine组件相结合的方式开发的三维模型显示与三维地形分析于一体的三维交互漫游系统,实现了三维展示分析及数据更新等高级功能。该系统具备三维交互的各种交互功能,克服了二维地图的缺陷;突出了三维地形的建立渲染功能,展现了更加真实的三维场景。
[1] |
杨必胜, 李清泉, 梅宝燕. 3维城市模型的可视化研究[J]. 测绘学报, 2000, 29(2): 149-154. DOI:10.3321/j.issn:1001-1595.2000.02.010 |
[2] |
朱庆, 卢丹丹, 张叶廷. GIS三维可视化在数字文化遗产中的应用[J]. 测绘科学, 2006, 31(1): 55-57. DOI:10.3771/j.issn.1009-2307.2006.01.016 |
[3] |
谢义林, 汪云甲. 利用虚拟场景实现3DGIS的研究与应用[J]. 测绘工程, 2006, 15(6): 43-46. DOI:10.3969/j.issn.1006-7949.2006.06.012 |
[4] |
陆世安.三维校园地理信息系统分析与实现[D].重庆: 重庆交通大学, 2013
|
[5] |
单楠, 况明生, 李营刚, 等.基于SketchUp和ArcGIS的三维GIS开发技术研究[D].重庆: 西南大学, 2009
|
[6] |
李麟.基于SketchUp和ArcGIS的三维可视化技术研究[D].阜新: 辽宁工程技术大学, 2010
|
[7] |
张卫国.基于ArcGIS Engine的三维地理信息系统开发及应用[D].赣州: 江西理工大学, 2009
|
[8] |
杨娇.基于ArcGIS和SketchUp构建三维校园的应用研究[D].抚州: 东华理工大学, 2014
|
[9] |
刘海飞.基于SuperMap的二、三维一体化校园GIS系统构建[D].杨凌: 西北农林科技大学, 2013
|
[10] |
李建成, 郭建文, 盖迎春, 等. 基于ArcEngine的三维GIS的设计与实现[J]. 遥感技术与应用, 2009, 24(3): 395-398. |
[11] |
王艳, 聂宜民, 刘爱华, 等. 基于ArcGIS的三维虚拟校园建设的研究与探讨[J]. 山东农业大学学报(自然科学版), 2009, 40(2): 283-286. DOI:10.3969/j.issn.1000-2324.2009.02.026 |
[12] |
洪德法, 杨国东, 王志恒. 基于ArcScene和SketchUp的虚拟校园的建立[J]. 计算机技术与发展, 2008, 18(12): 41-43. DOI:10.3969/j.issn.1673-629X.2008.12.013 |
[13] |
沈国钧. 三维虚拟校园交互系统的设计[J]. 计算机光盘软件与应用, 2012(3): 200. |
[14] |
闫海涛.基于ArcGIS Engine的矿井三维GIS开发研究[D].上海: 华东师范大学, 2015
|
[15] |
杨宏鹏.基于ArcGIS的地形三维可视化方法的研究与实现[D].哈尔滨: 东北林业大学, 2008
|
[16] |
郭丽萍. 基于ArcGIS Engine的三维地形可视化与分析系统设计[J]. 计算机系统应用, 2007(12): 2-6. DOI:10.3969/j.issn.1003-3254.2007.12.001 |
[17] |
黄健熙, 郭利华, 龙毅, 等. 二维地图与三维虚拟场景的互响应设计与实现[J]. 测绘信息与工程, 2003, 28(1): 33-35. DOI:10.3969/j.issn.1007-3817.2003.01.013 |
[18] |
毛学刚, 李明泽, 范文义. 三维虚拟校园的设计与实现[J]. 测绘信息与工程, 2008, 33(1): 47-49. DOI:10.3969/j.issn.1007-3817.2008.01.020 |