面向移动端月球形貌展示的快速三维地图平台搭建
点击图片上方蓝色字体“慧天地”即可订阅
(更多精彩,请留意文末推荐)
测绘技术正在逐步深入地应用于我国的月球与深空探测工程。使用月球地图进行月球形貌展示、开展探测规划已经十分普遍。而随着互联网三维地图技术的不断进步,网络三维地图也不断涌现并开始应用于月球数据及其他行星数据的三维展示与数据发布。
从技术层面看,网络三维地图经历了从桌面端到浏览器端再到移动端的转变。最早出现的是桌面端的网络三维地图。以Google Earth、World Wind等为代表,基于C/S架构,三维模型数据主要在桌面的客户端进行渲染,而服务端提供辅助信息支持。这一类的网络三维地图应用渲染速度快,显示效果好,但需要在客户端单独安装桌面应用软件,数据也是预下载到软件中,较为复杂。
其次是浏览器端的网络三维地图,这一类的网络三维地图主要基于B/S架构,按照出现先后还可以细分为两种类型。早期主要通过在浏览器端安装插件 (如ActiveX、Java3D、ActionScript等),由服务器端提供三维数据,传输到客户端并利用插件对三维模型进行渲染;近期,随着浏览器对WebGL等3D引擎的支持,在浏览器端可以不用安装插件,直接渲染三维地图。基于浏览器端的网络三维地图的优点在于不用单独安装应用程序,直接通过浏览器显示三维场景,但绘制效率和显示效果不如桌面版, 典型应用有Cesium等。
随着移动互联网的发展,移动网速的加快,智能移动设备的计算能力不断提高,逐步出现了基于移动端的网络三维地图。这一类型的网络三维地图主要采用(APP/Server)的架构,也可以细分为两种模式。一种将三维数据和渲染引擎都放在APP中,服务端只提供辅助信息,在APP中直接渲染显示三维场景;另外一种是APP端只提供渲染引擎,而服务端提供数据服务,传输到APP中再进行渲染显示。这两种模式各有利弊,前一种模式无需下载数据,渲染显示速度更快,三维展示效果较好,但三维数据难以进行更新;后一种模式数据和引擎分开,易于进行数据更新和动态表达,但对于网络传输速度要求更高,渲染速度和效果则差强人意。
从应用领域来看,针对地球网络三维地图的应用种类繁多,技术也最为成熟,而针对月球或其他行星的网络三维地图则较少,只有如基于Google Earth技术的Google Moon、Google Mars等,而且主要沿用三维地球的技术。但这种沿用忽略了月球与行星的坐标系统、分幅索引方案等,从月球与行星地图实际应用出发,在数据定位、查询等方面存在问题。
本文主要研究如何在智能移动端实现面向月球形貌表达的网络三维地图。针对现有的移动端网络三维地图在技术层面存在的数据和渲染的矛盾,在应用领域存在的考虑月球特殊环境的缺失问题,基于嫦娥月球数据,本文提出了一种基于异步渲染策略的,针对月球空间环境的网络三维地图实现方案,可提高嫦娥月球数据的三维展示与发布能力,服务于我国的月球与深空探测工程。
基于异步渲染策略的网络三维月球地图实现方案
1 主要思路
由于移动端环境下网络速度和运算能力的限制,网络三维地图存在着数据和渲染的矛盾;如果完全将三维数据放置于APP端,则每次三维地图数据更新,需要重新下载APP,操作十分麻烦;而如果全将三维地图数据放置于服务器,由服务器根据APP访问实时将数据传给前端渲染,则数据的实时传输压力较大,渲染效果也会受到影响。对此,本文提出一种基于异步渲染策略的方案,具体方案如图1所示。
如图1所示, 该方案是将三维地图数据分开,一部分包含三维几何数据、三维场景分幅定位数据放置于APP,由APP进行本地调用渲染。而用于显示效果的地图纹理、标注数据,则放置于服务器,而且这一部分数据可以由服务器进行预渲染,生成相应的瓦片地图数据。同时,瓦片地图数据可以采用标准的影像数据模型进行压缩(如JPEG),以减少数据量。在APP中,在渲染几何数据时,通过异步调用瓦片地图服务,将地图瓦片数据叠加于三维模型数据之上,则可以显示出最终的三维场景。
基于APP端和服务端进行异步渲染实现的网络三维地图,由于几何和定位数据在本地,可以提高三维场景的渲染效率;而将瓦片地图数据放在服务端,一旦三维瓦片地图数据需要更新,只需要在服务端生成新的瓦片,APP端则不需要更新,调用新的瓦片地图服务即可,这样地图瓦片数据的更新将会更加方便。
2 月球三维地图坐标系统与瓦片切分
针对月球的网络三维地图,其三维引擎在调用瓦片地图服务时,为减少数据获取量,需要考虑月球的空间坐标系统及分幅编码特点以进行地图瓦片切分和调用。目前月球的空间坐标系统主要采用月固坐标系GSCMoon2000,主要的GIS软件如ArcMap等也可以支持该坐标系。APP端在请求服务端的影像瓦片数据时,可以利用月球的分幅编码规则,根据显示月球坐标范围,请求对应分幅的瓦片数据,而不需要请求全球的瓦片数据。
目前可以参考国家标准《月球基本比例尺地形图分幅和编号》,基于此标准,对月球三维地图影像瓦片数据进行分幅和编码。按照该标准,以1:100万分幅为例,如图2所示,瓦片编号与图幅编号相同,单张瓦片大小为256×256像素。
图2中,根据某点位置,其瓦片编号可由求图幅编号公式得到。1:100万图幅编号按式 (1) 和式 (2) 计算
式中,a为1:100万图幅所在纬度带字符码所对应的数字码;b为1:100万图幅所在经度带的数字码;[ ]表示商取整;φ为图幅内某点的纬度或图幅西北图廓点的纬度,单位为度(°);Δφ为14°;λ为图幅内某点的经度或图幅西北图廓点的经度,单位为度(°);Δλ为第a行对应的1:1 000 000图幅经差,单位为度(°)。式(1)、式(2)只适用于南北纬84°之间的行号、列号计算。北纬84°—90°图幅编号为A01,南纬84°—90°图幅编号为N01。以月面某点(经度为-19°30′36″,纬度为44°07′12″)为例,计算其所在地图瓦片的编号。根据式(1)和式(2)计算其行号、列号。
查询第4行经差为24°,即Δλ=24°
该点所在1:1 000 000图幅编号为D07,获取的瓦片即为Image D07,其相邻瓦片则为Image C05、C06、D06、D08、E08、E09。
系统实现与实例应用
1 系统设计
基于上述设计方案,采用APP/Server的架构搭建本系统。移动端是一个APP,主要是一个三维地图渲染引擎,内置有月球三维结构几何数据和用于空间定位、查询的分幅编码数据,负责三维模型的渲染和显示。Server服务端是月球三维纹理数据瓦片地图服务,负责渲染月球纹理数据,并以瓦片地图的形式发布,APP端可以调用该服务,并将相应的地图瓦片贴合在月球三维模型表面,形成最终的月球三维地图。
系统设计包括三维主要功能模块,如图3所示,每个模块及其功能,具体如下。
(1) 三维展示模块:用于渲染并显示三维月球模型数据与地图场景。
(2) 交互模块:显示交互性信息,接受触摸动作,根据触摸动作修改3D模型参数,与3D模型互动。
(3) 数据加载模块:加载并分析月球三维纹理、标注数据,计算坐标在3D模型上显示的位置。
系统设计基于开源的Cesium项目构建,使用WebGL绘制三维地图,通过支持WebGL的主流浏览器如Firefox、Chrome即可以访问和渲染三维场景,Cesium平台支持对于WMTS、WMS等主流网络地图服务的调用。
2 实例应用
原型系统主要运用已有的嫦娥月球影像数据,包括普通的120m分辨率的全月DOM数据、月球地名数据,数据的组织结构如图4所示。
根据已有的数据,在服务器端,通过ArcGIS Server将地图数据发布为多级显示的网络地图瓦片服务,作为网络三维月球系统的纹理和标注数据来源。
在智能手机端安装原型系统APP,通过APP调用浏览器,渲染本地的三维几何数据,在3G网络环境下调用服务端发布的网络地图瓦片服务,可以实现流畅的访问月球三维场景,相应的地名数据也可以叠加显示于地图中。在不同尺度下的三维月球数据展示的具体示意图效果如图5所示。
在平台支持上,本系统可以支持安卓、iOS等主流移动平台,具有较好的跨平台性;由于采用了异步渲染策略;在访问速度上,可以实现实时流畅的三维月球场景访问,在渲染效果上与主流的平台效果相当。
本文方案被应用于月球三维地图的构建,实现了一个可以流畅显示月球形貌的月球三维地图。该方案存在的不足之处在于,目前主要用于展示月球形貌的纹理数据为影像灰度瓦片,形貌的三维效果还不够突出,未来应研究使用采用彩色晕渲瓦片替代灰度瓦片等方式,以提高月球三维形貌地图的表现力。
作者简介
曾兴国,男,博士,助理研究员,主要从事月球与行星地图可视化研究。E-mail: zengsingle@163.com
来源:测绘通报(版权归原作者及刊载媒体所有)
推荐
点击下文直接阅读
【慧天地】敬告
【慧天地】是服务测绘地理信息行业的公共、公益平 台,旨在:传递政府声音;发现行业亮点;增强学术交流;共享优质资源;关注本硕博学子的学习、就业;重视地理信息文化的传播、弘扬。【慧天地】高度重视版 权,对于原创、委托发布的稿件,会烦请作者、委托方亲自审核通过后才正式推发;对于来自网站、期刊、书籍、微博、微信公众号等媒介的稿件,会在作者栏或者 文章末尾显著标明出处,以表达对作者和推文引用平台版权的充分尊重和感谢;对于来源于网络作者不明的优质作品,转载时如出现侵权,请后台留言,我们会及时 删除。先做人,后做事;心有多大,舞台有多大。感谢大家一直以来对【慧天地】的关注和支持!
❤ 慧天地 ❤
有兴趣加入【慧天地】交流群的朋友,请加赵楠(微信号zn846546896)为好友。
欢迎大家推荐精品稿件,投稿邮箱:geomaticshtd@163.com
(☆V☆)
编辑:范芷睿
审核:朱林烨
指导:万剑华教授(微信号wjh18266613129)