前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何利用CDO从数据集中提取数据

如何利用CDO从数据集中提取数据

作者头像
bugsuse
发布2020-04-21 17:31:01
7.9K0
发布2020-04-21 17:31:01
举报

之前说了如何利用CDO查看数据集信息 使用CDO查看气象数据信息。这一次说一下利用CDO从数据集中提取数据。这部分是非常使用的,尤其是当涉及到大数据集的时候,其优势就变得非常明显了。

从事气候和区域模式工作的都会明白,模式输出结果有时会非常大,动辄就是几十甚至几百G,而其中有很多变量是我们用不到的,这时候为了方便就需要把需要用到的变量提起出来。

比如,要提取某些时刻,某些变量在局部区域的数据:

cdo -sellonlatbox,119.5,120.5,33.5,34.5 -selname,SCW,SCI,SCS,SCH,SCHL,SCR,SCTOT,REFL_10CM -seltimestep,1,7,13,19,24 wrfout_d03_2016-06-23_06\:00\:00 wrfsub.nc
# sellonlatbox   表示按照经纬度范围选择区域,先经度范围,后纬度范围
# selname         表示按照变量名选择数据,直接跟变量名,用,号隔开
# seltimestep    表示按照时步选择数据,数字分别表示第几个时步,均用,号隔开
# wrfout_d03_2016-06-23_06:00:00   输入文件
# wrfsub.nc    输出文件名

上述命令表示先从输入文件中选取第1,7,13,19,24个时步的所有变量,然后从所得的结果中选择指定的八个变量,然后再从得到的结果中选择指定经纬度范围的数据,最后输出到指定文件。

注意:每个操作符前都有 - 符号,这是使用操作符链时的标配,而且操作符链的运算顺序是从右往左

执行输出信息如下:

cdo sellonlatbox: Started child process "selvar,SCW,SCI,SCS,SCH,SCHL,SCR,SCTOT,REFL_10CM -seltimestep,1,7,13,19,24 wrfout_d03_2016-06-23_06:00:00 (pipe1.1)".
cdo(2) selname: Started child process "seltimestep,1,7,13,19,24 wrfout_d03_2016-06-23_06:00:00 (pipe2.1)".
cdo(3) seltimestep: Processed 3829668565 values from 175 variables over 25 timesteps ( 23.72s )
cdo(2) selname: Processed 640938240 values from 175 variables over 5 timesteps ( 23.79s )
cdo sellonlatbox: Processed 640938240 values from 8 variables over 5 timesteps ( 24.10s )

从输出信息中可以看出,总耗时在1min左右,查看输出文件信息可以看到,输出文件大小为98M,而之前的输入文件大小为206G!数据集大小变化超过2000倍,这在进行数据共享时对于效率的提高是非常重要的!

-rw-r--r-- 1 xxxxx  xxxxx 98M wrfsub.nc

除了上述选择方式之外,还有很多选择数据的方式,比如选择指定压力层,根据模拟域的索引选择,根据时间,年,月,日等,而且还可以根据网格单元选择数据。当然了,除了选择部分数据之外,也可以从数据集中删除数据

选择字段

select 操作符可以从任意数量的输入文件中提取指定的信息,并输出到指定文件中。所选择的字段取决于选择的参数,而参数是通过逗号分割的“key=value”对。通配符也可用作字符串参数(即可以通过正则表达式匹配选择)。

常用形式为:

cdo select,param infiles outfile

其中param可以是变量名,参数ID,编码,垂直层,日期,时刻,网格名,时步等。具体信息可以查看help。这个操作符是低级命令,适用于批量操作。其对应delete操作符,可以从输入文件删除数据。

比如:

从两个文件中选择500,850hPa的U,V,W变量数据

cdo select,name=U,V,W,level=500,850 wrfout_d03_2016-06-23_00:00:00 wrfout_d03_2016-06-23_06:00:00 wrfsub.nc

注意:每个文件的不同时步都要包含相同的变量。

除了使用上述方式选择之外,还可以通过 slevar类操作符选择数据,selvar操作符提供了很多可选参数用于操作数据集。

比如常用的操作符:

selname/delname 根据变量名选择/删除数据,可指定多个变量名,用逗号隔开即可

sellevel 选择指定层的数据,可指定压力层

GRIB参数多字段选择

selmulti 操作符可以从输入文件中选择多个字段然后输出到文件中。常用形式如下:

cdo selmulti,selection-specification infile outfile 

selection-specification可以是文件名或字符串。如果是字符串的话需满足如下形式:

<type>(parameters; leveltype(s); levels)

type 表示是选择还是删除即 sel 或 del

parameters 表示参数编码

leveltype 表示GRIB1层类型

levels 每一层的值

比如:

( 1 1 , 1 7 ; 1 0 5; 2 )

下列描述方式也可从文件中选择数据:

SELECT/DELETE, PARAMETER=parameters, LEVTYPE=leveltye(s), LEVEL=levels

使用以下操作可以转换压力单位和温度单位:

SELECT, PARAMETER=1, LEVTYPE= 1 0 3 , LEVEL=0, SCALE=0.01 SELECT, PARAMETER=11, LEVTYPE=105, LEVEL=2, OFFSET=273.15

注意:如果定义了SCALE和OFFSET的话,文件中数据会进行换算:SCALE×(VALUE - OFFSET)。默认SCALE为1,OFFSET为0。

针对多字段操作,除了selmulti操作符之外,还有对应的删除操作delmulti和改变操作符changemulti。

选择单元格及重采样

选择单元格的操作并不经常使用,主要是使用selgridcell和delgridcell操作符,而且通过单元格索引进行数据集操作。使用方式如下:

cdo sel/delgridcell,indexs infile outfile 

主要说一下重采样吧,所谓的重采样就是对水平网格精度的改变。默认的参数值为2,即网格精度会变为原来的一半。使用方式如下:

cdo samplegrid,factor infile outfile 

下面是关于数据集选取的所有操作符,简单了解其功能,需要时合理选择。

select        选择字段
delete        删除字段

selmulti       选择多个字段
delmulti       删除多个字段
changemulti    改变多个字段的ID

selparam       通过ID选择参数
delparam       通过ID删除参数
selcode        通过编码选择参数
delcode        通过编码删除参数
selname        通过变量名选择参数
delname        通过变量名删除参数
selstdname     通过标准名选择参数
sellevel       选择层
sellevidx      通过索引选择层
selgrid        选择网格
selzaxis       选择z轴
selzaxisname   通过名称选择z轴
seltype        选择GRIB层类型
seltabnum      选择表数参数

seltimestep    选择时步
seltime        选择时刻
selhour        选择小时
selday         选择天
selmonth       选择月
selyear        选择年
selseason      选择季
seldate        选择日期
selmon         选择单个月

sellonlatbox   选择经纬度范围
selindexbox    选择索引范围

selgridcell    选择网格单元
delgridcell    删除网格单元

samplegrid     重采样网格
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气象杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档