使用CDO将grads格式的资料转化成netcdf数据存储

名词介绍


  • CDO——Climate Data Operators
  • grads数据格式,这是一种气象业务及早期模式后处理需要的图形语言,它的标准包括了一个数据描述文件,一般是xxx.ctl 和一个二进制的存数据流文件(这种文件又细分为C系列语言生成的,和Fortran直接生成的,区别在于前者没有数据区块的概念,后者则有一定的分段big_endian)
  • netcdf数据格式:这里就不罗嗦了简单说就是自描述的数据格式,优点是可移植性好,缺点是大。

为什么要这么干?

其实grads,它能很方便的查看数值模式的输出结果(图像化),但是目前很多的高级语言其实对其支持并不友好,因此诞生了将其转化成netcdf格式的想法。

实现方案

在你的linux系统或者mac系统上使用
上面的特殊条件是因为CDO对windows的兼容并不好,还需要调用额外的linux模拟器。而且推荐在linux系统上进行,大型机上把数据打包转化好再用本地机子的脚本处理数据。

  1. 在CDO官网下载适当的版本(我用的1.7.2,因为最新版我接触的大型机上C++11库没有,不想太过麻烦)的tar.gz文件,解压后进入所得目录,用下面的代码段安装:
//HDF库是可选的,因为之后数据类型也会用到就顺便安装了,这个和本篇无关。
./configure --prefix "指定安装目录" --with-netcdf="你机子上netcdf的根目录" --with-hdf5="你机子上HDF的根目录"
  1. 使用命令cdo -b F64 -f nc import_binary "你的CTL文件" “希望输出的文件.nc” 这样只要在你的ctl里描述时间变量以及多个模式输出结果文件程序就会自动打包转化为一个netcdf文件。(这里面的-b F64 参数是为了将存储数据的精度扩大,有些模式输出的结果小数点后有很多位的,默认的选项会报错好像Error (cdf_put_vara_double) : NetCDF: Numeric conversion not representable
  2. 之后就可以愉快的用python处理数据啦~~~
  3. CDO除了干这一种单一的工作外,官网也有教其他用法,据说有600+的应用命令呢~~

你可能感兴趣的:(使用CDO将grads格式的资料转化成netcdf数据存储)