Skip to content

曲线网格:数组相邻不等于经纬等距 ​

规则经纬网格可以用一维 lon、lat 数组描述,任意节点由两轴组合得到。曲线网格(curvilinear grid)则为每个节点单独保存 (lon[i,j],lat[i,j])。它在数组空间仍有整齐的行列,在地理空间却可能弯曲、旋转并密集聚集。

这章最容易混淆的是数组坐标和真实空间坐标。曲线网格与雅可比矩阵用局部伸缩解释二者关系。

曲线网格的数组拓扑映射到弯曲地理网格,展示单元三角化

先保留拓扑,再转换位置 ​

设原始数组是 3×3,必须确认哪个维度变化最快。如果数据规定 y 最快,索引是 i*Ny+j,其中 i、j 是从零开始的无量纲索引,Ny 是 y 方向样本数,不能凭常见习惯改成 j*Nx+i。经纬坐标与标量必须使用相同索引。错误转置可能仍画出一个表面,却把值放在了错误位置。

一种直接渲染路径是:为每个节点把经纬高转成 Cartesian3,再按相邻行列构建四边单元,并拆成两个三角形。顶点携带标量或数据纹理坐标。GPU 在三角形内插值(interpolation),得到的场依赖所选拓扑(topology,即节点连接关系);它并不自动等于原模型网格的双线性重建。

三角化并非没有条件 ​

若网格单元在地理空间翻折、退化或跨越接缝,固定对角线可能连接错误区域。缺测角不能直接用零经纬度补上,否则会长出跨全球的尖三角形。应检测有效坐标、面积、边长和方向,按明确策略拒绝坏单元或分拆。

日期线两边的 179° 与 −179° 在地表很近,数值差却是 358°。若先在经度数字上直接求平均,会得到 0°,把局部单元拉过半个世界。转换到 ECEF 处理连接可避开部分问题,但纹理寻址、拾取反算与区域范围仍需周期意识。

保留原网格还是重网格 ​

原生网格避免额外一次重采样,适合呈现源数据结构。重网格(regridding)到规则经纬网则便于共享采样与纹理算法,但需要说明插值方法、掩膜、边界和误差。选择取决于目标:显示原生值、比较多个产品,还是做后续计算。

重网格不是免费优化。一个看似更平滑的结果可能已经改变极值和有效区域;如果使用最近邻保留类别,也不能期待连续场的平滑精度。

实验的弯曲幅度改变节点经纬度与几何,标量纹理仍保留在逻辑 UV 空间。显示网格边能直接核对两者关系;这是合成曲线网格展示,没有执行到全球规则网格的重采样。

弯曲的网格EXPERIMENT 10 · CESIUM 1.145.0

弯曲的网格

改变网格形状,区分索引空间与地理空间。

在浏览器本地运行 · 无需账号 · 鼠标拖动旋转,滚轮缩放

教学合成数据,不代表真实观测或天气预报。规则场用于验证,拟真形态用于观察复杂结构。 数据说明
查看运行源码

此代码直接读取实际运行的实验模块。按 kind 分支定位当前实验,也可查看数据公式和 GLSL。

读取源码…

观察任务 ​

调整弯曲幅度并打开真实网格边,观察相邻格点的间距。假设你把同一标量数组直接贴到全球矩形上,最可能错在哪里?若局部出现一根伸向赤道的巨大尖片,应先提高细分还是检查坐标?

展开答案

矩形贴图把数组坐标误当等距经纬坐标,丢失了每个节点的真实位置。巨大尖片首先提示无效经纬、索引错配、跨接缝连接或退化单元。细分错误三角形只会得到更多错误几何,不能修复数据拓扑。

阅读依据:Cesium 1.145 Geometry 源码、CF 官方坐标约定。

气象学 · 数学基础 · 地理可视化