一种基于平滑渲染模式的地理信息数据融合可视化方法与流程

文档序号:33036126发布日期:2023-01-24 19:56阅读:34来源:国知局
一种基于平滑渲染模式的地理信息数据融合可视化方法与流程

1.本发明涉及数据可视化领域,具体涉及一种基于平滑渲染模式的地理信息数据融合可视化方法。


背景技术:

2.可视化分析是有效地融合地理信息数据并借助交互技术引导用户全面而细致地分析所呈现的多维、时空、动态、关联等特征。为了辅助用户精细化决策,研究基于多层级融合显示技术,才能有效适应用户多方位了解态势情况的需求。多层级融合可视化方式涉及到场景图层之间的变换问题,需要考虑到用户的视觉体验,为了能够给予用户更友好的交互效果,引入了透明度渲染的概念。在透明现象渲染领域存在较多的研究,如引入加权混合顺序的独立分层解决方案,提高颜色准确性的透明度,确保顺利跨层转换,但考虑到地理信息数据的多样化及复杂性,该方案在gis可视化(即地理信息可视化)领域的适应性不足,因为gis可视化渲染需要考虑的因素较多,如渲染效率、矢量融合等。目前,对现实世界的地图数据表达可以采用矢量和栅格数据模型。矢量瓦片类似栅格瓦片,借助多层次模型技术,将矢量数据分割成矢量要素描述文件并存储在服务器端,然后,由客户端请求服务数据并根据指定样式进行渲染绘制地图。当客户端通过分布式网络获取矢量瓦片、地图标注字体、图标、样式文件等数据后,最终在客户端进行渲染输出地图。考虑地理信息数据的特殊性,合理的解决方案是,在gis实时可视化渲染过程中,实现半透明渲染的通常做法是将在场景不透明物体完成渲染之后,对场景中半透明物体到摄像机的距离进行排序,从距离摄像机最远的的物体开始逐个叠加渲染,并在渲染中与输出缓冲中的原有颜色进行混合叠加。
3.一般来讲,为了辅助用户进行态势场景的分析,用户会关注更丰富的场景元素,如打开数字地球的时候,人们更乐意观察到地图的模式,从全局的角度鸟瞰国家、地区等情况,随着视高的不断拉近,数字地球将会展现更逼真的带有高程的影像效果,基于此,人们可以进行各种空间分析活动,当视点与地面的距离再次降低的时候,除了展现更加精细化的地形,融合更多的矢量元素将会更加符合用户的需求。
4.在动态图形显示系统中,三维地球调度、专业计算、信息处理、图形拾取、相机运算等都是由cpu完成的,gpu只是负责图形数据的渲染,随着图形数量的增加,二者均会产生更大的运算负荷。为了提高图形渲染的效率,更多的研究针对cpu与gpu的协同计算,而在gis可视化环境中,更多的情况是,gpu的并行运算能力并未被充分利用。


技术实现要素:

5.本发明目的:在于提供一种基于平滑渲染模式的地理信息数据融合可视化方法,该方法针对现有技术的不足,解决对地理信息系统多图层平滑融合渲染的问题。
6.为实现以上功能,本发明设计一种基于平滑渲染模式的地理信息数据融合可视化方法,针对目标区域所对应的包含同层级地理信息的各图层,执行步骤s1-步骤s6,基于gpu、cpu,以及opengl工具,对各图层进行融合渲染,并在设备端进行显示:
7.步骤s1:基于四叉树构造方法,对包含地理信息的至少一个图层进行切片处理,获得各图层分别对应的数据块集合,其中,将各图层表示为图层α1,α2,

αn,n表示图层总数,n≥1;
8.步骤s2:分别针对图层α1,α2,

αn,基于视锥体可视剔除算法,剔除视域之外的各数据块,以视域内的各数据块分别构建与各图层相对应的数据序列结合图形渲染缓存机制,对数据序列进行更新,剔除缓存中已存在的数据块,获得更新后的数据序列
9.步骤s3:针对缓存中已存在的数据块,将其传送到gpu的显存进行渲染,并在设备端进行显示,针对数据序列基于cpu调度采用多线程技术引接数据序列到内存中,引接过程中各数据序列分别开辟一条线程;
10.步骤s4:针对数据序列采用多线程技术,以数据块为单位进行融合,形成多线程融合的数据结构,其中融合过程中的融合元素包括颜色指令集,其中颜色指令为基于视高的透明度变化参数;
11.步骤s5:基于opengl工具的opengl纹理共享机制,将多线程融合的数据结构送到gpu的显存进行渲染;
12.步骤s6:将渲染完成后的多线程融合的数据在设备端进行显示,并对缓存中的数据块进行更新。
13.作为本发明的一种优选技术方案:步骤s1中所述图层的形式包括影像图、矢量图中的一种或多种,对应数据块形式为影像栅格瓦片或矢量瓦片。
14.作为本发明的一种优选技术方案:步骤s1中基于四叉树构造方法所划分的数据块内的数据集pk表达式如下式:
15.pk={y
i,j
|y
i,j
=h(x,z),0≤i,j≤p
size
,x=p
xoff
+2k·
i,y=p
zoff
+2k·
j}
16.式中,k为四叉树结构的细节层级,2k为采样的空间间隔,y
i,j
为顶点坐标对应的高程值,h(x,z)为高程值表示函数,x,z为采样顶点空间坐标,i,j为数据块内网格坐标,p
xoff
、p
zoff
为地形块内的偏移量,p
size
为每个层级行列编号的最大值。
17.作为本发明的一种优选技术方案:步骤s2中图形渲染缓存机制的具体方法如下:
18.基于视域内当前视点v,定义以当前视点v为中心,与当前视点v相邻的4个数据块为一级缓冲区域cache1,以一级缓冲区域cache1为中心,向四周各扩展一个数据块,定义该扩展区域为二级缓冲区域cache2,根据当前视点v移动方向,更新一级缓冲区域cache1、二级缓冲区域cache2中的数据块,在内存中建立一个缓冲区,用于存储上述一级缓冲区域cache1、二级缓冲区域cache2中的数据块。
19.作为本发明的一种优选技术方案:步骤s4中融合的过程如下:
20.定义数据序列中第i个数据块为根据各数据块所属场景,所形成的多线程融合的新型数据结构如下式:
[0021][0022]
其中,中的数据块属于场景m,f(x)m表示场景m的透明度,其中m取a或b,f(x)a为场景a的透明度,f(x)a=|h
a-x|/|h
a-hb|,ha为场景a的视高,hb为场景b的
视高,x为视点变量,其初始值为0;f(x)b为场景b的透明度,f(x)b=|x-hb|/|h
a-hb|。
[0023]
作为本发明的一种优选技术方案:步骤s5中的opengl纹理共享机制的具体方法如下:
[0024]
分别对内存和gpu的显存创建独立线程loadingthread、renderthread,然后采用opengl工具提供的共享机制,实现opengl纹理共享。
[0025]
作为本发明的一种优选技术方案:所采用的opengl工具提供的共享机制为共享渲染上下文的方法,即实现数据加载和渲染的纹理共享。
[0026]
有益效果:相对于现有技术,本发明的优点包括:
[0027]
本发明设计了一种基于平滑渲染模式的地理信息数据融合可视化方法,采用了多图层数据(含透明指令集)高度融合渲染的可视化方法,能够充分利用gpu并行计算的能力,提高渲染效率。视点漫游过程中,采用了基于均匀分布的透明度渲染切变方法,支持平滑友好的交互模式。。
附图说明
[0028]
图1是多图层数据独立渲染模式的逻辑图;
[0029]
图2是多图层数据独立渲染模式的伪代码;
[0030]
图3是多图层低程度融合渲染模式的逻辑图;
[0031]
图4是多图层低程度融合渲染模式效果图;
[0032]
图5是多图层高程度融合渲染模式的逻辑图;
[0033]
图6是多图层高程度融合渲染模式的操作机理图;
[0034]
图7是四叉树的构造流程图;
[0035]
图8是图形渲染数据块缓存机制图;
[0036]
图9是多图层高程度融合渲染模式效果图;
[0037]
图10是基于x86配置的瓦片渲染时间对比图;
[0038]
图11是基于龙芯设备的瓦片渲染时间对比图。
具体实施方式
[0039]
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
[0040]
针对多图层可视化现象,现有的技术多采用独立线程传输、独立线程渲染和渲染优先级控制策略,即多图层数据独立渲染模式,其逻辑图参照图1,图中α、β、γ、δ分别表示包含地理信息的图层,图中r、g、b、a分别表示red(红色)、green(绿色)、blue(蓝色)、alpha的色彩空间,图2为多图层数据独立渲染模式的伪代码,图中s
α
、s
β
、s
γ
、s
δ
分别代表图层α、β、γ、δ依据视锥体可视剔除算法确定的数据序列;代表图形渲染缓存机制;s

α
、s

β
、s

γ
、s

δ
为过滤掉缓存中存储的数据块的数据序列;为线程阻塞机制,确定图层数据渲染优先级;ρ1、ρ2、ρ3、ρ4为渲染优先级。
[0041]
多图层数据独立渲染模式需要cpu的大量参与,较大程度上影响了渲染的效率。现有的技术或采用低程度融合的方法,即除图层变换过程中透明度的设置问题外,将多路数据融合后显示,即多图层低程度融合渲染模式,其逻辑图参照图3,该种方法虽然在一定程
度上降低了cpu的参与度,但依据瓦片颜色阵列修改透明度的方式容易产生图层斑驳效果,多图层低程度融合渲染模式效果图参照图4。
[0042]
相对于现有技术的多图层低程度融合渲染模式,本发明设计一种多图层高程度融合渲染模式,即一种基于平滑渲染模式的地理信息数据融合可视化方法,其逻辑图参照图5,操作机理图参照图6,针对目标区域所对应的包含同层级地理信息的各图层,执行步骤s1-步骤s6,基于gpu、cpu,以及opengl工具,对各图层进行融合渲染,并在设备端进行显示,图6中level表示步骤执行层级,level0-level4表明步骤执行的先后顺序,level相同的步骤为并行执行:
[0043]
步骤s1:基于四叉树构造方法,对包含地理信息的至少一个图层进行切片处理,获得各图层分别对应的数据块集合,其中,将各图层表示为图层α1,α2,

αn,n表示图层总数,n≥1。
[0044]
其中,所述图层的形式包括影像图、矢量图中的一种或多种,对应数据块形式为影像栅格瓦片或矢量瓦片。
[0045]
参照图7,多层次gis可视化是以四叉树为基础结构,四叉树是自顶向下对图层进行逐步划分的一种树状层次结构,直至树状层次结构达到预设层次要求。以影像图为例,采用基于视点相关和局部地形粗糙程度相结合的误差评价准则来自顶向下地构建多分辨率四叉树,采用地形块中心点到视点的距离和局部地形粗糙度相结合的准则,来确定节点是否需要细分,其中每个非叶子节点都有四个子节点,子节点将父节点的地形块均等细分成4部分,自上而下细节层次逐渐提高,地形表面由粗到细而逐渐细化。
[0046]
步骤s1中基于四叉树构造方法所划分的数据块内的数据集pk表达式如下式:
[0047]
pk={y
i,j
|y
i,j
=h(x,z),0≤i,j≤p
size
,x=p
xoff
+2k·
i,y=p
zoff
+2k·
j}
[0048]
式中,k为四叉树结构的细节层级,2k为采样的空间间隔,y
i,j
为顶点坐标对应的高程值,h(x,z)为高程值表示函数,x,z为采样顶点空间坐标,i,j为数据块内网格坐标,p
xoff
、p
zoff
为地形块内的偏移量,p
size
为每个层级行列编号的最大值。
[0049]
步骤s2:分别针对图层α1,α2,

αn,基于视锥体可视剔除算法,剔除视域之外的各数据块,以视域内的各数据块分别构建与各图层相对应的数据序列结合图形渲染缓存机制,对数据序列进行更新,剔除缓存中已存在的数据块,获得更新后的数据序列(level0);
[0050]
由于大规模或超大规模地形块数量巨大,不可能把所有地形数据全部调入内存,本发明采用动态调度技术把部分必要的数据块调入内存,把需要渲染的数据块调入gpu显存中。由于外存到内存的数据传输速度远低于内存到显存的传输速度,需要在内存中建立一个作为装载高度图和纹理图像的缓冲区域。
[0051]
步骤s2中图形渲染缓存机制的具体方法如下:
[0052]
基于视域内当前视点v,定义以当前视点v为中心,与当前视点v相邻的4个数据块为一级缓冲区域cache1,以一级缓冲区域cache1为中心,向四周各扩展一个数据块,定义该扩展区域为二级缓冲区域cache2,根据当前视点v移动方向,更新一级缓冲区域cache1、二级缓冲区域cache2中的数据块,在内存中建立一个缓冲区,用于存储上述一级缓冲区域cache1、二级缓冲区域cache2中的数据块。
[0053]
根据漫游时当前视点v的位置和运动方向,采用动态加载地形块到缓冲区域中。数据块调度原理图参照图8。左侧视图为当前视点v移动前的缓存结构,右侧视图为当前视点v更新后的缓存结构。
[0054]
其中,在opengl工具中缓存数据共包含7各步骤:生成(generate):为gpu控制的缓存生成一个独一无二的标识符;绑定(bind):为接下来的运算提供一个缓存;缓存数据(buffer data):为当前绑定的缓存分配并初始化足够的连续内存;启用(enable)或者禁止(disable):判断在接下来的渲染中是否使用缓存中的数据;设置指针(set pointers):在缓存数据的类型所需要访问数据的内存便宜量;绘图(draw):使用当前绑定并启用的缓存数据渲染整个场景或者是某个场景的一部分;删除(delete):删除以前生成缓存并释放相关的资源。对于缓存中已经存在的数据可依据唯一标识符进行识别。
[0055]
步骤s3:针对缓存中已存在的数据块,将其传送到gpu的显存进行渲染,并在设备端进行显示(level1),针对数据序列基于cpu调度采用多线程技术引接数据序列到内存中(level1),引接过程中各数据序列分别开辟一条线程;
[0056]
步骤s4:针对数据序列采用多线程技术,以数据块为单位进行融合,形成多线程融合的数据结构,其中融合过程中的融合元素包括颜色指令集(level2),其中颜色指令为基于视高的透明度变化参数;
[0057]
多场景的可视化方式不可避免的涉及场景图层之间的变换问题,为了能够给予用户更友好的交互效果及视觉体验,引入了透明度变换的理念。本发明采用符合均匀分布的着色方案,假设hb可数值化为场景b对应的视高,ha可数值化为场景a对应的视高,x为场景变换过程中的视点变量。
[0058]
透明度变换符合如下概率分布f(x):
[0059][0060]
步骤s4中融合的过程如下:
[0061]
定义数据序列中第i个数据块为根据各数据块所属场景,所形成的多线程融合的数据结构如下式:
[0062][0063]
其中,中的数据块属于场景m,f(x)m表示场景m的透明度,其中m取a或b,f(x)a为场景a的透明度,f(x)a=|h
a-x|/|h
a-hb|,ha为场景a的视高,hb为场景b的视高,x为视点变量,其初始值为0;f(x)b为场景b的透明度,f(x)b=|x-hb|/|h
a-hb|。
[0064]
步骤s5:基于opengl工具的opengl纹理共享机制,将多线程融合的数据结构送到gpu的显存进行渲染(level3);
[0065]
步骤s5中的opengl纹理共享机制的具体方法如下:
[0066]
分别对内存和gpu的显存创建独立线程loadingthread、renderthread,然后采用opengl工具提供的共享机制,实现opengl纹理共享。
[0067]
所采用的opengl工具提供的共享机制为共享渲染上下文的方法,即实现数据加载和渲染的纹理共享。
[0068]
opengl纹理共享机制的原理如下:
[0069]
针对多线程数据,使用opengl工具进行绘制,需要构建队列和多个线程(包括融合渲染线程),分别用于引接数据并且融合渲染。
[0070]
以其中一个单线程数据为例,创建两个渲染上下文代码如下:
[0071]
hglrc rendcontext1=wglcreatecontext(hdc);
[0072]
hglrc rendcontext2=wglcreatecontext(hdc);
[0073]
然后采用wglsharelists方法共享上下文:
[0074]
wglsharelists(rendcontext2,rendcontext1);
[0075]
最后即可实现数据加载和渲染的纹理共享操作:
[0076][0077]
步骤s6:将渲染完成后的多线程融合的数据在设备端进行显示,并对缓存中的数据块进行更新(level4)。
[0078]
本发明所设计的基于平滑渲染模式的地理信息数据融合可视化方法的效果如图9所示,相对于现有技术的多图层低程度融合渲染模式的效果,该方法具有较高的容错率,避免了斑驳化现象;
[0079]
其中,以瓦片为单位,基于x86配置的多图层低程度融合渲染模式和多图层高程度融合渲染模式的渲染时间对比图参照图10,以瓦片为单位,基于龙芯(loonson)设备的多图层低程度融合渲染模式和多图层高程度融合渲染模式的渲染时间对比图参照图11,渲染时间表征了渲染效率,容易看出多图层高程度融合渲染模式在渲染效率方面具备明显的优势。
[0080]
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下
做出各种变化。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1