CMIP6 数据是气候变化研究的“原始矿藏”,但大多数刚接触的人第一反应几乎一样:下载不会下、文件打不开、变量看不懂、画图全是默认配色,好不容易跑完一个模式,结果不知道如何评估区域影响。这个专题体系的核心,就是把从 CMIP6 数据获取、Python 处理、可视化、降尺度到极端气候分析和区域影响评估的全流程串起来,而且明确加入了 AI 视角,不是只教命令和函数,而是教你怎样用机器学习手段处理高维气候数据、做模式订正和降尺度。
这篇文章会把七个专题的完整技术路线拆开讲清楚。先给你一张能力速览,再按数据获取、Python 工具、可视化、降尺度、极端气候分析、区域影响评估的顺序走一遍,最后给出环境配置、常见问题和实操建议。你已经跑过 Python,但没有系统做过气候数据处理,这篇可以帮助你判断整个流程到底从哪里入手最省时间。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 数据基础 | CMIP6 多模式多情景数据,覆盖 historical、SSP126、SSP245、SSP370、SSP585 等实验,变量以气温、降水、海温、风场、气压场为主 |
| 技术栈 | Python、xarray、dask、numpy、pandas、scipy、matplotlib、cartopy、scikit-learn、xesmf、cftime |
| AI 应用方向 | 特征降维、模式诊断、机器学习降尺度、极端事件识别、超分辨率重建、批量数据处理 |
| 核心技能 | NetCDF 数据读取、时空切片、区域统计、多模式集成、降尺度、极端气候指数计算、制图 |
| 分析结果 | 区域气温/降水变化趋势、极端高温与极端降水频率变化、未来情景下的风险评估图件和数据 |
| 硬件门槛 | 普通 CPU 可以完成大部分处理和可视化;深度学习和部分降尺度任务建议使用 NVIDIA GPU |
| 启动方式 | Jupyter Notebook 交互式逐段运行,或 Python 脚本批量运行 |
| 是否支持批量任务 | 支持,通过 Python 脚本对多模式、多情景、多年份数据批量处理 |
| 是否提供接口 API | 不涉及 Web 服务接口,但数据下载和计算流程可以封装成 Python 函数复用 |
| 适合场景 | 气候变化科研入门、区域气候影响评估、极端气候分析、环境报告编制、毕业论文与课题研究 |
从整体看,这条学习路线的价值不是停留在“会用某个函数”,而是把数据处理和分析框架建立起来,后面换任何区域、任何情景、任何模式数据,都能把流程跑通。
2. 适用场景与使用边界
这套专题适合三类人。
第一类是地学、气象、环境相关专业的研究生和科研人员。毕业论文或者课题里需要评估某个区域未来的气温、降水变化,或者要分析极端热浪、极端降水的频率变化,CMIP6 基本绕不开。专题方式能把“从下载到出图”的时间从几周压缩到几天。
第二类是数据分析工程师。这类人群不一定懂气候物理过程,但具备较强的 Python 能力,想切入气候数据分析赛道。AI+CMIP6 是一个差异化的方向,普通数据分析岗位很少接触 NetCDF、时空格点数据、模式集成和降尺度,但这类能力在双碳、新能源、农业保险、城市规划等领域的需求正在增加。
第三类是自学能力强的高年级本科生。需要完成气候变化相关课程设计或者创新项目,直接看这套专题可以少走很多弯路,避免从网上零散找代码拼凑。
使用边界也提一下。CMIP6 输出的是气候模式结果,不是未来预言。不同模式、不同情景之间的差异很大,做分析时不能只拿一个模式、一个情景就下结论。数据使用要遵循 ESGF 和各个机构的许可协议,公开发表和商用前需要确认数据许可和引用规范。涉及到气象站点观测数据、人口经济数据、土地利用数据时,要分别确认授权范围,不要随意传播未公开的第三方数据。
另外,降尺度结果天然携带模式偏差和历史观测数据偏差,AI 模型训练不当还会放大这种偏差,所以任何降尺度结果都要做验证,不能直接作为工程决策的唯一依据。
3. 七个专题整体结构与进阶路线
这套课程体系虽然内容覆盖广,但推进路径很清晰,本质是“数据获取 → 工具准备 → 方法学习 → 应用输出”的四层结构,七个专题按顺序递进。
| 专题 | 主题 | 主要内容 |
|---|---|---|
| 专题一 | AI 新视角下的气候大数据分析 | 气候数据形态、AI 在地学中的应用场景、CMIP6 与大数据结合方式 |
| 专题二 | CMIP6 数据获取与预处理 | ESGF 检索下载、NetCDF 读取、变量说明、时空裁剪、单位转换 |
| 专题三 | Python 高级数据分析与可视化 | xarray 时空操作、dask 并行、cartopy 地图投影、极端指数可视化 |
| 专题四 | 气候降尺度技术 | 统计降尺度、线性修正、分位数映射、机器学习降尺度、模型验证 |
| 专题五 | 气候变化区域影响评估 | 区域气温/降水变化归因、多情景对比、农业与水资源影响 |
| 专题六 | 极端气候分析 | ETCCDI 极端指数、极端高温、极端降水、干旱事件诊断 |
| 专题七 | 综合实战 | 从 CMIP6 原始数据到区域风险评估图件的完整流程 |
这条路径的设计逻辑是:先建立 AI 视角,知道气候数据分析和普通结构化数据分析的区别;再解决数据来源问题;接着做好 Python 工具链;然后进入方法门槛最高的降尺度;最后落到区域影响应用上。
如果你已经会 Python,专题一和专题三可以快速过一遍,重点放在专题二的数据获取和专题四的降尺度上。如果你是零基础,建议按七专题顺序完整走,不要跳。
4. AI 新视角:CMIP6 数据分析如何与 AI 结合
很多人在刚接触 CMIP6 的时候有一个误区,觉得 AI 就是拿神经网络做预测,在这种气候数据分析里好像插不上手。实际上 AI 在 CMIP6 数据分析中的应用比想象中更广,而且越早建立这个视角,后面做降尺度和模式诊断越顺手。
第一个方向是数据质量控制和缺失处理。气候模式输出数据量巨大,但某些变量、某些时间段可能因为下载不完整或者文件拼接问题出现缺失值。传统插值方法效率低,用机器学习方法可以基于相邻格点和历史相似时刻对缺失场做重建。
第二个方向是特征降维和模式评价。CMIP6 全球模式输出变量多、时间尺度长,如果逐个格点、逐月比较不同模式的表现,计算量很大。用主成分分析、聚类或者自编码器把高维气候场降到低维空间,再做模式相似性分析,可以快速判断哪些模式在你的研究区表现较好,为后续多模式集成的权重设置提供依据。
第三个方向是最有价值的,就是机器学习降尺度和订正。全球模式空间分辨率通常在 100 到 250 千米之间,直接用于区域尺度分析太粗。传统统计降尺度用的是线性关系或分位数映射,而随机森林、梯度提升、卷积神经网络和生成对抗网络已经被大量用于学习大尺度环流场与局地气温降水之间的非线性关系。这部分会在专题四详细展开。
第四个方向是极端气候事件自动识别。极端事件在时空上往往具有局部、瞬时的特征,传统阈值法容易漏判。用监督学习或者异常检测方法,在温度和降水场上自动识别极端热浪、极端降水事件,效率比人工阈值筛选高。
这四个方向覆盖了数据处理、模式评价、空间降尺度和事件识别,基本就是 AI 与 CMIP6 结合的主要切入点。学习的时候不需要一开始就设计多复杂的模型,先会调用成熟库跑通逻辑,再逐步深入。
5. CMIP6 数据获取与预处理
CMIP6 全称是第六次国际耦合模式比较计划,由世界气候研究计划组织协调。数据主要发布在 ESGF,也就是地球系统网格联盟的数据节点上。数据获取的起点就是在 ESGF 上检索符合你需求的模式数据。
5.1 数据检索策略
下载之前先想清楚三件事:第一,需要什么变量;第二,需要什么实验情景;第三,需要什么时间频率。
基础变量一般是近地面气温 tas、降水 pr、最高气温 tasmax、最低气温 tasmin。如果分析热浪,tasmax 和 tasmin 必选;分析干旱,pr 和可能蒸散发变量都很重要;分析风能资源,则需要风速和风场分量。
实验情景方面,历史模拟用 historical,未来预估常用 SSP126、SSP245、SSP370、SSP585,分别对应低、中、高和极高辐射强迫情景。区域影响研究建议至少下载一个温和情景和一个高排放情景,方便做不确定性区间。
时间频率方面,长期趋势分析可以下载月平均数据,标注为 Amon 或 Omon;极端气候指数计算必须下载日数据,标注为 day。日数据文件体积远大于月数据,下载前要估算好磁盘空间。
5.2 下载与文件组织
ESGF 下载通常需要注册账号并同意数据许可协议。在节点页面选择项目、实验、变量、频率、模式后,会得到下载链接。数据量大的时候不要手工一个一个点,建议直接复制下载链接列表,使用支持断点续传的工具批量下载。
推荐按下面结构组织数据目录:
CMIP6_data/ ├── historical/ │ ├── tasmax/ │ │ └── Day/ │ ├── tasmin/ │ │ └── Day/ │ └── pr/ │ └── Day/ ├── ssp245/ │ └── ... ├── ssp585/ │ └── ... └── obs/ └── ...规范目录比后期写一堆判断路线的代码更重要。数据量一多,命名混乱会导致整个流程反复返工。
5.3 NetCDF 读取与常用预处理
CMIP6 数据是 NetCDF 格式,Python 里用 xarray 读取最方便。xarray 直接保留了维度、坐标和属性信息,不需要手工处理数组边界。
import xarray as xr # 读取日最高气温数据 ds = xr.open_dataset('tasmax_day_CMIP6_historical.nc') tasmax = ds['tasmax'] # 查看数据结构 print(tasmax) # 气温单位转换,CMIP6 常见单位为 K,转为 ℃ tasmax_c = tasmax - 273.15读取后常见操作包括区域裁剪、时间切片和气候态计算。
# 选择中国东部区域,经度 105-125,纬度 25-45 regional = tasmax_c.sel(lat=slice(25, 45), lon=slice(105, 125)) # 选择 1985-2014 年时段 period = regional.sel(time=slice('1985-01-01', '2014-12-31')) # 计算夏季平均最高气温,北半球夏季为 6-8 月 summer = period.sel(time=period.time.dt.month.isin([6, 7, 8])) summer_mean = summer.mean(dim='time')注意经纬度范围因为部分模式是经度 0 到 360,部分模式是 -180 到 180,裁剪前需要先用最小值、最大值检查维度。遇到经度范围不对齐,可以用 xarray 的 assign_coords 配合 roll 转换,或者直接用 xesmf 把数据重网格化到统一网格。
6. Python 高级工具链与可视化
工具选择上建议直接使用 conda 管理环境,Python 版本不需要追新,稳定即可。核心库组合如下:
| 库 | 用途 |
|---|---|
| xarray | NetCDF 数据处理、维度操作、分组聚合 |
| dask | 大数据量延迟计算与并行处理 |
| numpy / pandas | 基础数值计算和表格操作 |
| xesmf | 网格重插值与降尺度输入准备 |
| cartopy | 地图投影、海岸线、区域边界绘制 |
| matplotlib | 基础绘图和图表定制 |
| cftime | 处理气候数据中的日历类型 |
| scikit-learn | 机器学习降尺度常用模型 |
| scipy | 统计检验、插值和信号处理 |
使用 conda 一次安装主要库:
conda create -n cmip6 python=3.10 -y conda activate cmip6 conda install -c conda-forge xarray dask netcdf4 cartopy matplotlib scipy scikit-learn cftime -y conda install -c conda-forge xesmf -y如果你自己的电脑配置一般,数据处理阶段用 dask 把任务拆成小块,避免一次性把所有数据读入内存。实际运行前建议先用一个小区域、短年份测试一遍,确认逻辑正确后再全量跑。
可视化的重点不是画一张图,而是让图能够承载时空信息。CMIP6 数据最基本的可视化是分布图和序列图。分布图适合展示温度变化的区域差异,序列图适合展示时间趋势。
import matplotlib.pyplot as plt import cartopy.crs as ccrs # summer_mean 是之前计算得到的区域夏季平均最高气温 fig = plt.figure(figsize=(10, 6)) ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree()) summer_mean.plot.pcolormesh( ax=ax, transform=ccrs.PlateCarree(), cmap='coolwarm', cbar_kwargs={'label': '℃'} ) ax.coastlines(linewidth=0.8) ax.set_extent([105, 125, 25, 45]) ax.gridlines(draw_labels=True, linestyle='--', alpha=0.5) plt.title('夏季平均最高气温(℃)') plt.show()地图投影和范围设置是最容易出问题的步骤。如果彩色填图无法与海岸线对齐,检查数据经纬度坐标单位、坐标名称是否标准,以及 transform 参数是否设置。多模式集合结果做对比时,建议统一坐标范围、统一色标,避免可视化造成误导。
对于批量出图,可以把绘图过程封装成函数,循环不同模式、不同情景、不同年份段输出图片,保存到规范命名的目录里。
7. 气候降尺度技术路线与代码框架
降尺度是整个专题里技术门槛最高、应用价值最明显的部分。粗分辨率模式数据在区域尺度上往往存在明显偏差,需要通过降尺度把信息“细化”到区域尺度。
7.1 统计降尺度:分位数映射
最简单的订正方法是基于历史观测与模式模拟之间关系的统计映射。以气温为例,如果模式模拟的历史气温分布整体偏离观测,可以计算出每个分位数的偏差,然后修正未来情景下的模式输出。分位数映射能有效修正分布偏差,同时保留模式未来的变化信号。
import numpy as np def quantile_mapping(gcm_hist, obs_hist, gcm_future, q_steps=100): """ 分位数映射订正示例 gcm_hist: 模式历史模拟值,一维数组 obs_hist: 观测值,一维数组 gcm_future: 模式未来模拟值,一维数组 """ quantiles = np.linspace(0.01, 0.99, q_steps) gcm_q = np.quantile(gcm_hist, quantiles) obs_q = np.quantile(obs_hist, quantiles) corrected = np.interp(gcm_future, gcm_q, obs_q) return corrected实际使用时要分格点或分区处理,不能把所有格点混在一起计算。逐格点映射计算量大,可以用循环加多进程,或者把数据变成三维数组后批量处理。
7.2 机器学习降尺度
机器学习降尺度的基本思路是建立大尺度预测因子与局地目标变量之间的映射关系。常见预测因子包括模式输出的气压场、气温场、湿度场和风速场,目标变量可以是站点观测或高分辨率再分析数据。
from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import r2_score # 假设 X 是预测因子矩阵,y 是观测目标变量 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = RandomForestRegressor( n_estimators=300, max_depth=None, min_samples_leaf=3, random_state=0, n_jobs=-1 ) model.fit(X_train, y_train) y_pred = model.predict(X_test) print('R2:', r2_score(y_test, y_pred))关键不在随机森林本身,而在特征工程。建议把预测因子标准化,并保留能够代表大尺度环流状态的主要变量。特征过多会过拟合历史时期,导致未来情景外推能力差。降尺度前必须做交叉验证,并且要特别注意训练期与验证期不能重叠。
7.3 动力降尺度与深度学习方向
动力降尺度使用区域气候模式,比如 WRF、RegCM,把全球模式结果作为边界条件模拟区域气候。动力降尺度物理机制强,但计算成本极高,需要服务器集群或者长期运行时间。深度学习超分辨率方法,比如基于卷积神经网络和生成对抗网络的降尺度,近年来研究很多,但对训练数据和验证框架要求更高。
对于刚进入这个领域的人,建议先做统计降尺度和机器学习降尺度,把线性订正、分位数映射、随机森林和交叉验证跑熟练,再根据实际需求决定是否升级到动力降尺度或深度学习方法。
8. 极端气候分析:指数计算与事件诊断
极端气候分析不能只看平均态的变化,因为很多气候影响恰恰来自极端值的变化。国际上常用的一套极端气候指数由 ETCCDI 定义,包括极端高温、极端低温、极端降水、干旱等多个维度。
几个最常用的指数及定义:
| 指数 | 名称 | 定义 |
|---|---|---|
| TXx | 最高气温最大值 | 一年内日最高气温的最大值 |
| TNn | 最低气温最小值 | 一年内日最低气温的最小值 |
| RX1day | 最大 1 日降水量 | 一年内日降水量的最大值 |
| RX5day | 最大 5 日降水量 | 一年内连续 5 日降水量的最大值 |
| CDD | 连续干旱日数 | 日降水量低于 1 mm 的最大持续日数 |
| SU | 夏日日数 | 日最高气温超过 25℃ 的日数 |
| TR | 热夜日数 | 日最低气温超过 20℃ 的日数 |
以 TXx 为例,使用 xarray 可以很方便地按年分组聚合计算:
import xarray as xr ds = xr.open_dataset('tasmax_day_CMIP6_historical.nc') tasmax_c = ds['tasmax'] - 273.15 # 计算每年最大日最高气温 txx = tasmax_c.resample(time='1Y').max(dim='time') # 输出年份 txx['time'] = txx.time.dt.year print(txx)CDD 的计算稍微复杂,因为涉及连续干旱日数的游程统计,不能简单用聚合函数完成。核心思路是先把降水转为布尔干湿状态,再统计每年最长连续干旱日数。
import xarray as xr import numpy as np ds_pr = xr.open_dataset('pr_day_CMIP6_historical.nc') pr = ds_pr['pr'] # 降水单位换算,常见 CMIP6 降水单位为 kg m-2 s-1,转为 mm/day pr_mm = pr * 86400.0 # 1mm 以下视为干旱日 dry = pr_mm < 1.0 # 按年分组计算最长连续干旱日数 def calc_cdd(year_data): dry_arr = year_data.values max_run = 0 current_run = 0 for val in dry_arr.flatten(): if val: current_run += 1 max_run = max(max_run, current_run) else: current_run = 0 return max_run cdd_yearly = pr_mm.resample(time='1Y').map(calc_cdd)极端气候分析的门槛不在于函数调用,而在于对指标物理含义的把握。CDD 的阈值选择、降水单位转换、模式日数据是否存在湿日偏差,都会直接影响结果。不要直接拿一个模式输出算完后当结论,要做多模式对比和观测数据验证。
9. 区域影响评估与综合制图
区域影响评估是前面所有分析的落脚点。常见问题包括:未来华北平原夏季高温风险是否增加、西南地区极端降水是否增强、某区域连续干旱日数是否显著延长。解决这些问题,需要把极端指数计算结果与具体区域和情景结合,做多模式集合评估。
多模式集合分析的一般步骤:
- 对每个模式、每个情景计算极端指数。
- 对每个指数计算多模式集合平均。
- 计算未来时期与历史参考时期的差值或比值。
- 计算多模式内部一致性,统计有多少比例的模式指向同一变化方向。
- 将变化结果绘制成空间图并给出区域平均结论。
一致性分析在区域影响评估中很重要。如果一个指数在 20 个模式中有 17 个指向上升,结论的可信度明显高于只有 11 个模式一致的情况。
import xarray as xr import numpy as np # 假设 txx_future 是未来时期 TXx 集合,txx_hist 是历史时期 TXx 集合 # 集合维度为 mode,先计算每个模式的变化量 change = txx_future - txx_hist # 多模式集合平均 ensemble_mean = change.mean(dim='mode') # 一致性:统计各格点变化方向一致的模式占比 positive_ratio = (change > 0).mean(dim='mode') # 仅保留超过 70% 模式一致的区域 robust_change = ensemble_mean.where(positive_ratio >= 0.7)区域影响评估的表达要区分“变化的量级”和“变化的可信度”。参考代码中,robust_change 保留的就是可信度较高的变化区域,这样可以避免个别极端模式造成误导。
制图阶段,可以在一张图内分面板呈现集合平均变化、一致性比例和区域平均时间序列。推荐输出 PNG 和 PDF 两种格式,PNG 用于报告插入,PDF 用于印刷和后续编辑。
10. 环境准备、硬件要求与启动流程
CMIP6 数据处理对硬件的要求比深度学习低得多,核心瓶颈在内存和磁盘,而不是 GPU。
| 项目 | 建议 |
|---|---|
| CPU | 8 核以上更平稳,日数据计算明显加速 |
| 内存 | 16 GB 起步,处理全球日数据建议 32 GB 以上 |
| 磁盘 | 200 GB 起,下载多个模式情景的日数据需要更大空间 |
| GPU | 深度学习降尺度时建议 NVIDIA 显卡,显存 8 GB 以上 |
| 操作系统 | Windows、Linux、macOS 均可,Linux 服务器更适合大规模计算 |
写代码时建议分成两个阶段:交互探索阶段用 Jupyter Notebook,批量跑数阶段转成 Python 脚本。Notebook 适合观察数据结构和可视化效果,但全量计算时 Notebook 的状态管理容易出问题,批量脚本更适合服务器运行。
批量处理脚本的基本模板:
import xarray as xr import pandas as pd models = ['AWI-CM-1-1-MR', 'BCC-CSM2-MR', 'CESM2', 'CNRM-CM6-1'] scenarios = ['historical', 'ssp245', 'ssp585'] variables = ['tasmax', 'pr'] for model in models: for scenario in scenarios: for var in variables: filepath = f'./data/{scenario}/{var}/day_{var}_CMIP6_{model}_{scenario}.nc' try: ds = xr.open_dataset(filepath) # 在这里执行具体的数据处理逻辑 print(f'处理完成: {model} {scenario} {var}') except FileNotFoundError: print(f'文件缺失: {filepath}')批量任务要加日志。每处理完一个模式或者一个情景,输出一条进度信息,任务中断后能快速定位是哪个文件出了问题。建议把成功和失败的文件清单分开保存,方便重新执行。
11. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| NetCDF 文件读不出来 | 缺少 netcdf4 引擎或文件本身不完整 | 检查文件大小、查看 open_dataset 报错信息 | 安装 netcdf4 或 h5netcdf,重新下载 |
| 经度范围是 0-360,与观测数据不一致 | 数据集坐标系统不同 | 打印经纬度最小值和最大值 | 使用 assign_coords 和 roll 方法转换经度 |
| 内存不足,程序卡死 | 一次性加载了全球日数据 | 查看任务管理器或 htop 内存占用 | 使用 dask 延迟计算,或先做区域裁剪和年份切片 |
| 地图上的数据与海岸线错位 | 投影与 transform 参数不匹配 | 检查数据坐标和绘图时的 transform | 数据使用 PlateCarree 时 transform 必须设置为 PlateCarree |
| 降尺度验证 R2 很高但未来结果异常 | 特征过多导致过拟合 | 查看训练集与验证集差异 | 减少特征、增加验证年份、使用空间交叉验证 |
| 极端降水数值异常偏大 | 单位未转换 | 检查数据属性中的 units | CMIP6 降水按需求乘以 86400 转为 mm/day |
| 不同模式结果差异过大 | 模式本身存在系统偏差 | 计算多模式集合平均和一致性 | 引入观测数据订正,做降尺度后再集成 |
| 批量脚本中途中断 | 网络下载不完整或代码遇到异常值 | 查看日志输出和文件目录 | 捕获异常、保存断点列表、支持断点续跑 |
| 时间坐标读取乱码或报错 | 模式使用了不同日历 | 检查 time 属性中的 calendar 字段 | 打开时设置 decode_times=False,用 cftime 手动处理 |
| 图件中文显示为方框 | 系统缺少中文字体 | 检查 matplotlib 字体设置 | 指定中文字体文件路径,或使用英文标签避免乱码 |
排查问题最重要的原则是“先小后大”。遇到处理异常,先裁剪最小区域、最小年份段跑通,再用全量数据。这样出错时定位快,也能避免在数据量大的情况下一遍遍调参浪费时间。
12. 最佳实践与后续学习建议
如果只给一条建议,那就是第一次做完整流程时,严格控制数据规模。选 1 到 2 个模式、1 到 2 个情景、1 个目标区域,把数据获取、预处理、降尺度、极端指数计算、可视化全部跑通。这个闭环建立起来后,再扩模式集合、扩情景、扩变量都不难。
工程上建议把代码、数据、中间结果和最终图件分目录管理。代码不要和数据处理混在一起,预处理后的中间结果与原始下载文件分开存放。每次运行脚本前记录使用的方法、参数、数据版本,尤其是降尺度的预测因子和训练年份区间。气候数据分析的结果复现依赖这些元信息,后续审稿或者报告补充材料时能省很多事。
数据版权方面,下载 CMIP6 数据前仔细阅读 ESGF 节点展示的许可协议。通常情况下可以用于科研和教学,但公开发表和形成报告时要引用正确的数据来源,推荐遵循 CMIP6 标准引用规范。观测数据、站点数据、社会经济数据也要单独立项确认授权,不能因为分析需要就随意使用未授权数据。
行为规范上还要注意一点:模式输出不是实测数据,AI 降尺度和统计订正本质上都在做估计,最终结论必须带不确定性描述。建议在报告里明确说明使用了多少个模式、多大比例的模式指向一致结果,以及历史验证期的误差范围。
如果后续想继续深入,有三个方向可以选:一是强化动力降尺度,学习 WRF 区域气候模式的安装和运行,适合有 Linux 服务器资源的人;二是转向深度学习降尺度,学习 CNN、U-Net、生成对抗网络在气候数据重建上的应用,适合有 GPU 的人;三是结合行业做应用,把极端气候指数分析结果接入农业保险定价、城市内涝风险评估、新能源场站选址等实际场景。
这套专题体系最好的使用方式不是当成一次性教程看,而是当成项目模板。先把环境搭好,把 CMIP6 数据获取流程跑通,再按自己的研究区域替换经纬度范围和模式清单,最后你会发现真正花时间的不是写代码,而是理解数据和验证结果的合理性。