我的文件包含.grd格式的6小时间隔(每天4个文件)的大气数据。我也有相关的描述符文件(yyyymmddhh.ctl)。我可以使用GrADS绘制数据。但我需要将这些文件转换为NetCDF格式(.nc),以便在ferrert的帮助下对其进行可视化。有谁知道怎么做?
答案 0 :(得分:5)
我强烈建议您使用CDO将文件转换为NetCDF。在对.nc文件进行简单操作时,使用CDO或NCO几乎总是最佳选择。 根据我的经验,当正确的操作员可用时,CDO通常比使用Python或R更安全,更快。
e.g:
cdo -f nc import_binary in_grads.ctl out_ncdf.nc
您可以在CDO论坛的某些主题上找到更多相关信息:
PS:CDO提示:当链接多个CDO运算符时,使用-L选项来避免段错误,并考虑使用虚拟RAM空间(大多数Linux发行版上的/ dev / shm)来临时文件以避免磁盘写入。答案 1 :(得分:4)
你绝对应该使用Climate Data Operators (CDO)来做类似的事情:
cdo -f nc import_binary in.ctl out.nc
如果要处理大量文件,可能需要编写脚本来处理它们。
例如,我有一个带有来自COAMPS模型的一堆GrADS文件的tar文件,当解压缩时会生成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
...
所以我写了一个小的bash脚本:
#!/bin/bash
for file in *.ctl
do
fname=${file%.ctl}
cdo -f nc import_binary ${fname}.ctl ${fname}.nc
echo ${fname}.nc
done
将它们全部转换为netcdf。
注意#1 :构建CDO可能很棘手,但如果您使用的是Linux或Mac,则可以使用Conda进行安装。
如果还没有Conda,请安装Miniconda(免费)。以下是:
第1步。确保您有一个~.condarc
,它看起来像这样:
$ more ~/.condarc
channels:
- conda-forge
- defaults
第2步。创建自定义CDO环境以运行CDO:
$ conda create --yes -n CDO python=3.6 cdo
$ source activate CDO
第3步。运行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>
有关设置THREDDS数据服务器以处理此问题的详细信息,请参阅https://gis.stackexchange.com/questions/70919/setting-up-thredds-catalogs-for-ocean-model-data。
答案 2 :(得分:0)
您可以使用sdfwrite命令使用GrADS写出netcdf数据。文档位于http://iges.org/grads/gadoc/gradcomdsdfwrite.html