CDO - 插值操作

本篇随笔将介绍 CDO 进行水平网格插值、垂直层插值和时间插值的功能

Interpolation 插值

水平网格差值

Interpolation
Bilinear Interpolation双线性插值
Bicubic Interpolation双立方插值
Nearest Neighbor Remapping最邻近重映射
Distance Weighted Average Remapping距离加权平均重映射
First order conservative Remapping一阶保守重映射
Second order conservative Remapping二阶保守重映射
Largest area fraction Remapping最大面积分数重映射
Grid Remapping网格重映射

<operator>,grid infile outfile

InterpolationOperatorsDescription
双线性插值(bilinear)remapbil,grid双线性插值;
参数 grid :目标网格的描述文件或名称,如 n32 (Gaussian N32 grid)、r360x181 (lonlat 360x181)
genbil,grid生成双线性插值权重;
可以通过操作 remap 将生成的权重应用于相同源网格的文件
双立方插值(bicubic)remapbic,grid
genbic,grid
最邻近重映射remapnn,grid
gennn,grid
距离加权平均重映射remapdis,grid[,neighbors]
gendis,grid
一阶保守重映射remapcon,grid
gencon,grid
二阶保守重映射remapcon2,grid
gencon2,grid
最大面积分数重映射remaplaf,grid
genlaf,grid
  • 例子
    创建一个网格描述文件,利用双线性插值将 infile 插值到该网格:

    1
    2
    cdo griddes file.nc > mygrid    
    cdo remapbil,mygrid infile outfile

<operator>,grid,weights infile outfile

InterpolationOperatorsDescription
网格重映射remap,grid,weights利用生成的插值权重将所有输入字段重新映射到一个新的水平网格
  • 例子
    创建一个网格描述文件,并根据此网格生成双线性插值权重:

    1
    2
    3
    cdo griddes file.nc > mygrid    
    cdo genbil,mygrid infile remapweights.nc
    cdo remap,mygrid,remapweights.nc infile outfile

    等价于:

    1
    2
    cdo griddes file.nc > mygrid    
    cdo remapbil,mygrid infile outfile

垂直层插值

Interpolation
Vertical Hybrid Level Remapping垂直混合层重映射
Vertical Pressure Interpolation垂直气压层插值
Vertical Height Interpolation垂直高度层插值
Linear Vertical Interpolation线性垂直插值

<operator>,vct[,oro] infile outfile

InterpolationOperatorsDescription
垂直混合层重映射remapeta,vct[,oro]参数 vct :具有垂直坐标表的 ASCII 数据集文件名
参数 oro :目标数据集地形的文件名

<operator>,levels infile outfile

InterpolationOperatorsDescription
垂直混合气压层 插值到 垂直气压层ml2pl,plevels混合 气压层 插值到 垂直气压层;
infile 中需要包含 地表气压地表位势
垂直混合气压层 插值到 垂直高度层ml2hl,hlevels混合 气压层 插值到 垂直高度层;
infile 中需要包含 地表气压地表位势
垂直混合高度层 插值到 垂直气压层ap2pl,plevels混合 高度层 插值到 垂直气压层;
infile 中必须包含 三维的大气气压数据,单位为 pascal ,变量标准名为 air_pressure
垂直混合高度层 插值到 垂直高度层gh2hl,hlevels混合 高度层 插值到 垂直高度层;
infile 中必须包含 三维的高度数据,单位为 meter ,变量标准名为 geometric_height_at_full_level_center
线性垂直插值intlevel,levels三维变量的线性垂直插值
  • 例子
    将混合气压层数据插值到 925,850,500 和 200 hPa 的气压层:

    1
    cdo ml2pl,92500,85000,50000,20000 infile outfile  

    将混合高度层数据插值到 925,850,500 和 200 hPa 的气压层:

    1
    cdo ap2pl,92500,85000,50000,20000 infile outfile  

    将混合高度层数据插值到 20,100,500,1000,5000,10000 和 20000 米的高度:

    1
    cdo gh2hl,20,100,500,1000,5000,10000,20000 infile outfile  

<operator>,tgtcoordinate infile1 infile2 outfile

InterpolationOperatorsDescription
线性垂直插值intlevel3d,tgtcoordinate根据给定的三维垂直坐标系 infile2 对三位变量场 infile1 进行线性垂直插值;
参数 tgtcoordinate 是一个具有三维垂直高度层坐标的文件
  • 例子
    将三维变量场 infile1 插值到 infile2 的三维垂直坐标系中,插值的垂直高度层由 tgtcoordinate 给出:

    1
    cdo intlevel3d,tgtcoordinate infile1 infile2 outfile  

时间插值

<operator>,parameter infile outfile

OperatorsDescription
inttime,date,time[,inc]时间步之间的线性插值,参数 date,time[,inc] 表示插值开始的日期 date 、时间 time 以及增量 inc
intntime,n时间步之间的线性插值,参数 n 表示从一个时间步到下一个时间步的时间步间隔
  • 例子
    将时间序列 infile 插值到 1987-01-01 12:00:00 开始的每小时一次的数据集:

    1
    cdo inttime,1987-01-01,12:00:00,1hour infile outfile  

<operator>,parameter infile1 infile2 obase

OperatorsDescription
intyear,years对两个年份的数据 infile1infile2 进行线性插值, infile1infile2 必须具有相同的结构和变量;
输出的数据集命名为: \<obase>\<yyyy>\<suffix>\<suffix> 为文件扩展名;
参数 years 为逗号分隔的年份列表或者 first/last[/inc] 表示的年份范围
  • 例子
    infile1 为 1985 年的 12 个时间步, infile2 为 1990 年的 12 个时间步;按月在 1985 年至 1990 年之间进行线性插值:

    1
    cdo intyear,1986,1987,1988,1989 infile1 infile2 year