《基于WEBGL的三维地球的实现方案.pdf》由会员分享,可在线阅读,更多相关《基于WEBGL的三维地球的实现方案.pdf(10页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104063900A43申请公布日20140924CN104063900A21申请号201410235201X22申请日20140530G06T17/05201101G06T15/00201101G06F17/3020060171申请人中国科学院遥感与数字地球研究所地址100101北京市朝阳区大屯路甲20号北中国科学院遥感与数字地球研究所72发明人唐娉李腾冯峥张正单小军李宏益54发明名称基于WEBGL的三维地球的实现方案57摘要本发明公开一种基于WEBGL标准实现在浏览器上的三维地球展示的方法,该技术方案实现的大致步骤如下首先,初始化一个球体并渲染一张全球的底图作为整个三维地。
2、图的雏形;然后根据用户的操作如拖拽,鼠标滚动的操作改变视点的位置,根据视点位置计算当前视角内所需要的地图瓦片索引;将需要请求的地图索引集合放入瓦片状态管理器中,瓦片状态管理器管理每一张地图瓦片的生命周期,执行器根据每张地图瓦片数据的标志状态处理瓦片数据;当地图瓦片容器被填满时,利用改进LRU算法释放地图瓦片数据所占用的内存。51INTCL权利要求书1页说明书5页附图3页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书5页附图3页10申请公布号CN104063900ACN104063900A1/1页21一种基于WEBGL的三维地球的实现方法,利用WEBGL技术可以在支持WEB。
3、GL的浏览器上使用三维数字地球,实现跨平台跨浏览器的3D地球展示,其特征在于包括以下步骤1渲染一个可载入多层地图瓦片数据的WEBGL三维球体;2计算并请求当前视角下可见的瓦片数据;3瓦片数据管理,定义一个状态转换机来控制管理一张瓦片数据从被请求、传输、传输完成被渲染以及被释放内存的生命周期过程;4瓦片数据存储,定义了一个瓦片数据容器来存储瓦片数据。5使用CORS异域请求技术令三维地球应用与瓦片数据服务器分开,客户端与服务器端的功能分离,保证模块功能的独立性。2根据权利要求1中所述的方法,其特征在于步骤1中使用WEBGL技术,渲染一个可以载入多分辨率地图数据的三维球体,该三维球体可载入基于WMS。
4、协议的地图数据。3根据权利要求1中所述的方法,其特征在于步骤2中,利用当前视点所在位置计算视窗范围内的经纬度范围,根据该经纬度范围请求对应的瓦片地图数据。4根据权利要求1中所述的方法,其特征在于步骤3中状态变换机制使地图瓦片在其生命周期内在针对不同情况被执行器执行不同的操作。配合改进的LRU算法,当瓦片容器满时对不经常使用的地图瓦片进行剔除,释放内存,使程序在运行期间所占用的内存不会因为请求瓦片数量的增多而变大,保证了程序的稳定性和使用的流畅性。5根据权利要求1中所述的方法,其特征在于步骤4中瓦片容器存储满时对不经常使用的地图瓦片进行剔除,释放内存。6根据权利要求1中所述的方法,其特征在于步骤。
5、5中利用异域请求技术将三维数字地球与WMS服务器分开,使所有支持WMS的服务器的地图数据在三维地球上可视化,使服务器与三维地球二者的功能保证独立性。权利要求书CN104063900A1/5页3基于WEBGL的三维地球的实现方案技术领域0001本发明涉及数字地球技术领域,具体地说,是一种在浏览器上显示三维地球的方法。背景技术0002WEBGL是一种3D绘图标准,该绘图标准允许将脚本语言JAVASCRIPT与着色语言GLSL结合在一起。目前WEBGL已经在主流浏览器上支持,这其中包括了谷歌浏览器、火狐浏览器,SAFARI等浏览器。WEBGL的出现使得在浏览器上展示三维效果不再需要浏览器插件的支持,。
6、其直接利用底层的硬件加速对图形进行渲染,为开发人员提供了与传统三维桌面应用同样高效的图形渲染速度,本发明利用这一技术的特点,提出了一种不同于传统数字地球实现方法的技术方案。0003数字地球技术的概念是1998年时任美国副总统的戈尔提出的,其是一个与GIS、网络、虚拟现实、三维技术,意在利用计算机技术、多媒体技术以及存储技术为基础、以网络为枢纽,运用大量的地理数据对地球进行多角度、多分辨率、多尺度、多时空的三维描述及展示,以此来直观地认识人类所居住的星球。近年来,数字地球的发展十分迅速,这一发展与硬件水平的发展、完备的数据支持、用户需求、网络技术的发展息息相关。目前比较成熟的三位数字地球解决方案。
7、有谷歌地球、WORLDWIND等。0004WMSWEB地球位置服务利用具有地理空间位置信息的数据制作地图,其中将地图定义为地理数据可视的表现,地图本身并不是数据。服务器端的地图数据通常以JPG或者PNG的格式的切片形式存储。WMS为外部提供地图数据服务,其根据一个来自客户端的请求,响应返回客户端指定范围的地图图像数据。0005CORS跨域资源共享是一种网络浏览器的技术规范,其允许网页从不同域访问其他资源,以避开浏览器的同源策略,是传统JSONP模式的替代品。0006WEB墨卡托投影将地球的地图数据定义为一张长宽都为400750166855784的正方形图像,并对地图数据进行分层。第0层数据为一。
8、张256X256的图像,其覆盖范围为全球。第1层数据将全球数据平均分为4块256X256的图像,每块覆盖范围为第0层数据覆盖范围的1/4。第N层的地图数据以此类推,层数越高,数据的分辨率越高,瓦片数据的个数越多。0007使用WEB墨卡托地理坐标算出该地理坐标所对应的地图瓦片索引号,其对应的计算公式如下0008公式10009其中TILESIZE为Z层每一张瓦片数据对应的WEB墨卡托的地理坐标范围,IDX,IDY为瓦片的索引号,PX和PY为WEB墨卡托的地理坐标0010使用WEB墨卡托地理坐标X,Y算出所对应的经纬度坐标,其对应公式如下说明书CN104063900A2/5页40011公式20012。
9、其中LON,LAT为经纬度,X,Y为对应的墨卡托投影地理坐标,RADIUS为对应的球体半径,这里所用的就是地球的半径。0013传统的数字地球实现是在服务器/客户端的架构下,开发基于WMS协议的客户端桌面程序,程序运行时向远端提供WMS服务的服务器请求地图数据。基于这种模式下开发的程序需要在每一台使用三维数字地球的终端上进行繁杂的部署安装。由于每一个终端所使用的操作系统不同,需要针对不同的操作系统开发出一套具有相同功能的桌面程序,中间用于移植的工作量大。0014与传统展示数字地球技术不同的是本发明利用WEBGL技术实现了基于浏览器/服务器架构的三维地球,利用WEBGL标准实现了跨平台跨浏览器的三。
10、维数字地球展示。程序使用脚本语言JAVASCRIPT控制显卡、完成地图数据的调用以及用户交互的响应。这种模式下的三维地球实现只需要终端上安装支持WEBGL标准的浏览器即可,而目前流行的浏览器都已经对WEBGL提供了支持。相比传统模式,部署更加简单方便,可拓展性高。并且,由于浏览器的跨平台特性,在这一架构下实现的数字地球移植性高。基于浏览器模式下的应用只会在调用时占用硬盘临时空间。基于这种架构下实现的数字地球需要充分利用脚本语言的灵活性,与此同时避免脚本语言在实现上的局限性。本发明基于这样一个扬长避短的原则下提出如下几个方案来解决使用JAVASCRIPT脚本语言开发WEBGL三维地球中遇到的问题。
11、。发明内容0015本发明的目的是提供一种基于WEBGL的三维地球的实现方法。0016本发明的基本思路为00171渲染一个可载入多层地图瓦片数据的WEBGL三维球体;00182计算并请求当前视角下可见的瓦片数据;00193瓦片数据管理,定义一个状态转换机来控制管理一张瓦片数据从被请求、传输、传输完成被渲染以及被释放内存的生命周期过程;00204瓦片数据存储,定义了一个瓦片数据容器来存储瓦片数据。00215使用CORS异域请求技术令三维地球应用与瓦片数据服务器分开,客户端与服务器端的功能分离,保证模块功能的独立性。0022进一步,步骤1中使用WEBGL技术,渲染一个可以载入多分辨率地图数据的三维球。
12、体,该三维球体可载入基于WMS协议的地图数据。0023进一步,步骤2中,利用当前视点所在位置计算视窗范围内的经纬度范围,根据该经纬度范围请求对应的瓦片地图数据。0024进一步,步骤3中状态变换机制使地图瓦片在其生命周期内在针对不同情况被执行器执行不同的操作。配合改进的LRU算法,当瓦片容器满时对不经常使用的地图瓦片进行剔除,释放内存,使程序在运行期间所占用的内存不会因为请求瓦片数量的增多而变大,保证了程序的稳定性和使用的流畅性。0025进一步,步骤4中瓦片容器存储满时对不经常使用的地图瓦片进行剔除,释放说明书CN104063900A3/5页5内存。0026进一步,步骤5中利用异域请求技术将三维。
13、数字地球与WMS服务器分开,使所有支持WMS的服务器的地图数据在三维地球上可视化,使服务器与三维地球二者的功能保证独立性。基于WEBGL的三维地球的实现方案附图说明0027图1是总技术方案的流程示意图0028图2是基础球体的示意图0029图3是三维数字地球的启动的初始化展示图0030图4和图5是请求瓦片计算的示意图0031图6是瓦片状态转换机的示意图0032图7是在谷歌浏览器上的三维地球展示图具体实施方式00331基于WEBGL技术,定义一个球体为基础球体如说明书附图2所示,该球体由多块三角形组成,可以调整参数使球体在经纬度两个方向精度更高。基础球体使用底图做渲染,作为程序初始状态的球体形状如。
14、说明书附图3所示。精度越高三角形的个数就越多,但对于基础球体来说不需要精度过高。0034所请求的地图瓦片则是以一个球体上方的扇面的形式渲染到球体上。当瓦片请求并传输完成时,使用瓦片的索引值计算该瓦片起始点的WEB墨卡托地理坐标公式一,利用WEB墨卡托投影的地理坐标使用来计算该瓦片所对应的球体上的经纬度位置公式二,而后在球体的上方渲染一张以该瓦片为纹理的扇面。00352对于当前视点下所需要请求的地图瓦片索引计算利用当前视点和选取的视窗边界点左上,左下,右上以及右下点的世界坐标,以视点为顶点做射线与三维地球做拾取PICKING检测。在检测射线与三维地球具有交点时,利用交点的世界坐标计算所在视窗请求。
15、影像的地理坐标范围,根据给地理坐标范围计算当前视点所处的位置应该显示的是地图数据的第几层数据以及该层中所对应的地图瓦片索引号,并发出HTTP请求向WMS服务器请求所对应的地图瓦片数据,将传输获得的瓦片数据渲染在三维地球的对应区域。0036如附说明书图4所示,利用视点V以及视窗口边界点A,B构造两条射线VA和VB于球体相交于A和B点。已知视点V到球心O的距离VO,VA,VB以及球体的半径,即可利用三角函数公式计算张角就可算出纬度的范围,同理可以算出经度范围。计算瓦片的范围后请求的瓦片为当前视窗内的所有可见地图瓦片及该区域范围对应的上一层瓦片数据。0037但是这样的计算方式会消耗大量的时间在范围的。
16、计算上,本发明中采用一种更为简单但是有效的方法来计算请求的地图瓦片地理范围。首先做如下的约定视点的位置始终位于视窗的正中间,视窗的窗口长宽比为11,在操作球体的过程只能旋转球体或者改变视点相对球体的海拔高度。这一约定之后,附说明书图4就可以直接变成说明书图5的结果,这时计算张角就可以利用简单的三角函数公式0038说明书CN104063900A4/5页60039而纬度的范围就为2,同理由于限定视窗长宽比例为11,所以经度的范围也为2。每次做拾取检测时也只要做对于视窗中某个顶点的检测即可,根据对称原则,其他四个点的经纬度范围也会被确定。00403对于瓦片地图数据的管理,分为三个部分瓦片容器的瓦片管。
17、理、对于瓦片状态的监控器以及执行器。0041下面对着三个组件做一一说明0042一、瓦片管理地图瓦片容器具有固定的大小,所以只能用来装填一定数量的地图瓦片,这样的机制保证计算机的内存被高效利用,而不会因为请求太多的瓦片数据导致内存被消耗殆尽。当地图瓦片被填满时,借鉴操作系统中LRU算法最近最少使用算法将一些不需要用的地图瓦片从瓦片容器中移出。0043本发明在LRU的基础上添加另一种移出地图瓦片的策略对于每张瓦片都标记使用次数用来记录某一块瓦片被请求的次数,当需要将地图瓦片从瓦片容器中移出时,检测容器中末端的瓦片,如果使用次数达不到指定次数的瓦片就全部移出容器。这样的策略与原生的LRU算法不同的是。
18、保证了当瓦片容器被填满的时候,对于新的瓦片请求并不是每次都是移出一张旧的瓦片数据后再添加一张新的瓦片数据,而是当容器被填满时移出一大部分不被经常使用的瓦片后再添加新的瓦片数据,提高了效率。0044二、由于瓦片数据在被传输、使用和删除释放的过程中存在很多不确定性因素,所以对于每个瓦片数据的生命周期的管理也是三维地球中的难题。本发明中的地图瓦片状态监控器定义了一个状态转换机,实现了对瓦片请求状态的管理。其规定了展示在地图瓦片容器中的每一张瓦片,都具有“未请求”,“开始”、“正在传输”、“完成”、“传输中断”、“删除”六个状态,下面对这六种状态做一一说明0045“未请求”,即地图瓦片数据没有被放入瓦。
19、片容器中,所有瓦片的初始状态都为“未请求”。0046“开始”,即地图瓦片数据已经被允许请求且数据还未开始传输。0047“正在传输”,地图瓦片数据已经发出传输请求,并正在传输且还未传输结束。0048“传输中断”,地图瓦片数据中断传输,只发生在“正在传输”状态之后。0049“完成”,瓦片数据已经传输完成,并被成功渲染在三维球体上。0050“删除”,地图瓦片数据被删除0051三、执行器是一个定时器,其对地图瓦片容器中的数据进行定时遍历,对如下不同状态进行不同的处理方式状态转换图如附说明书图6所示0052对于“开始”状态的瓦片,向服务器发出瓦片传输请求,并将状态位标记为“正在传输”0053对于“正在传。
20、输”状态的瓦片,不做处理0054对于“传输中断”状态瓦片,释放其所对应的资源,并标记其状态为“未请求”状态0055对于“传输完成”,当传输完成时,将瓦片数据渲染在球体上,并标记状态为“完成”0056对于“删除”状态的瓦片,释放其对应的内存资源,并标记其状态为“未请求”0057对于“未请求”状态的瓦片不做处理说明书CN104063900A5/5页700584瓦片数据的存储地图瓦片数据被载入后如果被增加,删除以及修改,这是三维地图应用中需要解决的问题。由于WEBGL技术采用的是JAVASCRIPT脚本语言,所以对于瓦片的管理如果直接采用普通数组的形式来管理,会降低效率,所以本发明中对瓦片数据的管理。
21、是基于哈希数组,对于每一个瓦片数据都有一个特定的标识符,利用该标识符做为该数据在瓦片容器中的键KEY,对应的VALUE值即为瓦片数据。键值方式的存储有利于地图数据的索引和插入,提高了数据存储的效率。脚本语言JAVASCRIPT中的数组的索引可以直接使用字符串作为索引,利用这一特点,可以直接实现对地图瓦片数据的哈希存储,保证每个地图瓦片都有特定的键与其的值一一对应。举例来说,请求的索引号为X100,Y798,Z3的瓦片数据已经传输到达,这时为了把这个数据加入,就将瓦片数组索引为“100_798_3”的数值赋值为瓦片数据。地图瓦片容器不存储重复的数据,当添加新的数据时,根据索引编号判断瓦片数据是否。
22、存在,若存在就添加,不存在就不添加并把使用次数加一。删除瓦片时根据索引找到瓦片对象,并释放内存。00595传统的JAVASCRIPT技术只能请求在同域下的资源,而对于其他域下的资源,需要通过JSON的形式请求,而后再把JSON请求转化为图像数据。本发明中请求地图瓦片数据使用CORS异域请求技术让三维地球请求的地图数据可以与其在不同的域下,这样就可以使三维地球应用与实际的服务器完全分离开。这一技术保证了,本发明的三维地球能够对于提供WMS服务的服务器所提供的地图数据做展示,保证了服务器端和客户端的功能独立性0060应当指出,以上所述具体实施方式可以使本领域的技术人员更全面地理解本发明,但不以任何方式限制本发明。因此,本领域技术人员应当理解,仍然可以对本发明进行修改或者等同替换;而一切不脱离本发明的精神和技术实质的技术方案及其改进,其均应涵盖在本发明专利的保护范围当中。说明书CN104063900A1/3页8图1图2说明书附图CN104063900A2/3页9图3图4图5图6说明书附图CN104063900A3/3页10图7说明书附图CN104063900A10。