掌桥专利:专业的专利平台
掌桥专利
首页

一种基于GPU共享纹理的气象三维数据前端可视化方法

文献发布时间:2023-06-19 12:13:22


一种基于GPU共享纹理的气象三维数据前端可视化方法

技术领域

本发明涉及气象可视化技术领域,特别涉及一种基于GPU共享纹理的气象三维数据前端可视化方法。

背景技术

随着“数字化中国”的开展,信息技术的不断提升以及数据挖掘应用的不断深入,催生了海量气象数据,标志着气象服务领域的各项技术也亟待扩展与革新。“探测器—气象工作者—可视化平台—受众—气象工作者”是一个气象数据信息传达链,每个环节的重视都对气象服务有着至关重要的效果。

由于气象数据多为晦涩难懂的抽象数据,时空特性显著、更新频繁、表达复杂,需要准确的分析其结构信息;并且气象数据的价值不在数据本身,而在于受众的实际需求,给予有效的可视化信息不仅能进一步挖掘出有价值的深层信息,更能推动气象学与GIS的交叉发展。而传统的统计类图形、图表已无法传达出更深层次的气象信息,只有通过从二维到三维的高效可视化表达,才能实现数据的“自我讲话”,以更为直观的方式展示天气状况的发展进程及趋势。

目前,气象领域的三维可视化技术尚处于发展阶段,仅将三维可视化技术与气象领域进行了初步的结合,通过后台将气象数据绘制成图片(jpeg或PNG图)再贴图到三维地球进行三维显示,由于其图片是提前预处理完成的,在前端进行三维可视化时只能采样到对应的颜色,无法获得具体的真实气象数值,进而不能做数值相关的查询和计算,不利于可视化拓展。在需要动态三维可视化时,由于动态成图消耗大,导致在B/S前端进行可视化存在性能瓶颈问题,使时态数据的更新无法满足气象数据的大数据、实时特性。

发明内容

本发明实施例提供一种基于GPU共享纹理的气象数据可视化方法,在保证渲染效果的条件下节省了三维纹理资源空间,解决了气象三维数据在B/S前端可视化的性能瓶颈问题。

第一方面,提出了一种基于GPU共享纹理的气象三维数据前端可视化方法,其包括步骤:根据float编码到RGBA颜色通道的方法对气象三维数据进行编码以获得三维纹理数据;在Cesium前端运用GPU对所述三维纹理数据进行采样、解码和绘图以实现对所述气象三维数据的可视化。

一些实施例中,根据float编码到RGBA颜色通道的方法对气象三维数据进行编码以获得三维纹理数据,包括步骤:

对所述气象三维数据进行归一化处理以获得对应的归一化值;

将所述归一化值编码到4*8bit的RGBA颜色通道以获取三维纹理数据。

一些实施例中,所述三维纹理数据包括json格式的元数据和raw后缀的三维纹理值;

所述元数据包含气象三维数据的经纬度信息、气象数值归一化区间及三维纹理规格。

一些实施例中,所述三维纹理数据采用Width*Height*Depth个颜色数组,且每个颜色数组以4通道8bit的RGBA进行保存。

一些实施例中,在Cesium前端运用GPU对所述三维纹理数据进行采样、解码和绘图以实现对所述气象三维数据的可视化,包括步骤:

采用webgl2.0技术对所述三维纹理数据进行采样以获取对应的采样三维纹理数据;

将所述采样三维纹理数据解码为气象数值数据;

对所述气象数值数据在GPU中进行统计计算和绘图以实现可视化。

一些实施例中,采用webgl2.0技术对所述三维纹理数据进行采样以获取对应的采样三维纹理数据,包括步骤:

将所述三维纹理数据映射到单位立方体坐标下;

采用逐点采样法对映射到单位立方体坐标下的三维纹理数据进行采样以获取对应的采样三维纹理数据。

一些实施例中,采用webgl2.0技术对所述三维纹理数据进行采样以获取对应的采样三维纹理数据,包括步骤:

在所述三维纹理数据坐标系中构建三维球的曲面墙以使所述曲面墙的起点和终点经纬度在所述气象三维数据的矩形范围内;

根据所述曲面墙的起点和终点经纬度与所述矩形范围的相对位置计算所述曲面墙映射到所述三维纹理数据坐标系的三维纹理坐标值;

对所述三维纹理坐标值进行采样以获取对应的采样三维纹理数据。

另一方面,提供了一种基于GPU共享纹理的气象三维数据前端可视化装置,其特征在于,其包括:

共享纹理生成模块,其用于根据float编码到RGBA颜色通道的方法对气象三维数据进行编码以获得三维纹理数据;

共享纹理可视化模块,其用于在Cesium前端运用GPU对所述三维纹理数据进行采样、解码和绘图以实现对所述气象三维数据的可视化。

一些实施例中,所述共享纹理生成模块还包括:

归一化单元,其用于对所述气象三维数据进行归一化处理以获得对应的归一化值;

编码单元,其用于将所述归一化值编码到4*8bit的RGBA颜色通道以获取三维纹理数据;

所述三维纹理数据包括json格式的元数据和raw后缀的三维纹理值;

所述元数据包含气象三维数据的经纬度信息、气象数值归一化区间及三维纹理规格;

所述三维纹理数据是采用Width*Height*Depth个颜色数组,且每个颜色数组以4通道8bit的RGBA进行保存。

一些实施例中,所述气象三维数据可视化模块还包括:

采样单元,其用于采用webgl2.0技术对所述三维纹理数据进行采样以获取对应的采样三维纹理数据;

解码单元,其用于将所述采样三维纹理数据解码为气象数值数据;

可视化单元,其用于对所述气象数值数据在GPU中进行统计计算和绘图以实现可视化。

本实施例提出了一种共享纹理以实现不同可视化操作的方式,利用float编码到RGBA颜色通道的方法对气象三维数据进行编码以生产可以解码为真实气象数据的三维纹理值,再利用GPU强大的计算能力在Cesium前端对气象数据执行解码与可视化成图,对同一组气象数据可衍生出多种形态的可视化结果(气象图形产品),不需要反复的构造三维纹理资源,在保证渲染效果的条件下节省了三维纹理资源空间,可在单个时态数据及时态数据的更新上满足气象数据的大数据、实时特性,有助于解决气象三维数据在B/S前端可视化的性能瓶颈问题。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种基于GPU共享纹理的气象数据可视化方法的流程示意图;

图2为本发明实施例提供的一种对气象三维数据进行编码的方法流程示意图;

图3为本发明实施例提供的一种对三维纹理数据进行采样、解码和绘图的方法流程示意图;

图4为本发明实施例提供的共享同一组三维纹理数据进行可视化过程的效果图;

图5为本发明实施例提供的一种基于GPU共享纹理的气象数据可视化装置的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种基于GPU共享纹理的气象数据可视化方法,其包括步骤:

S100:根据float编码到RGBA颜色通道的方法对气象三维数据进行编码以获得三维纹理数据;

S200:在Cesium前端运用GPU对所述三维纹理数据进行采样、解码和绘图以实现对所述气象三维数据的可视化。

需要说明的是,步骤S100中所述的气象三维数据是包括雷达的回波值,可以是以float值记录的数据。以新一代天气雷达的降雨回波三维组网分层数据为例,雷达的回波值在不同的分层高度(Depth)具备相同的Height*Width像素网格,网格的精度一般为1KM。在800 * 800 * 20分辨率的网格分层数据中,单个网格的回波值为0–70的float值。也可以是兼容如风速、温度、湿度等其他气象数据类型的形式。步骤S100对气象三维数据进行编码以制作三维纹理数据的过程可以在B/S后端服务进行,并可通过REST服务分发数据方式将生成的三维纹理数据发送至B/S前端(用户浏览器端)以备后续步骤使用。

可以理解的是,步骤S100中根据float编码到RGBA颜色通道的方法对气象三维数据进行编码,是利用RGBA四个颜色通道对气象三维数据进行采样和过滤,编码后的三维纹理数据具有压缩小、精度可控、可以保存其他渲染信息的特点,在B/S前端硬件资源瓶颈的前提上既可以节省纹理空间,同时达到比较好的渲染效果。

需要说明的是,步骤200中所述的Cesium是基于WebGL的三维地球组件库,在Cesium前端(用户浏览器端)对三维纹理数据进行采样、解码和绘图以实现可视化时,使用步骤S100中采集的气象三维数据所编码制作的三维纹理数据,通过GPU编程可解码还原为真实的气象数据(如雷达回波值)。因此,针对同一组采集的气象三维数据,通过GPU强大的计算能力在Cesium前端使用其还原后的气象三维数据赋予气象区间数值不同的颜色以进行绘图和可视化,可满足不同可视化需求,以生成不同可视化形态的结果(底图绘制、体绘制、剖面绘制等)。同时,在可视化形态构造完成后,只需要在步骤S100中将更新采集的气象数据重新编码为三维纹理数据传输到前端,前端即可通过步骤S200读取更新的三维纹理数据,即可在相同的GPU编程的模块中同步生成对应的可视化结果,满足大部分气象数据更新时间周期短的特点,前端数据更新操作达到最简,以满足浏览器前端性能要求。

本实施例考虑到相关技术中的问题,提出了一种共享纹理以实现不同可视化操作的方式,利用float编码到RGBA颜色通道的方法对气象三维数据进行编码以生产可以解码为真实气象数据的三维纹理值,再利用GPU强大的计算能力在Cesium前端对气象数据执行解码与可视化成图,对同一组气象数据可衍生出多种形态的可视化结果(气象图形产品),不需要针对不同的可视化方式反复的构造不同形态的三维纹理资源,在保证渲染效果的条件下节省了三维纹理资源空间,可在单个时态数据及时态数据的更新上满足气象数据的大数据特性,有助于解决气象三维数据在B/S前端可视化的性能瓶颈问题。

如图2所示,在一些实施例中,步骤S100还包括步骤:

S110:对所述气象三维数据进行归一化处理以获得对应的归一化值;

S120:将所述归一化值编码到4*8bit的RGBA颜色通道以获取三维纹理数据。

需要说明的是,步骤S110中对气象三维数据进行归一化处理时,以气象标准的SWAN格式为例,它是将雷达回波值存储为unsigned char的0-255范围内的整数,可通过常规的归一化映射算法进行归一化处理,并得到(0.0-1.0)的待编码数值,并以此为归一化值。

在一个具体的实施例中,步骤S110针对雷达回波值为0 – 70的float值,其中,回波的范围是0到70,风向风速为U(正值为东向风速,负值为西向风速)和V(正值为南向风速,负值为北向风速)两个矢量,范围为-70m/s到70m/s。进行归一化处理的方式可通过代码表示为:

Float code = (value – min ) / (max - min)

code = [0.0,1.0]

步骤S120可将code值(归一化值)通过encode Float To RGBA编码进RGBA四个通道值,具体可通过如下代码段实现:

osg::Vec4 CVolume::encodeFloatRGBA(float v)

{

osg::Vec4 enc = osg::Vec4(1.0f, 255.0f, 65025.0f,16581375.0f) * v;

float kEncodeBit = 1.0 / 255.0;

enc.x() = frac(enc.x());

enc.y() = frac(enc.y());

enc.z() = frac(enc.z());

enc.w() = frac(enc.w());

enc-=osg::Vec4(enc.y(), enc.z(), enc.w(), enc.w()) *kEncodeBit;

return enc;

}

其中RGBA颜色通道值可采用RGBA类型的UNSIGNED_BYTE像素格式进行保存,在分辨率相同的前提下可与其他纹理数据格式(UNSIGNED_SHORT、UNSIGNED_INT、FLOAT等)占用内存相同(都可以保存为4个字节)。因此,使用字节空间小、可视化兼容好且压缩空间小,亦满足浏览器前端对WebGL的兼容性。

通过本实施例对气象三维数据进行编码,使编码后的三维纹理数据能在GPU计算中直接解算出气象数据的真实数值(还原为实际的雷达回波值),并在可视化流程中统一了采样、解码、区间赋色的操作,对后续在Cesium前端进行不同类型的可视化操作提供了较好的通用性、拓展性和综合分析功能性,客观上克服了非专业用户前端编码能力不足的问题,使一般用户也可以通过简单的流程在前端获得气象数值,执行自己定制的计算操作并获得结果。

可优选地,在步骤S120中,在精度可接受范围内可以使用RGBA四个通道中的两个作为气象三维数值的编码,可以将一个float值存到4个通道,也可以将两个float值各存到其中2个通道。即在气象数值存储在其中2个通道的时候,另外2个通道用于保存该数值的特性如法线、或者保存风向U的另外V风向分量,在B/S带宽的资源条件下结合ZIP压缩,可提高UNSIGNED_BYTE数据的压缩率,从而提升了大数据气象数据的网络传输性能。

可优选地,在步骤S120中,还可将采样点周围的变化趋势计算成法线提前编码到三维纹理数据的BA通道,以减少在后续采用光线追踪时减少的采样次数。具体而言,一个采样点在三维空间周围邻近有x邻近2个,y邻近2个,z邻近2个一共6个相邻数值用来计算该采样点的法线,通过上述提前将采样点周围的差值法线编码到三维纹理数据的BA通道可减少6次纹理采样*N个采样间隔(即纹理分辨率,N常规为256或512等),使GPU内计算的光线追踪采样次数减少,提高了约6倍的绘制性能。可在低消耗下提供更好的光影效果和渲染性能。

可优选地,将三维纹理数据采用height*width*depth的8bit数组格式进行保存,以便于在Cesium前端构造WebGL2.0支持的带深度三维纹理对象。采用webgl2.0技术进行处理,使后续在Cesium前端对同样的三维纹理数据进行多种不同载体可视化时,减少分辨率计算上的数值变形、降低气象数据转换的复杂度(不需要缩放或扩大到2次幂的分辨率而做计算插值)。

在一些实施例中,由于本发明考虑到在Cesium的三维地球的具体经纬度上做气象数据的可视化,因此,步骤S130中保存的三维纹理数据包括json格式的元数据和raw格式的三维纹理值,其中元数据包含气象三维数据的经纬度信息、三维纹理规格和气象数值归一化区间,可将气象数据可视化结合到地理信息系统中,使信息交汇更丰富。

如图3所示,在一些实施例中,步骤S200包括步骤:

S210:采用webgl2.0技术对所述三维纹理数据进行采样以获取对应的采样三维纹理数据;

S220: 将所述采样三维纹理数据解码为气象数值数据;

S230: 对所述气象数值数据进行统计计算和绘图以实现可视化。

可以理解的是,WebGL2.0技术支持本发明实施例中所述的三维纹理数据格式,即Height * Width * Depth的颜色纹理数组。使采样得到得三维纹理数据在步骤S120中进行解码时可直接还原为真实的气象数据值,从而基于真实气象数据值进行绘图,其过程不需要缩放或扩大到2次幂的分辨率而做计算插值,因此减少了分辨率计算上的数值变形且降低了气象数据转换的复杂度。与传统的二维纹理格式相比,不需要将在气象三维分层数据平铺到二维纹理中再通过GPU算法计算下一层的映射,可避免由于这种映射在WebGL1.0的2次幂长宽的约束上所造成的分辨率变形。

在一个具体的实施例中,使用离屏渲染技术,使用步骤S100中获取的三维纹理数据,并传入着色器计算脚本执行离屏渲染到构建的结果纹理,结果纹理的像素颜色则是计算的结果,在浏览器前端获取该纹理像素值,该纹理像素值解码回气象实际数值得到最终结果。

具体步骤为:

S1、在Ceisum前端构建离屏计算对象,并通过ComputeCommand传入所述三维纹理数据、着色器脚本,以及地理坐标内映射到三维纹理的坐标str;

S2、执行离屏计算命令,在GPU中执行着色器脚本,使用地理位置坐标对应的三维纹理坐标str对所述三维纹理数据进行采样获得颜色值,再离屏绘制到纹理;

S3、在CPU(浏览器前端)中读取该结果纹理像素值,该值为RGBA(0-255, 0-255,0-255, 0-255)的四字节数组,归一为RGBA(0-1, 0-1, 0-1, 0-1),该值为本发明的气象数值编码,使用解码算式反算回气象float数值。

可通过如下的代码段实现:

gl_FragColor = texture3D(texture3d,vec3(s,t,r));

Float value = Cartesian4.dot(color, new Cartesian4(1.0, 1.0 / 255.0,1.0 / 65025.0, 1.0 / 16581375.0)) * 70.0 + 0.0;

其中70为回波区间,0为回波最小值(不同气象数据区间对应区间不同)。

本实施例是以地理坐标xyz经纬度为例运用共享的三维纹理数据在GPU中解码和计算气象数值数据。使用了三维纹理作为计算容器,可选的对气象数据的横向、纵向网格进行了线性插值。常规气象网格数值为1KM精度,在GPU中1KM使用了硬件插值可以获得更高分辨率的采样结果参考。本实施例结合了地理坐标映射到三维纹理坐标的运算,可以用于计算采样点数据庞大的航线路径上。此外,将共享的三维纹理数据在GPU计算中进行高性能浮点数运算,可以执行更复杂的大数据运算和方程,与其他实例的可视化共享纹理内存,在GPU中实时运算,运算状态一直存在,因此气象时间数据更新的过程,运算状态能够同步更新,满足监控类运算。由于将气象数据作为更简单的方式(三维纹理数据的形式)放到了前端,使前端也能用WebGL的GPU计算能力,使更多丰富的气象数值统计分析能够更简单的面向专业和非专业用户,降低了用户的使用门槛,前端用户不用考虑复杂的数据处理就可以接收到三维网格的气象数值,可以使用不同的坐标、方程式去计算统计即可通过本发明的离屏计算流程获得计算结果。

在一些实施例中,步骤S210包括步骤:

S211:将所述三维纹理数据映射到单位立方体坐标下;

S212:采用逐点采样法对映射到单位立方体坐标下的三维纹理数据进行采样以获取对应的采样三维纹理数据。

本实施例实现了运用步骤S100中的三维纹理数据在Cesium前端进行体绘制。

步骤S211具体可以是在Cesium三维地球上对应的气象数据经纬度范围上绘制一个等大小的规格立方体即长宽高为米,如所述气象回波数据为800KM*800KM*19.5KM的立方体。在着色器中将顶点坐标反算为(0,0,0 – 1,1,1)范围的单位立方体坐标。

步骤S212采用射线追踪三维纹理完成采样,在视线方向上完成颜色混合,将采集的三维纹理解码为颜色采样纹理,通过着色器赋色完成所有体素的绘制,设置光照,确定一个光照采样点,由该采样点周围的差值计算得出体绘制的法线方向,然后结合Cesium的光源材质算法确定光照的投射效果。

在一个具体的实施例中,如果相机位置“te”在单位坐标内,则计算相机坐标到xyz轴的距离乘以到各轴的距离系数,使相机位置到立方体顶点的第一个采样点能够靠近相机。这样无论在单位坐标内外,都可以通过固定的采样数目和间隔对每一条视点到顶点实现片元采样。即使穿过单位坐标或者单位坐标外的颜色值为0也不会产生影响,所以实际上采样了大于单位立方体坐标一点点的空间包围盒。

在一个具体的实施例中,使用共享的三维纹理数据进行体绘制的具体步骤可通过如下的GPU编程片段来实现:

void main(){

vec4 t0 = vertexPos * texgen;

vec4 te = cameraPos * texgen;

if (te.x>=0.0 && te.x<=1.0 &&

te.y>=0.0 && te.y<=1.0 &&

te.z>=0.0 && te.z<=1.0)

{

}

else

{

if (te.x<0.0)

{

float r = -te.x / (t0.x-te.x);

te = te + (t0-te)*r;

}

if (te.x>1.0)

{

float r = (1.0-te.x) / (t0.x-te.x);

te = te + (t0-te)*r;

}

if (te.y<0.0)

{

float r = -te.y / (t0.y-te.y);

te = te + (t0-te)*r;

}

if (te.y>1.0)

{

float r = (1.0-te.y) / (t0.y-te.y);

te = te + (t0-te)*r;

}

if (te.z<0.0)

{

float r = -te.z / (t0.z-te.z);

te = te + (t0-te)*r;

}

if (te.z>1.0)

{

float r = (1.0-te.z) / (t0.z-te.z);

te = te + (t0-te)*r;

}

}

float resolution = 7.0 + u_attribute[1][2];

vec3 texcoord = t0.xyz;

float num_iterations = pow(2.0,resolution);

vec3 deltaTexCoord=(te-t0).xyz/(num_iterations-1.0);

gl_FragColor = texture3D(baseTexture,texcoord);

vec4 fragColor = vec4(0.0, 0.0, 0.0, 0.0);

while(num_iterations-- > 0.0)

{

vec3 st = st_region(texcoord);

vec4 color = texture3D(baseTexture,st);

v_transfer(color,texcoord);

if(!inside_clip(texcoord))

{

color.a = 0.0;

}

float r = color.a * TransparencyValue;

if (r>AlphaFuncValue)

{

fragColor.xyz = fragColor.xyz*(1.0-r)+color.xyz*r;

fragColor.w += r;

}

if (fragColor.w

{

fragColor = color;

}

texcoord += deltaTexCoord;

}

fragColor.w *= TransparencyValue;

if (fragColor.w>1.0) fragColor.w = 1.0;

if (fragColor.w

gl_FragColor = fragColor;

return;

}

其中,texture3D使用了webgl2.0的特性对S01制作的三维纹理进行采样, v_transfer是将真实的气象数值映射到一个最终的显示颜色,比如回波35.5对应的一个黄色数值。

本实施例对解算回真实数值的气象数值数据重新归一化,使用归一化的数值区间对色表纹理进行采样获得最终的可视化颜色(v_transfer代码过程),tfTexture为色表图片纹理。不同于相关技术中直接在后端使用气象数值归一后采样生成图片可视化的方式,本实施例将共享的三维纹理数据传到前端并使用GPU动态绘制,此动态绘制获得的可视化绘图结果可以依附到不同的载体,而且可视化的形式也可以变换,如进行底图绘制是一种基于GPU计算的统计形式、体绘制是一种三维空间立体载体。

在一些实施例中,步骤S210包括步骤:

S213:在所述三维纹理数据坐标系中构建三维球的曲面墙以使所述曲面墙的起点和终点经纬度在所述气象三维数据的矩形范围内;

S214:根据所述曲面墙的起点和终点经纬度与所述矩形范围的相对位置计算所述曲面墙映射到所述三维纹理数据坐标系的三维纹理坐标值;

S215:对所述三维纹理坐标值进行采样以获取对应的采样三维纹理数据。

本实施例实现了运用步骤S100中的三维纹理数据在Cesium前端进行剖面绘制。

本发明的实施例,在Cesium三维地球的气象数据区域上使用同一组气象数据编码的三维纹理资源可展现出不同形态的气象图形产品(底图、体、剖面等),这些不同形态的气象图形产品共享一个内存空间(纹理资源空间)的纹理资源数据,可通过GPU编程在Cesium前端实现动态成图。当修改某一个纹理资源参数(如过滤一个具体数值以下的显示部分),则不同形态的气象图形产品可同步产生变化。在时态更新时,可通过更新纹理资源内存的数据,使几种不同形态的气象图形产品进行同步更新,降低动态成图的资源消耗,可较好地解决B/S系统的性能瓶颈问题,匹配气象数据的时态更新特性。

如图4所示,基于本发明实施例所述的技术方案,可共享同一组三维纹理数据后在前端通过GPU计算进行不同气象产品的可视化。对于同一组三维纹理数据,图4(a)为采样后的底图效果图,图4(b)为解码后的底图效果图,图4(c)为体绘制的可视化形态效果图,图4(d)为剖面可视化形态效果图。

如图5所示,本发明实施例还提供了一种基于GPU共享纹理的气象数据可视化装置,其包括:

共享纹理生成模块,其用于根据float编码到RGBA颜色通道的方法对气象三维数据进行编码以获得三维纹理数据;

共享纹理可视化模块,其用于在Cesium前端运用GPU对所述三维纹理数据进行采样、解码和绘图以实现对所述气象三维数据的可视化。

通过本实施例提供的装置,可使用同一组气象三维纹理数据,生产不同的可视化载体,载体在GPU编程下形成不同的气象图形产品(包括底图绘制、体绘制、剖切面绘制等),由于同一个气象数据源的规格是固定的,因此数据更新时,不需要反复的构造三维纹理资源,只需要共享纹理资源,而不需要频繁的从GPU申请空间,对于同一组气象数据可以根据客户的需求拓展多种不同形态的气象图形产品。对于多种不同形态产品的时间数据更新时,只需要同步纹理资源内存即可同步更新各种不同形态产品,更适用于大容量的单组气象数据或多组气象数据更新频繁的可视化系统。

一些实施例中,共享纹理生成模块还包括:

归一化单元,其用于对所述气象三维数据进行归一化处理以获得对应的归一化值;

编码单元,其用于将所述归一化值编码到4*8bit的RGBA颜色通道以获取三维纹理数据;

三维纹理数据包括json格式的元数据和raw后缀的三维纹理值;

元数据包含气象三维数据的经纬度信息、气象数值归一化区间及三维纹理规格;

三维纹理数据是采用Width*Height*Depth个颜色数组,且每个颜色数组以4通道8bit的RGBA进行保存。

一些实施例中,气象三维数据可视化模块还包括:

所述气象三维数据可视化模块还包括:

采样单元,其用于采用webgl2.0技术对所述三维纹理数据进行采样以获取对应的采样三维纹理数据;

解码单元,其用于将所述采样三维纹理数据解码为气象数值数据;

可视化单元,其用于对所述气象数值数据在GPU进行统计计算和绘图以实现可视化。

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种基于GPU共享纹理的气象三维数据前端可视化方法
  • 一种基于可视化插件的气象信息共享服务系统及使用方法
技术分类

06120113210355