在根据选择的时间段附加两个 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
我有两个 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