APP下载

基于WebGL的月球数据三维可视化

2018-09-12何龙何龙曾晓明于茜

科技创新与应用 2018年22期
关键词:三维可视化月球

何龙 何龙 曾晓明 于茜

摘 要:针对国内已经建立的月球系统平台多为桌面版以及存在三维渲染效果较差、数据类型单一和缺乏科普性的特点,在B/S架构下借助HTML5、瓦片分片算法、三维可视化等技术建立在内嵌WebGL的浏览器端对获得的月球影像进行了三维展示。为后续添加其他相关月球数据和空间分析提供了良好的平台,方便了广大用户对月球进行浏览和认知。

关键词:webgl;月球;B/S;三维可视化

中图分类号:TP393 文献标志码:A 文章编号:2095-2945(2018)22-0047-03

Abstract: In view of the fact that most of the lunar system platforms that have been established in China are desktop versions, there are some characteristics such as poor three-dimensional(3D) rendering effect, single data type and lack of popularization of science. With the help of HTML 5, tile slicing algorithm, 3D visualization and other technologies, the browser side of WebGL embedded in the B/S architecture is used to display 3D images of the moon. It provides a good platform for the subsequent addition of other relevant lunar data and space analysis, and facilitates the majority of users to browse and recognize the moon.

Keywords: WebGL; moon; B/S; three-dimensional (3D) visualization

月球,作为地球唯一的自然卫星,对地球的运动以及生物活动有着重要的影响。我国自2007年以来也相继发射了嫦娥一号、二号和三号卫星,获得了不同传感器的海量探测数据,为后续的科学研究奠定了基础。本文建立一个以B/S架构的网络平台——基于HTML5,运用内嵌在浏览器中的WebGL标准进行快速渲染,无需任何第三方插件,就能使用三维图形来增强Web程序的用户界面,同时以此为基础来展示月球表面土壤类型分布、矿石类别分布、月球车动态着陆过程、月表温度变化、撞击坑等自然风貌从而增加其科普性,有利于探索科研发展的前端。

利用“嫦娥一号”卫星获得的探测数据来初步实现全月影像的加载,增强了其实时性、可操作性和互动性以及提供更加便利的使用方式,即在使用无插件时可以直接用市面现行高版本浏览器如GoogleChrome直接打开,方便了公众对月球表面信息的了解,人机交互性大大提高。

1 月球数据介绍

继我国嫦娥探月工程实施以来,获取了多種形式和类型的数据。“嫦娥一号”月球探测卫星已完成全月球面地形和纹理数据的探测,这其中包括三线阵CCD立体相机(CCD)主要用来获取月球表面立体影像,绘制月表三维图像和地质学专题图;激光高度计(LAM)主要用来获取卫星星下点月表地形高程数据,为CCD立体相机工作参数的调整提供卫星相对月表高度数据。此外还有干涉成像光谱仪(IIM)、X射线谱仪(XRS)、太阳高能粒子探测仪(HPD)、γ射线谱仪(GRS)、太阳风离子探测仪(SWID)、微波探测仪(MRM)等探测数据。

1.1 数据读取与处理

PDS(PlanetaryDataSystem,行星科学数据系统)是由美国国家航空航天局(NASA)提出的、并在国际深空探测领域广泛推广采用的一种数据存储标准。我国的嫦娥卫星获取的数据产品均采用PDS格式,按照处理的程度分为三级。二级数据是经过辐射、几何、光度校正后的数据且较好的保留了影像的空间信息,所以本文采用了嫦娥一号CCD2C数据,每轨影像在南北方向上呈条带状。

1.1.1 数据读取

目前有很多专业软件如EVNI、ERDAS等可以对PDS数据进行读取,但是无法获得影像的空间信息。所以本文利用了C#编程语言中相关的函数对2C文件以二进制形式进行读取。内容包括影像的记录时间、标志位、像元的经纬度坐标、影像数据。

1.1.2 投影参数设置

Moon-2000坐标系统是IAU 2000Cartesian Coordinate System中的适用于月球的坐标系统(IAU,国际天文学联合会),目前它是世界月球研究领域中通用的坐标系统。椭球体采用Moon_2000_IAU_IAG标准,参考水准面D_MOON_2000的偏离参数为0,0,0,长半轴和短半轴均为1737400m。

由于数据源文件采用经纬度记录空间信息的方式,考虑到投影方法不仅要尽可能的保留原始数据的空间信息关系,而且还需精确地保留数据的特征,所以在全月影像拼接时采用了GeographicLat/Lon经纬度地理投影。

1.1.3 几何校正计算模型

根据空间上输入分布的控制点,构建Delaunay三角网,再选择合适的内插方法内插出规则格网。要求控制点较多且需均匀分布,校正精度很高,所以选择局部三角网(Taiangulation)模型。

利用C#编程语言将2C文件中影像空间信息存储在二维数组中,并按照一定的排列规则转换为ENVI进行图像配准时控制点的PTS文件。利用IDL(InteractiveDataLanguage)编程语言读取PTS文件(保存控制点的文件),调用envi_doit函数对影像进行批量校正。

1.1.4 重采样方法

输出图像像元点在输入图像中的行列号不是或不全是正数关系,定位后的像元在原图像中分布是不均匀的。因此,需要对原始图像按一定规则重采样。双线性内插法(Bilinear)的重采样精度明显较高,特别是对亮度不连续现象或线状特征的块状化现象有明显的改善,并具有均衡化和清晰化的效果,所以选择此采样方法。

1.1.5 影像的镶嵌拼接

对大量经过几何校正的单轨影像,经过透明处理、匀色、羽化等操作,解决镶嵌颜色不一致、接边以及重叠区等问题,最终实现所有单轨影像的无缝拼接。

1.2 数据切片

由于全月影像的数据量大,为保证系统能实现漫游、响应速度快等要求,需要对影像进行切片处理。GDAL是一个在X/MIT许可协议下的开源栅格空间数据转换库。我们利用镶嵌而成的整幅月球影像采用四叉树的方式在空间上进行分割。本文采用256像素×256像素大小的瓦片。每一级按照22n(n≥0,n为层级数)数量递增,分辨率相应提高四倍,但每一层数据组成在空间范围上和原数据是一样的。当切割到第9级的时候,此时的影像已经达到原始影像的分辨率,没有必要再进行分割。最后通过对这些瓦片数据进行相应的存储,并建立动态加载的空间索引机制,从而实现对不同层级的全月影像显示,获得较好的浏览体验效果。

2 三维平台的构建

2.1 平台架构

本文利用JavaScript、HTML5、CSS3开发客户端,window内置IIS作为WEB服务器,运用AJAX技术对数据异步加载从而来实现访问和传输。

如图1的系统构架,内嵌在浏览器中的WebGL支持月球数据的三维显示,用户在浏览器界面下通过鼠标或键盘操作。当用户操作页面时,JavaScript会处理相应的过程,通过XMLHttpRequest对象向服务器端发送请求,网络服务器处理HTTP协议,将操作需求传送给地图服务器,地图服务器分析用户请求,将需要分析的数据从数据库中调取,将处理结果以XML或JSON类型返回网络服务器,遵循网络协议将结果数据发送到浏览器客户端,客户端接到服务器的响应后通过JavaScript动态改变页面的结构和样式,从而实现页面的局部更新。异步交互是指当XMLHttpRequest对象发送请求后并不影响客户端用户的操作,直到数据返回时才对页面进行更新。

2.2 相关技术运用

2.2.1 WebGL技术

WebGL作为新一代Web3D图形标准,可以为HTML5Canvas提供硬件3D加速渲染,WebGL完美地解决了现有的Web交互式三维动画的两个问题:第一,它通过JavaScript脚本实现Web交互式三维动画的制作,无需任何浏览器插件支持;第二,它利用底层的图形硬件加速功能进行的图形渲染,是通过统一的、标准的、跨平台的OpenGL接口实现的。它内嵌于时下流行的高版本浏览器中,无需安装第三方的插件和库便可以直接在多种平台下使用它。

2.2.2 瓦片分片算法与规则

目前在对影像数据的组织与管理中常见的组织方式有规则格网、四叉树、KD树、KDB树、BSP树、和R树等。其中四叉树作为一种最常见的空间索引与栅格瓦片地图通过瓦片编号可以有机地结合起来,实现在进行地图缩放和漫游操作时动态调用地图切片。由于这些瓦片编号具有规律性,可以根据瓦片编号和坐标建立一种索引关系。

采用GDAL(Geospatial Data Abstraction Library)的地图瓦片切片方法进行切片处理,根据其标准,在确定经纬度和层级的情况下,就可以通过公式得到要显示的瓦片编号索引。显示地图的时候就可以根据中心坐标和层级以及bound范围,就可以确定需要加载那些地图瓦片。编号和坐标之间就建立了一种索引关系,具体的计算公式如下:

2.2.3 三维场景调度技术

视点驱动三维调动技术使用户看到的三维场景是连续的,根据经纬度坐标和瓦片编号的对应关系,当视点移动到某一块区域内,此区域周围的瓦片会自动装入缓存区内,当视点移动到该范围中,瓦片会被调出,同时判断视点下一步的移动。因此在这个过程中需要根据视点的移动实时计算三维场景的可见区域,如图2所示,从视点出发的四条射线与地表面相交,得到了四个交点从而构成可视区域,通过和数据范围取得交集求的数据可见区域,最后通过公式计算得到可见区域内瓦片的索引编号。

通过上面计算可以获得四个交点的可见区域,然后判断瓦片的四个角点是否落在可见区域中,如果在可见区域内则记录该瓦片的编码,然后对数据范围内所有的瓦片进行判断,就可以全部得到可见区域瓦片编码。

3 月球三维数据的展示

通过对系统整体架构的部署,运用上文提到的各种关键技术,最终在浏览器端对月球数据进行三维展示如图3,同时把由全月DEM数据切割生成的terrain数据图层进行叠加显示,月球表面的环形山立体效果明显如图4。在此系统中我们建立相应的图层进行目录索引,从而实现不同图层之间的叠加显示,为后续的多元、多形态、多时态数据的相关分析奠定基础。与此同时,可以实现放大、缩小、漫游等操作,为用户的浏览提供较好的视觉体验效果。

4 结束语

我国探月工程取得了巨大科学、工程成果,同时获得了海量不同类型的月球探测数据,这些数据具有重大的科学研究价值。本文结合WebGL的优势,基于HTML5,结合四叉樹数据组织、瓦片技术和三维场景调度技术建立了以B/S架构的月球空间信息三维可视化系统,为展示更多月球数据提供了平台,增加了科普性,方便了广大用户更好的了解月球,促进三维月球WEB端的发展起到了推动作用。

参考文献:

[1]董智慧.基于空间信息服务云月球数据共享机制研究[D].成都:成都理工大学,2012.

[2]赵葆常,杨建峰,汶德胜,等.嫦娥一号卫星CCD立体相机的设计与在轨运行[J].航天器工程,2009,18(01):30-36.

猜你喜欢

三维可视化月球
陪我去月球
从地球到月球
系列长篇故事,《月球少年》之六:降临月球的不明飞行物
基于三维可视化技术的云冈石窟文化传播策略研究与实现
基于ArcScene平台的电子沙盘制作
3D机房运维可视化系统的设计与实现
基于Skyline二三维一体可视化系统的探讨
月球上面真热闹
我们的邻居是月球