免费|中国1km分辨率逐月降水量数据集(1976-2025,50年600期):附Python/Matlab读取代码
摘要:基于CRU全球0.5°气候数据集与WorldClim高分辨率气候数据集,通过Delta空间降尺度方案生成的中国区域1km分辨率逐月降水量数据。时间跨度1976-2025年共50年600期,NetCDF格式,已用496个独立气象站点验证。本文介绍数据背景、技术规格、使用方法与完整获取方式(50年逐年关键词)。
关键词:中国降水量、1km分辨率、逐月降水、Delta降尺度、NetCDF、彭守璋、CRU、WorldClim、气候数据
标签 :
GIS遥感气候数据NetCDF空间数据库降水

一、数据获取
两种方式任选其一:
方式一:公众号关键词(推荐)
关注 YouGIS顽石 ,发送关键词:
逐月降雨量-年份 → 该年全年12期降水量nc数据
示例:
逐月降雨量-2000 → pre_2000.rar(2000年1-12月,1个nc文件)
逐月降雨量-1998 → pre_1998.rar(1998年1-12月,1个nc文件)
逐月降雨量-2025 → pre_2025.rar(2025年1-12月,1个nc文件)
获取下载链接。
方式二:YouGIS 数据助手
| 平台 | 入口 |
|---|---|
| 微信小程序 | 搜索「YouGIS数据助手」 |
| PC 端 | https://yougis.com.cn/res/home |
支持在线查看数据元信息(分辨率、坐标系、覆盖范围),适合批量检索多个数据集。
50年关键词完整清单(1976-2025)
| 年份 | 关键词 | 年份 | 关键词 | 年份 | 关键词 |
|---|---|---|---|---|---|
| 1976 | 逐月降雨量-1976 | 1993 | 逐月降雨量-1993 | 2010 | 逐月降雨量-2010 |
| 1977 | 逐月降雨量-1977 | 1994 | 逐月降雨量-1994 | 2011 | 逐月降雨量-2011 |
| 1978 | 逐月降雨量-1978 | 1995 | 逐月降雨量-1995 | 2012 | 逐月降雨量-2012 |
| 1979 | 逐月降雨量-1979 | 1996 | 逐月降雨量-1996 | 2013 | 逐月降雨量-2013 |
| 1980 | 逐月降雨量-1980 | 1997 | 逐月降雨量-1997 | 2014 | 逐月降雨量-2014 |
| 1981 | 逐月降雨量-1981 | 1998 | 逐月降雨量-1998 | 2015 | 逐月降雨量-2015 |
| 1982 | 逐月降雨量-1982 | 1999 | 逐月降雨量-1999 | 2016 | 逐月降雨量-2016 |
| 1983 | 逐月降雨量-1983 | 2000 | 逐月降雨量-2000 | 2017 | 逐月降雨量-2017 |
| 1984 | 逐月降雨量-1984 | 2001 | 逐月降雨量-2001 | 2018 | 逐月降雨量-2018 |
| 1985 | 逐月降雨量-1985 | 2002 | 逐月降雨量-2002 | 2019 | 逐月降雨量-2019 |
| 1986 | 逐月降雨量-1986 | 2003 | 逐月降雨量-2003 | 2020 | 逐月降雨量-2020 |
| 1987 | 逐月降雨量-1987 | 2004 | 逐月降雨量-2004 | 2021 | 逐月降雨量-2021 |
| 1988 | 逐月降雨量-1988 | 2005 | 逐月降雨量-2005 | 2022 | 逐月降雨量-2022 |
| 1989 | 逐月降雨量-1989 | 2006 | 逐月降雨量-2006 | 2023 | 逐月降雨量-2023 |
| 1990 | 逐月降雨量-1990 | 2007 | 逐月降雨量-2007 | 2024 | 逐月降雨量-2024 |
| 1991 | 逐月降雨量-1991 | 2008 | 逐月降雨量-2008 | 2025 | 逐月降雨量-2025 |
| 1992 | 逐月降雨量-1992 | 2009 | 逐月降雨量-2009 |
每个关键词对应一个压缩包(约160MB),内含1个nc文件(该年12个月数据)。
二、数据背景
| 参数 | 说明 |
|---|---|
| 数据源 | CRU 全球0.5°气候数据集 + WorldClim 高分辨率气候数据集 |
| 降尺度方法 | Delta 空间降尺度方案 |
| 数据作者 | 彭守璋 研究员(西北农林科技大学水土保持研究所) |
| 验证方法 | 496个独立气象观测站点验证 |
| 发表期刊 | Earth System Science Data(ESSD),2019 |
| 数据来源 | 国家地球系统科学数据中心-黄土高原分中心 |
| 整理分享 | 微信公众号 YouGIS顽石 |
2.1 数据怎么来的
该数据集并非直接观测数据,而是通过以下流程生成:
CRU全球0.5°逐月气候数据(1901-至今)
+
WorldClim全球高分辨率气候数据(~1km)
↓
Delta 空间降尺度方案
↓
中国区域 1km 逐月降水/气温栅格数据
Delta降尺度的核心思路:利用WorldClim提供的空间高分辨率气候常态(climatology)作为空间细节"模板",将CRU的低分辨率逐月时间变化(距平)降尺度到1km网格上。这种方法保留了CRU的时序变化特征和WorldClim的空间细节,生成既有时间连续性又有空间精度的数据产品。
2.2 数据质量
使用 496个独立气象观测站点 的实测数据对降尺度结果进行了验证,验证结果表明数据可信。该数据集发表于国际顶级数据期刊 Earth System Science Data(影响因子>11),是目前中国区域最权威的高分辨率长时序气候栅格数据之一。
2.3 原始数据出处
- CRU TS:https://crudata.uea.ac.uk/cru/data/hrg/
- WorldClim:http://www.worldclim.org/
三、数据技术规格
| 参数 | 说明 |
|---|---|
| 数据格式 | NetCDF(.nc) |
| 空间分辨率 | 0.0083333°(约1km) |
| 时间范围 | 1976年1月 ~ 2025年12月 |
| 时间分辨率 | 逐月(每月一期) |
| 总期数 | 600期(50年 × 12个月) |
| 数据类型 | int16(16位有符号整型) |
| 降水量单位 | 0.1mm(实际降水量 = 存储值 × 0.1) |
| 空间范围 | 中国主要陆地(含港澳台),不含南海岛礁 |
| 坐标系 | WGS84 |
| 每年数据量 | 约160MB(1个nc文件,含12个月) |
四、数据使用方法
4.1 ArcMap 制图
ArcMap 可直接打开 NetCDF 文件制图:
- 菜单 → 多维工具 → 创建 NetCDF 栅格图层(Make NetCDF Raster Layer)
- 选择 .nc 文件,变量选
pre - 加载后可通过时间维度切换不同月份
4.2 Python 读取与处理
python
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
# 读取nc文件
ds = xr.open_dataset('pre_2000.nc')
# 查看数据结构
print(ds) # 打印变量、维度、属性
# 降水量 = 存储值 × 0.1(单位mm)
precip = ds['pre'] * 0.1
# 查看时间维度
print(f"时间范围: {ds.time.values[0]} ~ {ds.time.values[-1]}")
# 提取某月数据(如2000年7月)
july = precip.sel(time='2000-07')
print(f"7月降水量范围: {float(july.min()):.1f} ~ {float(july.max()):.1f} mm")
# 计算年降水总量
annual_total = precip.sum(dim='time')
print(f"年降水总量: {float(annual_total.min()):.0f} ~ {float(annual_total.max()):.0f} mm")
# 快速可视化
fig, axes = plt.subplots(1, 2, figsize=(16, 6))
# 7月降水量
july.plot(ax=axes[0], cmap='YlGnBu', cbar_kwargs={'label': 'mm'})
axes[0].set_title('2000年7月降水量')
# 年降水总量
annual_total.plot(ax=axes[1], cmap='YlGnBu', cbar_kwargs={'label': 'mm'})
axes[1].set_title('2000年降水总量')
plt.tight_layout()
plt.savefig('precipitation_2000.png', dpi=200, bbox_inches='tight')
plt.show()
ds.close()
4.3 批量读取多年数据
python
import xarray as xr
import glob
# 合并多年nc文件
files = sorted(glob.glob('pre_*.nc'))
ds_all = xr.open_mfdataset(files, combine='by_coords')
# 计算某区域(经纬度范围)的年均降水量时间序列
# 以北京周边为例(115.5-117.5°E, 39.5-41.5°N)
bj_precip = ds_all['pre'].sel(
lon=slice(115.5, 117.5),
lat=slice(41.5, 39.5) # 注意纬度可能降序
) * 0.1
# 年降水总量时间序列
annual = bj_precip.resample(time='YS').sum().mean(dim=['lon', 'lat'])
print(f"北京周边年均降水量趋势:")
for t, v in zip(annual.time.values, annual.values):
print(f" {str(t)[:4]}年: {v:.0f} mm")
ds_all.close()
4.4 Matlab 读取
Matlab 提供了 ncread 函数读取 nc 文件:
matlab
% 读取nc数据(变量名:pre)
data = ncread('pre_2000.nc', 'pre');
% 实际降水量(mm) = 存储值 × 0.1
precip = double(data) * 0.1;
% 提取特定月份(nc中第三个维度为时间)
january = precip(:, :, 1); % 第1期(1月)
% 绘制空间分布
imagesc(january);
colorbar;
title('2000年1月降水量 (mm)');
4.5 导出为 GeoTIFF(供QGIS/其他软件使用)
python
import xarray as xr
import rioxarray # 需安装:pip install rioxarray
# 读取并导出为GeoTIFF
ds = xr.open_dataset('pre_2000.nc')
precip = ds['pre'].sel(time='2000-07') * 0.1
# 写入空间坐标信息
precip.rio.write_crs("EPSG:4326", inplace=True)
precip.rio.to_raster('precip_2000_07.tif')
print("已导出为 GeoTIFF: precip_2000_07.tif")
ds.close()
五、使用注意事项
1. 单位换算(重要)
NetCDF 文件中降水量的存储单位为 0.1mm,实际降水量需要乘以 0.1:
python
# 错误:直接使用存储值
precip_raw = ds['pre'] # 单位 0.1mm
# 正确:乘以 0.1 转换为 mm
precip_mm = ds['pre'] * 0.1 # 单位 mm
2. 数据类型
数据以 int16(16位有符号整型)存储,范围 -32768~32767。乘以 0.1 后最大可表示约 3276.7mm/月,足以覆盖中国所有区域的月降水极值。
3. 空间范围
数据覆盖中国主要陆地部分(含港澳台地区),不含南海岛礁等区域。边界外为 NoData。
4. 引用要求
使用数据产生的成果需引用以下文献:
Peng Shouzhang, Ding Yongxia, Liu Wenzhao, Li Zhi. 1 km monthly temperature and precipitation dataset for China from 1901 to 2017. Earth System Science Data, 2019, 11, 1931--1946. https://doi.org/10.5194/essd-11-1931-2019
数据来源标注:国家地球系统科学数据中心-黄土高原分中心 (http://loess.geodata.cn)
5. 适用尺度
1km 分辨率适合省/流域/全国尺度的气候分析、水文模拟、生态评估。对于站点尺度的极端降水事件,建议结合站点实测数据使用。
六、常见问题
Q1: 数据是实测的还是模拟的?
数据基于 CRU 和 WorldClim 两个权威数据集通过 Delta 降尺度方法生成,属于再分析/降尺度产品,非直接观测数据。但已用496个独立气象站点验证,结果可信。
Q2: 为什么是1976-2025年?原始数据覆盖1901年至今。
完整数据集时间范围为1901年至今。本文分享的1976-2025年段覆盖了近50年,满足绝大多数气候变化和水文研究的需求。如需更早数据可从原始数据源获取。
Q3: nc文件怎么打开?
ArcMap(Make NetCDF Raster Layer)、QGIS、Python(xarray/netCDF4)、Matlab(ncread)、Panoply 等均可打开。
Q4: 能用Python按区域裁切吗?
可以。用 xarray 的 .sel(lon=slice(...), lat=slice(...)) 即可按经纬度裁切,也可用 rioxarray 的 .rio.clip() 按矢量边界裁切。
Q5: 降尺度方法和ERA5有什么区别?
ERA5是再分析数据(数据同化),本数据是降尺度产品(统计降尺度)。本数据的空间分辨率更高(1km vs ERA5的~31km),但时间精度为月尺度(ERA5为小时尺度)。两者各有适用场景。
Q6: 商业使用是否合规?
数据原始来源标注仅限非商业目的的科学研究与学术交流。商用建议联系原始数据提供方确认许可。
参考文献
- Peng S, Ding Y, Liu W, Li Z. 1 km monthly temperature and precipitation dataset for China from 1901 to 2017. Earth System Science Data, 2019, 11, 1931--1946. https://doi.org/10.5194/essd-11-1931-2019
- CRU TS 高分辨率网格气候数据集:https://crudata.uea.ac.uk/cru/data/hrg/
- WorldClim 全球气候数据:http://www.worldclim.org/
- 国家地球系统科学数据中心-黄土高原分中心:http://loess.geodata.cn
- YouGIS 数据助手:https://yougis.com.cn/res/home
觉得有用就点赞收藏。有问题评论区交流,看到都会回 👊