You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CMIP6逐小时降水数据转为日值并修正单位至mm/day

CMIP6逐小时降水转日降水量(mm/day)的单位修正方法

单位转换原理

CMIP6的降水变量pr单位是kg/m²/s,要转换为常用的mm/day,核心逻辑基于水的密度特性:

  • 1 kg/m²的降水量 = 1 mm的降水深度(1m²面积上,1mm深的水体积为0.001m³,质量=密度×体积=1000kg/m³×0.001m³=1kg)
  • 1小时=3600秒,因此逐小时的降水速率需先转换为该小时的降水量(mm),再累加24小时得到日值。

错误原因

直接累加24小时的原始pr数据会偏小,是因为原始数据是每秒的降水速率,而非每小时的降水量。你需要先将速率乘以时间间隔(3600秒/小时),得到该小时的实际降水量后再累加。

具体实现方式

方法1:Python xarray(推荐)

import xarray as xr

# 读取NC文件
ds = xr.open_dataset("your_precip_data.nc")
pr = ds["pr"]  # CMIP6中降水变量通常命名为pr

# 1. 将每秒速率转换为每小时降水量(mm)
pr_mm_per_hour = pr * 3600  # kg/m²/s × 3600s = kg/m² = mm

# 2. 按日期维度累加,得到日降水量(mm/day)
pr_daily_mm = pr_mm_per_hour.resample(time="D").sum(dim="time")

# 保存结果或与观测数据对比
pr_daily_mm.to_netcdf("daily_precip_mm.nc")

方法2:NCO命令行工具

# 第一步:将pr单位转换为mm/hour
ncap2 -s 'pr=pr*3600;' input.nc temp.nc

# 第二步:按日累加得到日降水量
cdo daysum temp.nc daily_precip_mm.nc

# 清理临时文件
rm temp.nc

验证说明

转换完成后,可选取若干典型降水日,对比转换后的日值与观测数据的量级是否匹配(比如暴雨日通常在几十到上百mm),确保单位转换正确。

内容的提问来源于stack exchange,提问作者Fernando Primo Forgioni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:07:17