基于World Wind三维可视化平台的设计与实现

2020-08-03 07:58汪俊峰王星东闫明洋
现代电子技术 2020年8期
关键词:三维可视化空间分析平台设计

汪俊峰 王星东 闫明洋

摘  要: 文中将Web技术与World Wind开源软件结合起来,通过三维建模技术和三维GIS技术开发设计一个具有交互功能的Web三维可视化平台。该平台采用B/S架构,应用空间数据库PostgreSQL储存管理三维数据和二维属性数据,使用Web World Wind软件实现三维数据的显示,开发完成了模型加载、空间量测、模型搜索、属性显示、飞行漫游和二三维联动等功能。利用该平台用户只需使用浏览器就能访问查看场景的三维效果,从而达到三维可视化目的。

关键词: World Wind; 三维可视化; 平台设计; 三维建模; 功能开发; 空间分析

中图分类号: TN911?34                            文献标识码: A                       文章编号: 1004?373X(2020)08?0015?04

Design and implementation of 3D visualization platform based on World Wind

WANG Junfeng, WANG Xingdong, YAN Mingyang

(College of Information Science and Engineering, Henan University of Technology, Zhengzhou 450001, China)

Abstract: In combination of the Web technology and World Wind open source software in this paper, a Web 3D visualization platform with interactive function is developed and designed by means of 3D modeling technology and 3D GIS technology. This platform is constructed with B/S architecture, from which the spatial database PostgreSQL is used to store and manage 3D data and 2D attribute data, and the Web World Wind software is used to display the 3D data. The functions of model loading, space measurement, model search and attribute display, flight roaming and two?three dimensional linkage are developed and accomplished. With this platform, users only need to use a browser to access the 3D effect of the scene, so as to achieve the purpose of 3Dvisualization.

Keywords: World Wind; 3D visualization; platform design; 3D modeling; functional development; spatial analysis

0  引  言

World Wind由美國航天宇航局开发的三维GIS开源软件,它可以将多颗卫星的影像数据及其他方式提供的影像通过三维地球的形式展现出来。Web World Wind是World Wind所支持的浏览器端的开发端口[1]。它作为一个使用JavaScript编写的开源的Web页面虚拟地球仪,使开发人员能够在交互式3D虚拟地球仪或2D地图上快速创建地理信息的交互式三维可视化[2]。它提供的API可以让JavaScript程序控制模型的三维可视化和交互。Web World Wind可以运行在所有主流的操作系统、桌面和移动设备以及Web浏览器上[3]。Web World Wind在客户端和服务器端之间传输影像图片和XML文件,这种技术大大减少了信息传输量,提高了系统的运行速度。

目前,国外对三维可视化技术进行了持续性研究。1987年Kavouras和Masry开发用于矿山资源评估的三维可视化系统[4]。1994年,Breuning,Bobe和Cremers开发三维GIS系统,解决了空间分析等诸多问题[5]。美国国家地理信息开发的三维地理信息系统,对三维空间数据进行了全面的比较[6]。2006年James D等基于ArcScene3D软件,开发了用于对地下钻孔数据的三维可视化和空间操作的三维GIS系统。荷兰的ITC实现了三维Web?GIS数字城市[7]。与国外相比,国内由于国家对三维可视化技术研究的重视和相关人才的培养,在该研究领域内已经取得了很大的发展。1998年朱英浩基于MapInfo开发了三维可视化GIS软件[8]。国防科技大学开发了具有空间查询和分析等功能的三维军事电子地图系统[9]。常歌在2001年基于OpenGL平台利用城市三维景观数据开发了数字城市景观系统(City View)[10]。2006年朱庆开发了多模式三维可视化的文化遗产系统[11]。2008年EV?Globe开发的“四川省地理信息中心?遨游天府”三维可视化系统,将四川省矢量数据、影像数据和DEM数据合并在一起,在汶川大地震后的救援工作中起到了举足轻重的作用[12]。

基于World Wind开源软件、三维建模技术和三维GIS平台技术,本文设计了基于World Wind三维可视化平台,实现了模型加载、空间量测、模型搜索、属性显示、飞行漫游和二三维联动等功能。该平台采用B/S结构,用户只需打开浏览器即可实时查看三维可视化平台。

1  基于World Wind三维可视化平台

1.1  需求分析

传统意义上,现实世界的展示仅仅以二维地图的形式描述现实世界物体的相对位置关系,但是对于具体地物的细节等属性并不能直观的表现出来。本文设计基于World Wind三维可视化平台,可形象直观地展示整个三维场景,使用户仿佛置身于真实的世界中进行漫游。

基于World Wind三维可视化平台实现了模型加载、空间量测、模型搜索、属性显示、飞行漫游和二三维联动等功能,较好地展现了真实的三维场景效果。

1.2  架构设计

平台采用B/S架构,应用空间数据库PostgreSQL储存管理三维数据和属性数据,使用Web World Wind实现地图数据的显示,完成了客户端和服务器的沟通。平台的总体框架示意图如图1所示,由应用层、服务层和数据层三部分构成。

1) 数据层。数据层是平台支持的基础,也是平台构建的核心。平台设计了数据库和文件两种存储方式,属性数据储存到小型的关系型数据库PostgreSQL中,实现了关系型数据库的存储、管理、查询检索等功能。而对于图片、文字、音频等资料,平台通过文件管理的方式进行储存和管理,数据库里只需保存相应的路径信息。该设计能够减少数据库对电脑资源的占用,方便数据的调用和管理。

2) 服务层。服务层主要包括基础地图服务、空间查询和定位服务等。平台通过Web World Wind和Tomcat服务器软件发布地理空间数据,用户操作平台利用网络浏览器客户端向Tomcat服务器发出空间数据查询的请求,Tomcat服务器向PostgreSQL数据库发出请求并且完成数据的搜索,最后将搜索的结果通过网络返回给用户的客户端浏览器,实现了客户端和服务器的数据交互,支持多用户的访问。

3) 应用层。应用层主要包括模型操作、场景浏览、信息查询、空间量测等功能,开发人员通过对这些功能实现人机交互。

2  功能模块开发

2.1  模型加载

该平台支持批量加载dae格式的三维模型,能够将场景模型加载到World Wind三维地球上指定的位置。

三维模型的加载主要是基于Web World Wind软件提供的模型加载接口实现的,通过提供给接口模型的路径信息和模型要加载的位置信息(三维地球上的经纬度以及高程)即可在相应位置加载模型,并且可以修改模型的大小、透明度等一些属性。在进行大量三维模型加载的时候要注意模型的数据量大小不要超过系统设置的缓冲区大小,否则会出现浏览器崩溃。因此缓冲区大小要适应模型的数据量。

模型的加载主要是由ColladaLoader类控制的,为了实现批量模型的加载,对模型加载的相关代码进行了封装和重构处理,封装成一个名为addAnyModel(renderLayerName, position, dirPath, fileName, scale, opacity, config)的函数,其参数分别代表图层名字、模型位置、模型文件路径、模型文件名称、缩放系数和透明度。通过调用该函数解析三维模型加载相关的xml文件即可实现模型批量加载的功能。三维模型批量加载到该平台如图2所示。

2.2  空间量测

在工具栏窗口可点击选择测量按钮,如距离测量、面积测量、高程测量等。以距离测量为例,选择距离测量按钮后开始取点,点击要测量的位置即可。如图3所示,依次选取7个点,平台会自动把选取点的路径通过黄色实线绘制出来,从第二个点开始每次多选一个点,测量结果会实时显示在标签上,取点完成后通过点击鼠标右键即可结束测量,并将最终的测量结果显示在标签上。

空间量测功能主要通过鼠标点击事件依此获取到要测量的点位信息,并把这些信息存储在一个数组中。在记录存储点位信息时会同时启动“画线”功能,即把要测量的轨迹实时显示出来,通过鼠标右键结束点位信息的获取。量测结果的计算是将位置信息数组传给平台提供的计算函数。测量路径显示功能是把位置信息通过平台的多边形生成算法重新生成点位信息,然后通过平台的多边形绘制接口进行绘制。

Web World Wind平台的基本场景是三维地球,地球上每个点都有其唯一确定的位置信息(经纬度或者三维坐标系坐标)。由于每一个经纬度代表的距离是确定的,三维坐标系的距离单位也是确定的,故可以根据点的坐标信息通过相应算法计算多点之间的距离和面积。

2.3  模型搜索

在搜索框中输入模型名称,点击确认即可从当前视角通过飞行自动到达目的地点,并且会高亮显示该模型。

模型搜索主要利用GoToAnimator类实现,即根据输入数据的关键字匹配对应模型信息,然后根据读取到的模型位置信息进行飞行。该功能涉及到两个技术:一个是搜索关键字的模糊匹配;另一个是数据的存储。因为模型的数据量大,所以应该将模型的基本信息存储在数据库中。另外,在使用GoToAnimator之前,平台会自动将相机镜头方向调整为竖直向下,以便于用户查看目标的位置。

2.4  属性显示

鼠标点击模型,平台会根据此模型的id信息在数据库中查找其对应的属性信息,然后通过Annotation标签显示出来。

属性显示功能主要是将属性信息和位置信息传递给Annotation類来实现的,同时可以通过annotationAttributes类对属性信息进行修改并保存到数据库中。为了更方便地使用该功能,对其进行了再次封装,使用过程中只需调用AddAnnotations(label, position, config)函数即可。其中,参数label代表属性信息的内容,position代表属性信息显示的位置。

每个模型加载时都有唯一确定的名字(编号id),根据这个名字在数据库中查找相应的label和position,然后调用AddAnnotations函数将属性信息在指定位置显示出来。模型属性显示如图4所示。

2.5  飞行漫游

飞行漫游功能可以实现第一人称视角的三维场景漫游。用户可以通过自助取点的方式,即在要飞行的路线上通过鼠标左键选取一系列关键点,然后点击开始飞行按钮后平台会按照设定好的点位自动规划路线进行飞行漫游。此外也可以通过直接加载提前规划好的路线进行飞行漫游。

该功能是基于官方api提供的GotoAnimator类改造的。原有的飞行功能只适合于相机在高空中鸟瞰地球,其飞行主要靠控制相机视点和相机距离,没有方位角、倾斜角等参数的变化,不适用于三维场景中的飞行漫游。因此,在GotoAnimator类基础上进行了改进,封装成了一个新的功能类,实现了三维场景中的飞行漫游。其原理主要是根据两个点间相机参数的渐变,改进主要体现在相机渐变参数的增加以及对完整飞行路线的支持。

基于GoToAnimator类封装成了FlyManager类,GoToAnimator类只是能够做到定位飞行到一个指定点,而FlyManager类能够实现多点间真正意义上相机平滑无抖动的飞行漫游。FlyManager类添加了updateHeading和updateTilt两个方法,并对转弯进行了优化。updateHeading和updateTilt是分别控制相机的heading参数和tilt参数,FlyManager通过动态控制这些参数在两个点间渐变,同时更新系统的视图矩阵,最终呈现出“飞行”的效果。

FlyManager有两种具体的飞行漫游方式:一种是普通飞行漫游;另一种是专门进行转弯的飞行漫游。选择哪一种方式是由平台的算法自动确定的,即需要转弯的使用第二种方式飞行漫游,否则使用第一种方式飞行漫游。

2.6  二三维联动

二三维联动即在屏幕上显示三维场景的同时在右下角位置显示一个二维的地图窗口,两个窗口可相互关联,即对其中任意一个窗口进行平移或缩放操作时,另一个窗口也会同时进行相应的平移和缩放操作。

二三维联动的主要原理是通过对二维地图窗口和三维场景窗口的各种操作事件进行绑定实现的。当一个窗口事件触发时,将会调用对应的事件函数对另一个窗口也做出相应的操作。比如:一个二维地图窗口中心点通过平移改变位置,程序将会自动更新新的窗口中心点位置,并将三维场景窗口中心点也移动到该位置;二维地图窗口的scale发生改变,程序则会自动控制三维场景窗口中的相机高度发生相应的改变。

该功能对两个窗口都添加了鼠标按下、平移、松开事件。例如,默认情况下在没触发鼠标操作的时候,程序直接将二维地图的中心点设置为三维窗口的中心点。Web World Wind的中心是通过navigator类控制的,而天地图的中心是通过centerAndZoom类实现的。

3  结  语

本文基于开源软件World Wind 设计和开发完成了具有模型加载、空间量测、模型搜索、属性显示、飞行漫游和二三维联动等功能的三维可视化平台,实现了现实世界展示的三维化、智能化。利用该平台用户只需使用浏览器就能查看三维场景的效果,从而达到三维可视化目的。

参考文献

[1] 张霁,熊伟.基于World Wind的粮仓三维可视化平台[J].电子设计工程,2016,24(20):78?81.

[2] 杨磊,高素青.基于World Wind的三维GIS研究[J].电脑知识与技术,2010,6(22):6331?6334.

[3] 李涛,张志刚.基于World Wind的三维Web GIS结构研究[J].煤炭技术,2010,29(10):153?155.

[4] 于翔,姜仁贵,李建勋,等.基于三维可视化平台的水资源监控主题服务研究[J].水利信息化,2015(6):32?36.

[5] 王穆一雄,吴政漾,张新秀,等.校园建筑物三维可视化查询系统研究与开发[J].兰州交通大学学报,2013,32(1):120?123.

[6] 孙赫,冯仲科,王海平,等.基于Sketch Up和Arc GIS的校园树木三维可视化[J].林业调查规划,2011(6):17?20.

[7] 郝文霞,刘万龙,李学刚,等.基于World Wind的三维电网资源管理平台技术研究[J].电力信息与通信技术,2014,12(1):90?95.

[8] 谭征.基于三维虚拟的农村景观设计系统设计[J].现代电子技术,2018,41(22):38?41.

[9] 吴文静.Sketch Up与Arc GIS在三维数字校园中的应用研究[D].哈尔滨:东北林业大学,2012.

[10] 洪清锋.基于Google Sketch Up和Arc GIS建立校园三维可视化的方法探讨[J].数字技術与应用,2011(11):174?175.

[11] 张森岗.基于Web GIS的三维智慧校园的设计与实现[D].北京:北京建筑大学,2014.

[12] 鲍艳红,武明.基于虚拟现实的森林公园景观的节能设计[J].现代电子技术,2018,41(4):124?126.

猜你喜欢
三维可视化空间分析平台设计
基于ArcScene平台的电子沙盘制作
3D机房运维可视化系统的设计与实现
无锡市低效用地再开发监管平台设计与应用
基于GIS的汽车4S店空间布局特征研究
基于工作流的水运应急信息管理平台设计 
MOOC时代创新区域教师培训课程建设研究
基于Matlab的水下碍航物可视化研究