从 ECMWF 下载的 ERA5 的气象数据,数据格式是 NetCDF,分辨率是 0.1° x 0.1° 的,这个分辨率实在太低了,使用前需要先插值下。网上搜下了,可以使用 Climate Data Operator (CDO) 进行插值操作,本文记录下使用方法。
一、CDO 安装教程
老王在 Linux(Ubuntu)上跑的,直接通过 apt-get 安装即可:
apt-get install cdo
更多安装介绍可以去 Climate Data Operator (CDO) 官网查看:https://code.mpimet.mpg.de/projects/cdo/
二、CDO 插值教程
CDO 插值非常简单,这里直接分享别人的整理了:
target_grid(目标大小)可以是:
- a nc file to use the grid from
- a regular grid specifier e.g. r360x180
- a txt file with a grid descriptor (see below)
CDO 集成了多种插值方法,对应的命令如下:
- remapbic : bicubic interpolation
- remapbil : bilinear interpolation
- remapnn : nearest neighbour interpolation
- remapcon : first order conservative remapping
- remapcon2 : 2nd order conservative remapping
You can use a grid descriptor file to define the area you need to interpolate to…
我这里是以经纬度的方式,按照指定的分辨率(0.00898315284119523)插值,descriptor file 如下:
gridtype=lonlat xfirst=115 xinc=0.00898315284119523 xsize=334 yfirst=39 yinc=0.00898315284119523 ysize=334
其中 xfirst 就是最小的经度,可以用 cdo sinfon filename
查看。
之后用下面的命令插值:
cdo remapbic,CDO_proj all_2112.nc all_2112_1.nc
其中,CDO_proj 是上面的 descriptor file,all_2112.nc 是源文件,all_2112_1 是插值后的文件。
三、Python 使用 CDO 教程
CDO 可以直接通过 pip 安装,然后用下面的命令调用:
from cdo import Cdo cdo=Cdo() cdo.remapbil("target_grid",input="in.nc",output="out.nc")
但是老王在 Windows 上用时,遇到了多线程报错的问题,所以直接连上 Linux 服务器使用了。