Cesium数据处理案例(二)风场洋流可视化数据格式转换

来由

有朋友想做一个河流流向的效果,我很久之前看到过一个风场的示例 https://raymanng.github.io/3D-Wind-Field/demo/,

01

经过查资料和问人,我又接触另外一个项目 https://github.com/hongfaqiu/cesium-wind-layer

01

01

这个基本满足了他的需求,唯一的问题就是,客户给他的河流数据,用不起来,不知道怎么转换成示例需要的数据。

解决思路

明确输入输出

  1. 甲方提供 [[经度,纬度,u,v],[….]] 数据集合,只要有这些信息,就可以通过编程拿到我们自己要的格式

  2. 输出的结构

{
    "bbox": [120.66510084082437,30.215021434122033,123.94339745346444,33.359127998897858],
    "width": 2,
    "height": 2,
    "unit": "m/s",
    "name": "hycom_surface_currents",
    "time": 1727798400000,
    "noDataValue": 9.9999999e+36,
    "u": {
        "array": [0,0,0.5,-0.4],
        "min": -0.4,
        "max": 0.5
    },
    "v": {
        "array": [-0.1,0,0.5,-0.4],
        "min": -0.4,
        "max": 0.5
    }
}

问题本质:甲方给的是离散点数据,风场渲染需要的是规则网格数据

可视化数据

对于数据分布直接看数字,不够直观,这里我们先将点位加载到地图上,看看分布

01

数据质量决定最终效果。如果点位分布稀疏或不均匀,转换后效果也会受影响。

数据处理

使用arcmap软件 + 脚本

思路:

  1. 分开处理 u 分量和 v 分量
  2. 提取经纬度,u 分量信息,展点到地图上,构建 U 的栅格
  3. 提取经纬度,v 分量信息,展点到地图上,构建 V 的栅格
  4. 根据网格,分别读取不同格子的 u, v 信息,组织成目标json

效果

01

总结

一直在总结,在AI时代,自己的价值到底是什么,现在相关教程,插件、框架、数据处理工具,GitHub上一搜一大把,

但真的要问:”你这个地形数据怎么来的?投影怎么转的?为什么模型加载出来有裂缝?”

大概率得不到答案。

不是别人不愿意说——是很多人自己也不知道。工具链太长了,从原始数据到Cesium里能跑的效果,中间差了七八个环节。每个环节都有坑,每个坑都得自己踩。

这才是我积累下来的东西:不是某个工具的用法,是整条链路的工程能力。不止在卖技术,还是在卖用技术解决问题的能力。知道数据处理花功夫在哪里、知道工程落地的坑在哪里、知道客户真正要的是什么

如果你只是想买工具、买插件,我手里有现成的可以推荐,不一定找我。

如果你有数据、有场景,但不知道能不能做——发我聊聊,反正聊聊不花钱。

共勉~

联系我加V:Elusive57

发表评论