将GrADS(.grd)转换为NetCDF(.nc)?

Dee*_*jee 3 ferret netcdf grads

我有包含以.grd格式间隔6小时(每天4个文件)的大气数据的文件。我也有相关的描述符文件(yyyymmddhh.ctl)。我可以使用GrADS绘制数据。但是我需要将这些文件转换为NetCDF格式(.nc),以便在ferrert的帮助下将其可视化。有人知道怎么做吗?

AF7*_*AF7 5

我强烈建议您使用CDO将文件转换为NetCDF。对.nc文件进行简单处理时,使用CDO或NCO几乎总是最佳选择。以我的经验,当使用合适的运算符时,CDO通常比使用Python或R更安全,更快。

例如:

cdo -f nc import_binary in_grads.ctl out_ncdf.nc
Run Code Online (Sandbox Code Playgroud)

您可以在CDO论坛的某些主题上找到更多有关此的信息:

https://code.zmaw.de/boards/1/topics/1031

https://code.zmaw.de/boards/1/topics/213

PS:CDO提示:链接多个CDO运算符时,请使用-L选项以避免出现段错误,并考虑将虚拟RAM空间(在大多数Linux发行版中为/ dev / shm)用于临时文件,以避免磁盘写入。


Ric*_*ell 5

您绝对应该使用气候数据运营商(CDO)来执行以下操作:

cdo -f nc import_binary in.ctl out.nc 
Run Code Online (Sandbox Code Playgroud)

如果要处理的文件很多,则可能需要编写脚本来处理它们。

例如,我有一个tar文件,其中包含一堆来自COAMPS模型的GrADS文件,当解压缩后会产生121对文件.dat.cdl文件,其名称如下:

COTC.18L.2012102512.000.ctl
COTC.18L.2012102512.000.dat
COTC.18L.2012102512.001.ctl
COTC.18L.2012102512.001.dat
COTC.18L.2012102512.002.ctl
COTC.18L.2012102512.002.dat
...
Run Code Online (Sandbox Code Playgroud)

所以我写了一个小的bash脚本:

#!/bin/bash
for file in *.ctl
do
   fname=${file%.ctl}
   cdo -f nc import_binary ${fname}.ctl ${fname}.nc
   echo ${fname}.nc
done
Run Code Online (Sandbox Code Playgroud)

将它们全部转换为netcdf。

注意#1:CDO可能很难构建,但是如果您使用Linux或Mac,则可以使用Conda进行安装。

如果尚未安装Conda,请安装Miniconda(免费)。这是如何做:

步骤1。确保您有一个~.condarc,它看起来像这样:

$ more ~/.condarc
channels:
  - conda-forge
  - defaults
Run Code Online (Sandbox Code Playgroud)

第二步。创建一个自定义CDO环境以运行CDO:

$ conda create --yes -n CDO python=3.6 cdo
$ source activate CDO
Run Code Online (Sandbox Code Playgroud)

第三步。运行nco命令!

注意#2:我还创建了一个NcML文件,以虚拟方式将这些数据聚合到我的thredds数据服务器上。该文件如下所示:

<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2">
    <aggregation dimName="time" type="joinExisting">
        <scan location="." regExp=".*COTC\.18L\.[0-9]{10}\.[0-9]{3}\.nc$"/>
    </aggregation>
</netcdf>
Run Code Online (Sandbox Code Playgroud)

有关设置THREDDS数据服务器以处理此问题的更多信息,请参见https://gis.stackexchange.com/questions/70919/setting-up-thredds-catalogs-for-ocean-model-data