Skip to content

数据、版本与资料 ​

这本教材面向公开读者,正文与示例不要求登录或提供访问令牌。文章和示例由同一个仓库构建,代码面板展示对应实验的源文件。数学符号从含义和单位开始解释,可配合数学基础与中英文术语表阅读。

什么在服务器运行,什么在浏览器运行 ​

Cloudflare Pages 提供 HTML、JavaScript、样式、图片、Cesium 引擎资源和随仓库保存的小型静态数据。本阶段全部数据随 Pages 站点发布,不接入 R2、S3 或其他对象存储。 运行时合成的网格与粒子初态直接在浏览器内存创建,不上传到服务器。Cesium 的 WebGL 绘制、纹理采样、GPU 粒子状态更新与交互控件在读者设备上运行。浏览器的 Web Worker 与 Cloudflare Workers 是不同的东西:前者处理客户端任务,后者是服务器运行时;本教程的示例不依赖后者,也不需要业务 API、数据库或实时气象下载服务。正文中的外部资料链接用于延伸阅读,不是实验运行的数据依赖。

首次打开实验需要下载引擎和本站静态资源。当前实验以支持 WebGL2 的浏览器为目标,风粒子还需要可渲染的浮点纹理;浏览器、驱动或设备能力不足时,正文、图解与源码仍可阅读。静态构建成功不等于已经证明每台设备的 GPU 路径可用。GPU 帧率取决于设备、浏览器、分辨率及当前负载,不代表 Cloudflare 服务器速度。

正文代码与实验源码的阅读约定 ​

正文代码是围绕一个概念的短片段。除第二课外,使用 viewer 的片段沿用该课已经创建的 Viewer;Cesium 表示 import * as Cesium from 'cesium' 得到的命名空间。实验实现有时将同一个命名空间简写为 C,只是局部变量名不同。片段会省略已说明的容器、CSS、静态资源配置和初始化;异步 await 代码应在 async 函数或支持顶层 await 的 ES 模块中执行。只构造 Geometry 或 Material 的片段不等于已经完成场景绘制。

完整的实验运行模块可从实验室进入,在“查看运行源码”中选择 TypeScript 或 GLSL 文件;它们需要配套宿主、依赖和资源,不能直接当成独立 HTML 粘贴。原理性的伪代码会明确标注,例如第 22 课的内部命令装配和第 30 课的异步保护。prepare()、apply() 等概念函数不是 Cesium API,也不是被遗漏的可下载库。

正文中以 /data/ 开头的地址指本站根目录的真实公开资产。在自己的工程复现时,应复制相应文件并核对部署路径。当前 GeoJSON 教学点与 3D Tiles 教学入口随 Pages 发布;前者的经纬度、椭球高与属性均为教学构造,按 CC0 提供。

数据清单 ​

数据来源与用途性质与限制
全球底图Cesium 随包提供的 Natural Earth II 小型栅格Natural Earth 公共领域数据;仅作定位背景,不用于精确行政边界判断
GeoJSON 教学点一个内联 Feature 及内容相同的静态文件CC0;114°E、22°N、椭球高 1000 m 均为构造值,不是真实观测站
坐标轴、网格与几何运行时使用公式创建教学几何,比例与高度可能为观察而夸张
地形平滑包络与周期函数合成不对应任何真实山脉,明确显示“合成地形”
标量场区域网格上的规则函数或锋面、局部异常和多尺度波叠加归一化值 s 映射为 T = 10 + 20s °C,仅为教学范围
风场匀速规则场,或急流、涡旋与扰动叠加U/V 以 m/s 表示;不满足完整大气动力方程,也不是预报
曲线网格对逻辑网格施加确定性平滑经纬变换展示网格拓扑与空间位置分离,不代表特定模式网格
glTF 与 3D Tiles12 栋程序生成的方块建筑,位于香港附近的教学锚点CC0 合成资产,不对应真实建筑;单叶瓦片用于理解加载关系
剖面三维解析标量函数的切片位置与高度可调整;显示夸张不会改变原始采样值

Natural Earth 数据许可允许公开使用。引擎及其附带资源仍保留原始第三方许可与署名,Cesium 的 credit 显示不会被隐藏。地理背景仅用于教学。

本站随资源分发原始许可文件:Cesium 与第三方完整许可(下载原文)、第三方组件清单、补充组件清单。

为什么同时提供规则场与拟真合成场 ​

规则场具有容易预测的结构,适合验证方向、插值、单位和边界。拟真合成场则包含锋面、局部峰值、多尺度变化、弯曲流线与缺测区域,让算法面对更接近实际数据形态的输入。它们承担不同的验证任务。

“拟真”只指形态接近,不能证明物理正确。视觉上像涡旋,并不意味着满足质量守恒、动量守恒或完整边界条件。本教程不会将合成场包装为真实观测。

标量实验在 48 × 36 网格上保存两个时刻,RGBA8 的 R/G 通道分别表示两个时刻的归一化值,B 表示有效性。离散编码的分辨率约为 20 / 255 ≈ 0.078 °C;它适合小型教学实验,生产科学数据应根据误差要求选择浮点或其他编码。场函数采用固定参数;粒子初始分布使用固定种子(random seed)。这些定义均可在实验源码及 examples/fields.ts 中查看。确定性输入便于复现,但不同设备的浮点运算与驱动不保证长时间轨迹逐位相同。

时间滑块对两份数值做线性插值,然后映射颜色。这不等于求解天气系统的运动,也不保证移动锋面的形状守恒。标量 shader 对双线性采样采用保守有效性规则:参与计算且权重非零的邻居中,只要存在缺测就丢弃当前片元;权重为零的缺测邻居不会抹掉精确有效格点。规则会影响缺测边缘的显示范围,不等于补齐了缺失观测。

当前实验做到了哪一步 ​

教学原理、可运行实验和进一步扩展分别标记。下面的边界以仓库中的当前实现为准,不代表跨设备性能认证。

实验当前计算路径阅读时需要保留的边界
标量48×36 RGBA8 数据纹理;GLSL 手动最近邻/双线性;两帧数值混合后配色色彩经过量化;没有三次采样开关,也没有真实预报数据
等值线片元 shader 判断指定温度或等间隔阈值,使用屏幕导数估算线宽没有输出矢量折线、Marching Squares Worker 或静态标签;平坦/量化区域线宽并非处处精确
风粒子静态 U/V 浮点纹理;GPU 乒乓状态更新;球面局部 Euler 积分;点绘制区域范围为 111–117°E、20–25°N;没有轨迹历史、RK2、多时刻预报或全球极区验证
曲线网格弯曲节点经纬位置,保持逻辑 UV 对应;三角网格上采样合成标量说明逻辑网格和空间位置的区别,没有实现通用模式网格重采样器
剖面从解析三维函数 f(x,y,z) 取得定纬高度切片,构成三维幕墙是 section,不是 volume ray marching;压力坐标与测地线剖面在正文中推导
建筑与 3D Tiles自托管程序生成 glTF 与单叶 tileset用于定位与加载关系,不展示多级 LOD 的性能收益

剖面数据的物理高度参数是 0–12 km。当前显示公式为 h_display = 1 km + E × h_data:E 是无量纲夸张倍数,1 km 是避免与地球表面重叠的显示偏移。几何的椭球高、原始高度标签和大气压力层的位势高度是不同含义,不应互相代替。

浏览器能显示彩色画面,不能单独证明地理位置、科学值和性能都正确。公式例子用于建立预期值;CPU 对照、GPU 数值检查、交互观察和性能记录各自回答不同问题。正文中的“应检查”“可比较”是读者可执行的验收方法,不表示本站已经认证全部浏览器和设备。

版本边界 ​

层固定版本教学约定
CesiumJS1.145.0对应固定版本源码链接
@cesium/engine26.3.0通过 overrides 与 lockfile 精确固定
@cesium/widgets16.2.0与该版本引擎配套
VitePress1.6.4生成静态文档站

Viewer、Scene、Camera 等公开接口优先按官方参考理解。Texture、Framebuffer、DrawCommand、ComputeCommand、RenderState 及命令列表属于引擎内部集成边界,即使可以从命名空间取得,也不能据此认为它们是稳定 public API。内部代码升级需要重新验证。

阅读一手资料 ​

本书图解为教学示意,概念流程经过简化;真实执行路径会随场景、pass、缓存与设备能力变化。实验读数会区分对象数量、绘制次数与帧率,不将它们当作同一个性能指标。

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