WEBGL可视域瓦片剔除方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:35470977 阅读:18 留言:0更新日期:2022-11-05 16:16
本发明专利技术实施例公开了WEBGL可视域瓦片剔除方法、装置、计算机设备及存储介质。方法包括:计算可视区域内的根节点的瓦片;遍历所有瓦片数据源;创建数据存储器;剔除可视区域内的根节点,存储于第一数组内;遍历第一数组中的瓦片;判断当前瓦片层级是否可以继续细分;若是,则利用四叉树查询获取当前瓦片的四个子瓦片;遍历子瓦片;判断子瓦片是否遍历完毕;则将视锥体内部的当前子瓦片存储到第一数组内;按层级将需要存储的当前的瓦片存储到数据存储器中,遍历完毕第一数组时输出数据存储器内的所有瓦片数据源对应层级的所有瓦片信息。通过实施本发明专利技术实施例的方法使WEBGL渲染引擎通过简单计算就可获取到视锥体内部瓦片信息的方式,降低GIS地图开发门槛。降低GIS地图开发门槛。降低GIS地图开发门槛。

【技术实现步骤摘要】
WEBGL可视域瓦片剔除方法、装置、计算机设备及存储介质


[0001]本专利技术涉及WEBGL,更具体地说是指WEBGL可视域瓦片剔除方法、装置、计算机设备及存储介质。

技术介绍

[0002]一般WEBGL(3D绘图协议,Web Graphics Library)引擎例如babylonjs或者threejs、playcanvas等引擎以渲染和功能为主,对于GIS(地理信息系统,Geographic Information System)方面的能力比较弱,专业基于WEBGL的GIS引擎如Mapbox、cesium等GIS引擎主要以数据处理为主,渲染效果上不尽人意。两种类型的引擎虽然在一定程度上可以进行图层叠加处理,但是两者融合起来始终多多少少会有兼容问题,给GIS或者交互渲染为主的WEBGL从业人员带来很大的困扰。在实际项目开发过程中,由于GIS引擎中屏幕空间范围内瓦片计算复杂,需要将屏幕空间范围转换成地理范围,将地理范围再转换成瓦片编号,不同的计算方式也会带来不同的精度损失,比如主流的GIS引擎大多将3D地图瓦片计算的水平角度控制在89度或者更低,很多WEBGL开发者难以理解复杂的计算过程,导致很多熟悉渲染,但是缺少专业GIS知识的开发人员难以实现GIS地图。GIS从业者对于基于物理的渲染引擎了解的比较少,大多主要研究数据处理以及大规模数据优化领域,所以GIS引擎的渲染效果一般无法与专注与渲染的WEBGL引擎相比,导致开发的项目效果很难与这些引擎媲美。
[0003]针对上述问题,目前的做法一般是主场景搭建使用GIS引擎比如Mapbox,,Cesium等,然后在此基础上叠加一层canvas使用专注于渲染的WEBGL引擎,以渲染精细模型,但是这种方式不仅性能无法保障,而且整个项目也过于繁重,开发人员必须学习两种类型的引擎才能驾驭项目,人员成本高,开发周期长,项目繁琐难以维护。
[0004]因此,有必要设计一种新的方法,以使WEBGL渲染引擎通过简单计算就可以获取到视锥体内部瓦片信息的方式,降低GIS地图开发门槛。

技术实现思路

[0005]本专利技术的目的在于克服现有技术的缺陷,提供WEBGL可视域瓦片剔除方法、装置、计算机设备及存储介质。
[0006]为实现上述目的,本专利技术采用以下技术方案:WEBGL可视域瓦片剔除方法,包括:
[0007]计算可视区域内的根节点的瓦片,并获取所有瓦片数据源;
[0008]遍历所有瓦片数据源,并获取所有瓦片数据源当前状态所在层级,以得到层级数据;
[0009]对所述层级数据去重;
[0010]创建数据存储器,并存储每个层级数据对应的瓦片数据源;
[0011]剔除所述可视区域内的根节点,以得到剔除结果,并将所述剔除结果存储于第一数组内;
[0012]遍历第一数组中的瓦片;
[0013]判断所述第一数组中的瓦片是否遍历完毕;
[0014]若第一数组中的瓦片未遍历完毕,则判断当前瓦片层级是否可以继续细分;
[0015]若当前瓦片层级可以继续细分,则利用四叉树查询获取当前瓦片的四个子瓦片;
[0016]遍历当前瓦片的子瓦片;
[0017]判断当前瓦片的子瓦片是否遍历完毕;
[0018]若当前瓦片的子瓦片未遍历完毕,则判断所述子瓦片是否在视锥体内部;
[0019]若所述子瓦片在视锥体内部,则将当前子瓦片存储到第一数组内;
[0020]判断当前瓦片是否需要存储;
[0021]若当前瓦片需要存储,则按层级将当前的瓦片存储到数据存储器中,并执行所述遍历当前瓦片的子瓦片;
[0022]若所述第一数组中的瓦片遍历完毕,则输出所述数据存储器内的所有瓦片数据源对应层级的所有瓦片信息。
[0023]其进一步技术方案为:所述判断当前瓦片层级是否可以继续细分之后,还包括:
[0024]若所述当前瓦片层级不可以继续细分,则执行所述遍历第一数组中的瓦片。
[0025]其进一步技术方案为:所述判断所述子瓦片是否在视锥体内部之后,还包括:
[0026]若所述子瓦片不在视锥体内部,则执行所述遍历当前瓦片的子瓦片。
[0027]其进一步技术方案为:所述判断当前瓦片是否需要存储之后,还包括:
[0028]若当前瓦片不需要存储,则执行所述遍历当前瓦片的子瓦片。
[0029]其进一步技术方案为:所述计算可视区域内的根节点的瓦片,并获取所有瓦片数据源,包括:
[0030]更新相机投影矩阵;
[0031]利用所述相机投影矩阵更新视锥体;
[0032]计算可视区域内根节点的瓦片或者设置根节点瓦片空间坐标为零点;
[0033]获取所有瓦片数据源。
[0034]其进一步技术方案为:所述对所述层级数据去重,包括:
[0035]通过javaScript的Set对象对所述层级数据去重。
[0036]其进一步技术方案为:所述判断当前瓦片是否需要存储,包括:
[0037]判断所述数据存储器内的数据是否存在子瓦片层级对应的数组;
[0038]若所述数据存储器内的数据存在子瓦片层级对应的数组,则确定当前瓦片需要存储;
[0039]若所述数据存储器内的数据不存在子瓦片层级对应的数组,则确定当前瓦片不需要存储。
[0040]本专利技术还提供了WEBGL可视域瓦片剔除装置,包括:
[0041]瓦片计算单元,用于计算可视区域内的根节点的瓦片,并获取所有瓦片数据源;
[0042]第一遍历单元,用于遍历所有瓦片数据源,并获取所有瓦片数据源当前状态所在层级,以得到层级数据;
[0043]去重单元,用于对所述层级数据去重;
[0044]存储器创建单元,用于创建数据存储器,并存储每个层级数据对应的瓦片数据源;
[0045]剔除单元,用于剔除所述可视区域内的根节点,以得到剔除结果,并将所述剔除结果存储于第一数组内;
[0046]第二遍历单元,用于遍历第一数组中的瓦片;
[0047]第一判断单元,用于判断所述第一数组中的瓦片是否遍历完毕;
[0048]第二判断单元,用于若第一数组中的瓦片未遍历完毕,则判断当前瓦片层级是否可以继续细分;
[0049]查询单元,用于若当前瓦片层级可以继续细分,则利用四叉树查询获取当前瓦片的四个子瓦片;
[0050]第三遍历单元,用于遍历当前瓦片的子瓦片;
[0051]第三判断单元,用于判断当前瓦片的子瓦片是否遍历完毕;
[0052]第四判断单元,用于若当前瓦片的子瓦片未遍历完毕,则判断所述子瓦片是否在视锥体内部;
[0053]第一存储单元,用于若所述子瓦片在视锥体内部,则将当前子瓦片存储到第一数组内;
[0054]第五判断单元,用于判断当前瓦片是否需要存储;
[0055]第二存储单元,用于若当前瓦片需要存储,则按层级将当前的瓦片存储到数据存储器中,并执行所述遍历当前瓦片本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.WEBGL可视域瓦片剔除方法,其特征在于,包括:计算可视区域内的根节点的瓦片,并获取所有瓦片数据源;遍历所有瓦片数据源,并获取所有瓦片数据源当前状态所在层级,以得到层级数据;对所述层级数据去重;创建数据存储器,并存储每个层级数据对应的瓦片数据源;剔除所述可视区域内的根节点,以得到剔除结果,并将所述剔除结果存储于第一数组内;遍历第一数组中的瓦片;判断所述第一数组中的瓦片是否遍历完毕;若第一数组中的瓦片未遍历完毕,则判断当前瓦片层级是否可以继续细分;若当前瓦片层级可以继续细分,则利用四叉树查询获取当前瓦片的四个子瓦片;遍历当前瓦片的子瓦片;判断当前瓦片的子瓦片是否遍历完毕;若当前瓦片的子瓦片未遍历完毕,则判断所述子瓦片是否在视锥体内部;若所述子瓦片在视锥体内部,则将当前子瓦片存储到第一数组内;判断当前瓦片是否需要存储;若当前瓦片需要存储,则按层级将当前的瓦片存储到数据存储器中,并执行所述遍历当前瓦片的子瓦片;若所述第一数组中的瓦片遍历完毕,则输出所述数据存储器内的所有瓦片数据源对应层级的所有瓦片信息。2.根据权利要求1所述的WEBGL可视域瓦片剔除方法,其特征在于,所述判断当前瓦片层级是否可以继续细分之后,还包括:若所述当前瓦片层级不可以继续细分,则执行所述遍历第一数组中的瓦片。3.根据权利要求1所述的WEBGL可视域瓦片剔除方法,其特征在于,所述判断所述子瓦片是否在视锥体内部之后,还包括:若所述子瓦片不在视锥体内部,则执行所述遍历当前瓦片的子瓦片。4.根据权利要求1所述的WEBGL可视域瓦片剔除方法,其特征在于,所述判断当前瓦片是否需要存储之后,还包括:若当前瓦片不需要存储,则执行所述遍历当前瓦片的子瓦片。5.根据权利要求1所述的WEBGL可视域瓦片剔除方法,其特征在于,所述计算可视区域内的根节点的瓦片,并获取所有瓦片数据源,包括:更新相机投影矩阵;利用所述相机投影矩阵更新视锥体;计算可视区域内根节点的瓦片或者设置根节点瓦片空间坐标为零点;获取所有瓦片数据源。6.根据权利要求1所述的WEBGL可视域瓦片剔除方法,其特征在于,所述对所述层级数据去重,包括:通过javaScript的Set对象对所述层级...

【专利技术属性】
技术研发人员:李云飞柳遵梁谷军年刘俊杰张浩朱琴琴
申请(专利权)人:杭州美创科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1