专栏首页气象杂货铺如何利用CDO从数据集中提取数据

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

之前说了如何利用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     重采样网格

本文分享自微信公众号 - 气象杂货铺(meteogs),作者:lightning

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-07-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WRF模式之WPS的配置运行

    编译安装好可以模拟实际个例的WRF模式之后,在模拟之前需要先确定模拟域(即模拟范围)以及数据预处理(插值陆面数据,比如地形,土壤等数据;差插值气象数据到模拟域)...

    bugsuse
  • 利用python-cdo处理气象数据

    如果你不喜欢命令行的操作方式,那么你可以尝试使用python-cdo,利用python脚本语言的优势来处理气象数据。命令行的方式有其优势,比如简单易操作,可扩展...

    bugsuse
  • WRF模式之个例模拟

    WPS只是WRF运用实际数据模拟的准备过程,这就好比开车要先上车。讲完前处理过程之后 WRF模式之WPS的配置运行,就要开始模拟了。

    bugsuse
  • XSS相关Payload及Bypass的备忘录(下)| 文末有打包好的Payload

    上述payload都打包在了下面链接中,自己现行研究一番,在哪里使用,可以做些模糊测试工作,具体自己研究研究吧,最后 全部.txt 是我将其中的payload都...

    7089bAt@PowerLi
  • 摄像头训练的吃豆人,我还是没活几集 | TensorFlow.js

    上个周末,面向JavaScript开发者的TensorFlow.js在TF开发者峰会上发布。

    量子位
  • Ffmpeg对sps/pps的解析和格式转换

    H264流的 SPS(序列参数集Sequence Parameter Set)和PPS(图像参数集Picture Parameter Set)记录了视频的基本编...

    用户1886867
  • shell技巧分享(二)

    songleo
  • python 修改文件

    py3study
  • [MySQL]更新时间(加上或者减去一段时间)

    定义和用法 DATE_ADD() 函数向日期添加指定的时间间隔。 DATE_SUB() 函数向日期减少指定的时间间隔。 语法 DATE_ADD(date...

    用户2353021
  • Ceph的磁盘管理tips

    换盘的时候一定要验明正身,原生的ceph-disk方式对磁盘分区的信息标记实在是太粗糙,很容易看花眼,比如下面这个例子,虽然通过PARTLABEL可以区分jou...

    用户1260683

扫码关注云+社区

领取腾讯云代金券