在根据选择的时间段附加两个 netcdf 文件方面需要帮助

Need assistance in Appending two netcdf files based choosing time period

我有两个 netcdf 文件:1) BB_001.nc 有 337 条记录,记录变量为时间; 2)BB_002.nc这是模拟的延续,有385条记录(记录变量也是时间)。因此,这两个文件有一个重叠记录。

$ ncdump -h BB_001.nc
netcdf BB_WC {
dimensions:
nele = 278399 ;
node = 143546 ;
siglay = 18 ;
siglev = 19 ;
three = 3 ;
time = UNLIMITED ; // (337 currently)
DateStrLen = 26 ;
maxnode = 11 ;
maxelem = 9 ;
four = 4 ;
...

$ ncdump -h BB_002.nc
netcdf BB_0001 {
dimensions:
nele = 278399 ;
node = 143546 ;
siglay = 18 ;
siglev = 19 ;
three = 3 ;
time = UNLIMITED ; // (385 currently)
DateStrLen = 26 ;
maxnode = 11 ;
maxelem = 9 ;
four = 4 ;
...

我想追加,但是BB_001.nc的最后一条记录和BB_002.nc的第一条记录相同,我需要删除多余的记录。

我尝试了以下命令:

ncks –A –d time,1,385 BB_002.nc BB_001.nc

但是没有用,BB_001.nc的记录还是一样(337而不是337+384=721)。

或者,我试过:

ncrcat BB_001.nc BB_002.nc test.nc

有效,但 test.nc 有 722 条记录。如何去掉多余的记录?

$ ncdump -h test.nc 
netcdf test {
dimensions:
nele = 278399 ;
node = 143546 ;
siglay = 18 ;
siglev = 19 ;
three = 3 ;
time = UNLIMITED ; // (722 currently)
DateStrLen = 26 ;
maxnode = 11 ;
maxelem = 9 ;
four = 4 ;

非常感谢任何帮助。

谢谢,

在我回答如何在 nco 中这样做之前,我强烈建议您选择 python 并使用 netCDF4 库,因为在我看来,操作 netCDF 文件更容易。

首先制作一个新的 netCDF 文件并删除最后一个条目:

ncks -d time,0,335 BB_001.nc BB_001_new.nc

然后,将 BB_001_new.nc 与 BB_002.nc

连接起来
ncrcat BB_001_new.nc BB_002.nc test.nc

通常人们会像上面那样分两步进行,例如

ncks -d time,1, BB_002.nc 2.nc
ncrcat BB_001.nc 2.nc out.nc

阅读 http://nco.sf.net/nco.html 的人都知道 --record_append 选项可以一步完成,即更快。练习留给 reader。

使用 CDO 的等效解决方案:

cdo delete,timestep=1 BB_002.nc 2.nc
cdo mergetime BB_001.nc 2.nc out.nc

您可以按如下方式传送命令:

cdo mergetime  BB_001.nc -delete,timestep=1 BB_002.nc out.nc