System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于地图管理,具体为一种基于webgl的三维地图动态加载方法。
技术介绍
1、打造数字智能的智慧运输服务,大量的数字孪生应用应运而生。数字孪生的重要意义在于实现了现实物理系统向数字化模型的反馈,能够基于数字化模型进行各类仿真、分析、数据积累、挖掘,甚至可以研发出人工智能相关应用。大部分数字孪生应用离不开数字底座,也就是基于真实地理信息数据搭建的地形模型,但是地形模型因其自身范围大、数量多,所以如何流畅地动态加载卸载地形块成为了三维可视化环境研究的重要问题之一,由于网页的性能限制,所以该问题在网页端尤其突出。
2、使用传统的根据视点位置来遍历所有的地形块在处理大量地形块的时候必然会占用较多计算机资源甚至造成程序卡顿,掉帧,所以现在更多的方式是使用空间加速结构来存储待遍历的对象,比如bvh(层次包围盒)、二叉树、四叉树、八叉树和k-d树等,这些结构能够在进行空间查找的时候降低时间复杂度,但是随着场景中的地形范围越来越大,地形块越来越多,这些结构的预处理时间也会不断增长,同时越来越复杂的层次结构和大量紧密耦合的节点被用来表示地形结构,所以会导致遍历效率大大降低。
3、例如,现有技术中,公开号为:“cn113706700a”的专利技术专利“基于数据可视化的三维地图实现方法”利用三维设计工具制作数据可视化三维地图,需要获取地图轮廓、确定地图轮廓样条、选择挤压好的地图模型、生成相应的目标文件。就存在根据视点位置来遍历所有地形块或者常用的空间加速结构来存储地形块数据都会占用较多计算机资源。
4、综
技术实现思路
1、本专利技术的目的在于提供一种基于webgl的三维地图动态加载方法,以解决
技术介绍
中提出的,现有技术中,根据视点位置来遍历所有地形块或者常用的空间加速结构来存储地形块数据都会占用较多计算机资源的问题。
2、为解决上述技术问题,本专利技术所采用的技术方案是:
3、一种基于webgl的三维地图动态加载方法,包括以下步骤:
4、步骤s1,获取地理信息数据;地理信息数据包括卫星图片数据、地形高程数据、地图幅号及分幅比例;
5、步骤s2,生成单块地形;根据地图幅号和分幅比例获取地图的经纬度范围、地图位置、地图大小、高程图和卫星影像生成单块地形;
6、步骤s3,地形的动态加载及卸载;具体包括以下步骤:
7、步骤s301,设置当前视点的经纬度;
8、步骤s302,根据经纬度得到地图的分幅编号,并且判断视点在该图幅范围的位置;
9、步骤s303,判断视点位于当前地形块的位置;并根据视点位于当前地形块的位置加载相邻的三块地形;判断加载地图的分幅比例,如果地图的分幅比例为1∶100万的地图,则采用如下公式进行计算:
10、
11、b=[λ/60]+31
12、其中,a、b为1∶100万图幅行号及列号所对应的数字码,为经纬度数据;为所求比例尺地形图分幅的纬差、经差;
13、如果为1∶50万-1∶5000的地图,则采用如下公式进行计算:
14、
15、
16、其中,c、d为所求比例尺地图的行列号;为某地的经纬度;为所求比例尺地形图分幅的纬差、经差;
17、步骤s304,视点位置发生变化时重复步骤s302和步骤s303,如果相邻块已经加载,不采取任何操作;如果没有加载,则加载地形;如果地形不需要加载,就卸载地形。
18、根据上述技术方案,步骤s2中,根据地图幅号和分幅比例获取地图的经纬度范围、地图位置和地图大小并生成单块地形具体为:
19、步骤s201,首先判断地图的地图幅号和分幅比例,如果地图的分幅比例为1∶100万地图,则采用如下公式计算:
20、λ=(b-31)*60
21、
22、其中,λ为图幅左下角的经度,为图幅左下角的纬度,a为1∶100万的行列数字码,b为1∶100万的行列数字码;
23、如果为1∶50万-1∶5000地图,则采用如下公式进行计算:
24、λ=(b-31)*60+(d-1)*δλ
25、
26、其中,c为该比例尺地形图在1∶100万地形图编号后的行号,d为该比例尺地形图在1∶100万地形图编号后的列号,δλ:为该比例尺地形图分幅的经差,为该比例尺地形图分幅的纬差。
27、根据上述技术方案,地图幅号的经纬度由左下角经纬度加上地图幅号比例尺地形图的经差、纬差获得,具体为:
28、地图中心点经纬度:
29、
30、地图大小:
31、c=sin(lata*pi/180)*sin(latb*pi/180)+cos(lata*pi/180)*cos(latb*pi/180)*cos((lona-lonb)*pi/180)
32、distance=r*arccos(c)*pi/180
33、其中r为地球半径,为6371.004千米,lata为点a的纬度,lona为点a的经度,latb为点b的纬度,lonb为点b的经度,distance为两个经纬度点之间的距离,三角函数的输入和输出都采用弧度值,c表示距离的弧度值。
34、根据上述技术方案,在步骤s2中,解析地形高程数据具体为:
35、通过解析地形高程数据获得地形高程数据的二维数组;
36、
37、其中,altitude为当前点的重映射高程值,z为该点原高程值,z(min)为该范围内所有高程值的最小值,z(max)为该范围内所有高程值的最大值。
38、根据上述技术方案,步骤s2中,纹理映射具体为:
39、纹理映射将纹理像素(u,v)和物体空间顶点(x,y,z)的对应;寻找映射函数f,使得有:
40、(u,v)=f(x,y,z)
41、其中,(u,v)纹理坐标系的取值范围在[0,1],取纹理图像左下角为(0,0),右上角为(1,1)。
42、与现有技术相比,本专利技术具有以下有益效果:
43、通过本专利技术中的方法,能够根据真实地理信息数据,在webgl上快速生成大规模高精度真实三维地形块,并且在能够在视点漫游过程中流畅地动态加载卸载地形块。
44、通过本专利技术中的方法,能够根据真实地理信息数据1:1还原现实世界的地形,并且通过加载卸载算法能够在webgl上流畅运行,以此来满足现阶段。
本文档来自技高网...【技术保护点】
1.一种基于Webgl的三维地图动态加载方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的一种基于Webgl的三维地图动态加载方法,其特征在于:步骤S2中,根据地图幅号和分幅比例获取地图的经纬度范围、地图位置和地图大小并生成单块地形具体为:
3.根据权利要求2所述的一种基于Webgl的三维地图动态加载方法,其特征在于:地图幅号的经纬度由左下角经纬度加上地图幅号比例尺地形图的经差、纬差获得,具体为:
4.根据权利要求1所述的一种基于Webgl的三维地图动态加载方法,其特征在于:在步骤S2中,解析地形高程数据具体为:
5.根据权利要求1所述的一种基于Webgl的三维地图动态加载方法,其特征在于:步骤S2中,纹理映射具体为:
【技术特征摘要】
1.一种基于webgl的三维地图动态加载方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的一种基于webgl的三维地图动态加载方法,其特征在于:步骤s2中,根据地图幅号和分幅比例获取地图的经纬度范围、地图位置和地图大小并生成单块地形具体为:
3.根据权利要求2所述的一种基于webgl的三维地图动态加载方法,其...
【专利技术属性】
技术研发人员:刘一明,刘双侨,李茂苗,罗康军,邓鸿耀,
申请(专利权)人:四川易方智慧科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。