2

我有两个 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 ;

很感谢任何形式的帮助。

谢谢,

4

3 回答 3

2

通常人们会通过上述两个步骤来执行此操作,例如,

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允许一步完成的选项,即更快。练习留给读者。

于 2018-06-15T19:22:24.527 回答
1

在我回答如何在 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
于 2018-06-14T17:47:00.260 回答
0

使用 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
于 2018-06-16T07:30:54.000 回答