概述
近年来,随着数字孪生应用平台在城市管理、应急响应、防控指挥等场景的应用要求加深,对于准确生成和可视化呈现气象数据提出了更高的技术要求,尤其是通过等高线图和卫星云图的形式呈现。
等高线图为专业人士提供了一种直观理解地形复杂性的方法,同时在评估气象条件对特定地理区域的影响方面也展现出无可替代的价值。它使得风向、温度分布以及其他关键气象参数能够基于地形特征进行精确分析,从而支持更加精准的环境预测与规划决策。卫星云图作为观察大气动态变化的关键工具,提供了覆盖广阔区域的即时气象信息。
这些图像帮助我们实时追踪天气系统的演变,从大规模的气候模式到局部风暴的发展,无所不包。对于数字孪生应用平台而言,集成卫星云图功能意味着能够在虚拟环境中模拟真实的气象状况,进而为城市规划者、环境科学家以及应急响应团队提供强有力的决策支持。
一、技术难点
1. 通过格点数据生成等值线
在使用UE通过格点数据生成等高线图时,开发者面临一系列技术挑战。与专业地理信息系统(GIS)软件相比,后者通常只需简单导入相应的格点数据,即可迅速生成精确的等高线图,而UE在这个过程中则显得不够直接和高效,具体表现为:
- 数据适配难题。UE并非为处理复杂的地理空间数据而设计,这意味着在将格点数据转换为可用于生成等高线图的信息前,需要进行大量的数据预处理工作。这包括数据格式转换、坐标系统校正以及精度调整等步骤,这些操作增加了开发过程中的复杂性和工作量。
性能优化需求。由于等高线图通常涉及大量地理信息,其渲染可能对UE造成显著的性能压力。为了确保流畅的用户体验,开发者必须采取多种优化措施,例如合理的细节层次(LOD)设置、纹理压缩以及数据简化策略,以平衡视觉质量和运行效率。
缺乏内置工具支持。不同于专业的GIS软件,UE缺少专门用于生成等高线图的内置工具。因此,开发者可能需要依赖第三方插件或自行编写脚本以实现所需功能,这不仅增加了项目的不确定性,也提高了开发门槛。
尽管存在上述难点,但在数字孪生行业中,基于格点数据生成的等高线图具有不可替代的重要性。它使专业人士能够快速观察到气象情况,对于评估地形对气候条件的影响至关重要。准确的等高线图可以帮助科学家和城市规划者更好地理解特定区域内的风向、温度分布等关键气象参数,从而做出更加精准的环境预测和规划决策。
此外,在数字孪生项目中集成高质量的等高线图,不仅可以提升数字孪生场景的真实性和实用性,还能促进跨学科的合作与创新。通过提供数字孪生应用平台,让不同领域的专家能够共同探索和分析复杂气象模式,进而为应对气候变化、优化城市管理提供强有力的支持。因此,尽管在UE中生成等高线图面临挑战,但其带来的价值使得这一努力尤为值得。
2. 通过NC数据生成卫星云图
在UE中使用NetCDF(NetworkCommonDataForm,简称NC)数据生成卫星云图同样面临一系列独特的挑战,同时该过程也体现了其在特定应用领域中的重要性。具体表现如下:
- 数据处理与转换。NetCDF是一种用于存储多维科学数据的文件格式。然而,UE并不直接支持NetCDF格式的数据输入。这意味着开发者首先需要将NetCDF数据转换为UE能够处理的格式,例如高度图、纹理或其他类型的可渲染资源。这一步骤不仅要求对NetCDF数据结构有深刻的理解,还需要掌握相应的转换工具或脚本编写能力。
性能优化。卫星云图通常包含大量的气象信息,这些数据量庞大的特性可能会导致渲染性能问题。为了确保在UE中流畅地显示卫星云图,开发者需要进行细致的性能调优工作,包括但不限于数据简化、纹理压缩以及合理的LOD(LevelofDetail)设置等。
可视化技术。准确而美观地呈现卫星云图所需的可视化技术往往超出了传统数字孪生开发的范畴。例如,正确模拟云层动态、光照效果以及不同天气条件下的视觉变化等都需要深入的专业知识和技巧。
尽管存在上述挑战,但在UE中通过NC数据生成卫星云图具有重要意义:
- 提升沉浸感。高质量的卫星云图可以极大地增强虚拟环境的真实性和沉浸感,这对于数字孪生城市、虚拟训练场景以及气候研究等领域尤为重要。
实时交互。利用UE强大的实时渲染能力,用户可以通过交互的方式探索和分析卫星云图,这种互动体验是静态图像或视频无法提供的。
综上所述,在UE中使用NC数据生成卫星云图虽然面临不少技术难题,但凭借其带来的沉浸式体验、实时交互等优势,无疑为数字孪生应用平台建设提供了巨大的潜力和价值。
二、技术思路
以下技术思路均由易知微团队提出,感兴趣的朋友请前往官网下载2025数字孪生与智能算法白皮书了解详情~
1. 生成等值线和等值面
-
解析格点数据
在解析数据前,我们先明确什么是格点数据,该类数据是一种地理空间数据类型,将地理区域划分为跪着的小网格,每个网格存储特定类型的数值,如高程、温度或降雨量等。栅格数据一般以如下方式展示,首先文件头通常用于描述格点文件的一些关键信息:Diamond11数据说明(字符串);年月日时次时效层次(均为整型);经度格距纬度格距起始经度终止经度起始纬度终止纬度(均为浮点型);纬向格点数经向格点数(均为整型)
针对数据最终的映射情况,文件头的描述内容可能些许差异,但是一般来说文件头一定包含描述经纬度信息相关的内容,这样子我们就可以通过相关将对应的格栅数据通过经纬度取出。
通常只要提供到的格点文件是非加密文件,那么我们可以通过FFileHelper::LoadFileToStringArray(),将格点文件以字符串数组的形式读取出来,接着循环遍历读取出来的数组,通过FStiring.ParseIntoArray(),利用空格将数据分割,并将数据存在另一个字符串数组中,方便我们进行下一步处理。
- 生成等值线
我们可以利用UE中的UKismetRenderingLibrary::CreateRenderTarget2D()来创建画布,并调用的UCanvas::K2_DrawLine()函数绘制线条。
提前预设参数控制绘制出来的线条数量(numstep[int32]),同时设置我们要取出的数据区间的最小值(low[float])和最大值(high[float]),这样可以起到精简数据,使最终绘制出来的等值线更加合理。
我们通过上文中描述的方式获取格点文件的文件头数据并将其存放在一个二维数组中,描述每一行的数据和行内每格的数据(GFData[TArray<TArray>]),解析出维向格点数(width)和经向格点数(Height),构建嵌套循环,遍历获取到的数组里的元素。
我们利用正方形判算法来计算连线,首先判断格点数值和我们预设的最小值的关系,由此判断我们应当对这一批数据进行怎么样的绘制处理,如果点在首尾位置就不进行绘制,在其他位置则进行差值计算。
最终我们通过算法获得n段线段,绘制出等值线。
- 生成等值面
生成等值面时我们只需要将每个格点的数据当做一张图上的像素点,将纬向格点数和经向格点数作图片的长宽,取出值的同时我们记录全量值的最大值和最小值,然后我们将每个值通过UKismetMathLibrary::MapRangeClamped(),将值差值到0-1的区间的值,最后利用这些值构建图片,最终就能输出一张黑白图。
我们可以在材质中将黑白图的颜色映射到ColorCurve中,根据需求调整最终输出的样式。
2. 生成卫星云图
- 了解NC数据的格式
首先我们可以先使用Panoply软件快速查看NC数据以及生成的大致图像。需要注意这个软件生成出来的图向右旋转90°才是UE里看到的最终图像(数据不需要额外处理)。
下方的色带代表了最小值到最大值的范围。蓝色区域云多,值越大云越少。
在这里可以看到这个图是以二维数组的格式存储的,每个点都有对应的值,超过色带最大值的数据即是空值。
注意存储顺序是按列存取。
实际上,这个二维数据是存放在一维数组中的,所以我们需要记录行列最大值,判断当前是哪行哪列。
- 在UE中导入NetCDF第三方库
在官网(https://downloads.unidata.ucar.edu/netcdf/)下载
将编译完的静态库、原有的静态库以及动态库在封装的插件中引入,完成导入。 - 解析NC数据
调用NetCDF库netCDF::NcFile类的构造函数打开指定路径的NC文件。
查找对象,并获取属性X,Y的大小。
调用NetCDF库的getVar()库函数把数据存入float数组,再将float数组转化为UE的Tarray。
- 生成NC气象云图
接下来就要将上面解析完的数组生成为纹理。
遍历NC数组,把每一个点的值映射到像素通道的范围内。设定映射输入范围的最小值与最大值,调节最终生成的云图效果,最小值越小颜色越淡,最大值越大显示的云越多。
最终生成效果如下
易知微最近发布了最新的2025数字孪生与智能算法白皮书,白皮书内容包括数字孪生和智能算法的融合应用、企业数字化转型的最新技术成果以及重点行业的解决方案,感兴趣的朋友可以前往官网下载2025数字孪生与智能算法白皮书了解详情~
易知微基于多年在数字孪生及数据可视化领域丰富实践,沉淀了诸多经验成果,欢迎大家互相交流学习:
易知微基于多年在数字孪生及数据可视化领域丰富实践,沉淀了诸多经验成果,欢迎大家互相交流学习:
《数字孪生世界白皮书》下载地址:https://easyv.cloud/references/detail/51.html/?t=yzwsm
《数字孪生行业方案白皮书》下载地址:https://easyv.cloud/references/detail/120.html/?t=yzwsm
《港口数智化解决方案》下载地址:https://easyv.cloud/references/detail/121.html/?t=yzwsm
想申请易知微产品免费试用的客户,欢迎点击易知微官网申请试用:https://easyv.cloud/?t=yzwsm