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
| Interpolation | Operators | Description |
|---|---|---|
| 双线性插值(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
2cdo griddes file.nc > mygrid
cdo remapbil,mygrid infile outfile
<operator>,grid,weights infile outfile
| Interpolation | Operators | Description |
|---|---|---|
| 网格重映射 | remap,grid,weights | 利用生成的插值权重将所有输入字段重新映射到一个新的水平网格 |
例子
创建一个网格描述文件,并根据此网格生成双线性插值权重:1
2
3cdo griddes file.nc > mygrid
cdo genbil,mygrid infile remapweights.nc
cdo remap,mygrid,remapweights.nc infile outfile等价于:
1
2cdo 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
| Interpolation | Operators | Description |
|---|---|---|
| 垂直混合层重映射 | remapeta,vct[,oro] | 参数 vct :具有垂直坐标表的 ASCII 数据集文件名 参数 oro :目标数据集地形的文件名 |
<operator>,levels infile outfile
| Interpolation | Operators | Description |
|---|---|---|
| 垂直混合气压层 插值到 垂直气压层 | 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
| Interpolation | Operators | Description |
|---|---|---|
| 线性垂直插值 | intlevel3d,tgtcoordinate | 根据给定的三维垂直坐标系 infile2 对三位变量场 infile1 进行线性垂直插值;参数 tgtcoordinate 是一个具有三维垂直高度层坐标的文件 |
例子
将三维变量场 infile1 插值到 infile2 的三维垂直坐标系中,插值的垂直高度层由 tgtcoordinate 给出:1
cdo intlevel3d,tgtcoordinate infile1 infile2 outfile
时间插值
<operator>,parameter infile outfile
| Operators | Description |
|---|---|
| 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
| Operators | Description |
|---|---|
| intyear,years | 对两个年份的数据 infile1 和 infile2 进行线性插值, infile1 和 infile2 必须具有相同的结构和变量;输出的数据集命名为: \<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