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

netCDF4文件网格大小查询及100km转25km分辨率方法咨询

将CMIP6 INM-CM4-8的tasmax数据从100km插值到25km的实现方法

一、Python实现方案

工具依赖

先安装处理NetCDF和气候数据的必要库:

pip install xarray netCDF4 xesmf numpy

具体步骤

  1. 读取原始数据
import xarray as xr

# 替换为你的tasmax文件路径
ds = xr.open_dataset("tasmax_inm-cm4-8_historical.nc")
# 确认数据结构(lat、lon维度和tasmax变量)
print(ds)
  1. 构建25km分辨率目标网格
    原始100km对应lat=120、lon=180,25km是4倍分辨率,因此目标维度设为lat=480、lon=720,保持和原始数据一致的经纬度范围:
import numpy as np

lat_min, lat_max = ds.lat.min().item(), ds.lat.max().item()
lon_min, lon_max = ds.lon.min().item(), ds.lon.max().item()

# 生成高分辨率经纬度数组
target_lat = np.linspace(lat_min, lat_max, 480)
target_lon = np.linspace(lon_min, lon_max, 720)

# 创建目标数据集模板
ds_target = xr.Dataset(
    {
        "lat": (["lat"], target_lat),
        "lon": (["lon"], target_lon),
    }
)
  1. 执行插值重网格化
    使用xesmf的双向线性插值(适合温度这类连续变量,平衡精度和效率):
import xesmf as xe

# 创建重网格器
regridder = xe.Regridder(ds, ds_target, "bilinear")

# 对tasmax变量插值
ds_tasmax_highres = regridder(ds["tasmax"])

# 整合为完整数据集,保留原始时间等维度
ds_highres = ds_target.copy()
ds_highres["tasmax"] = ds_tasmax_highres
  1. 保存结果
ds_highres.to_netcdf("tasmax_inm-cm4-8_25km.nc")

提示:如果需要守恒型插值(比如通量类变量),可将插值方法改为conservative,温度类变量用双向线性足够。

二、QGIS实现方案

具体操作步骤

  1. 导入NetCDF数据
  • 点击图层 -> 添加图层 -> 添加栅格图层,选择你的tasmax文件。
  • 在对话框中选择tasmax变量,按需选择时间步(逐日数据可加载单日期或全序列),点击添加。
  1. 创建25km分辨率模板
  • 打开处理 -> 工具箱,搜索创建常量栅格工具:
    • 范围:复制原始tasmax图层的地理范围(从图层属性中查看)。
    • 像素大小:设为原始分辨率的1/4(比如原始100km对应1.875°经度,25km则设为0.46875°;用米单位直接设25000)。
    • 输出CRS:与原始数据保持一致(一般为WGS84 EPSG:4326)。
    • 保存为临时或本地文件。
  1. 执行重采样插值
  • 在工具箱搜索栅格重采样(或GDAL的Warp (重投影)):
    • 输入图层:选择导入的tasmax栅格。
    • 输出设置:选择刚创建的25km模板,或直接指定分辨率为25000米。
    • 重采样方法:选双线性插值(适合温度),追求精度可选立方卷积插值。
    • 时间序列数据需勾选处理所有波段。
  • 点击运行生成高分辨率数据。
  1. 导出结果
  • 右键点击生成的图层,选择导出 -> 保存为,格式选NetCDF,设置路径后完成导出。

内容的提问来源于stack exchange,提问作者Vandita Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:28:24