【问题标题】:Concatenate netcdf files with multiple 'record' dimensions连接具有多个“记录”维度的 netcdf 文件
【发布时间】:2019-11-19 16:35:30
【问题描述】:

让我们考虑这两个文件:

from netCDF4 import Dataset as dset

for i in range(2):
     with dset('test_{}.nc'.format(i),'w') as f:
         f.createDimension('A',5)
         f.createDimension('B',8)
         f.createVariable('v1',float,('A',))
         f.createVariable('v2',float,('B',))
         f['v1'][:] = range(i*5,i*5+5)
         f['v2'][:] = range(i*8,i*8+8)

如果两个维度是无限的,则 ncrcat 直接工作并沿 B 连接 v2 并沿 A 连接 v1。

ncrcat test_0.nc test_1.nc test_01.nc

但是,如果尺寸是固定尺寸,如上例,我必须连续将 A 和 B 设置为记录尺寸,以使其不受限制,然后连接

ncks --mk_rec_dmn A test_0.nc test_0u.nc ; mv test_0u.nc test_0.nc
ncks --mk_rec_dmn B test_0.nc test_0u.nc ; mv test_0u.nc test_0.nc
ncks --mk_rec_dmn A test_1.nc test_1u.nc ; mv test_1u.nc test_1.nc
ncks --mk_rec_dmn B test_1.nc test_1u.nc ; mv test_1u.nc test_1.nc
ncrcat test_0.nc test_1.nc test_01.nc

还有其他方法可以减少行数吗?

【问题讨论】:

    标签: python nco ncks


    【解决方案1】:

    不幸的--mk_rec_dmn 每次调用只改变一个维度。将多个固定维度更改为记录维度在我们的 TODO 列表中 (#1129)。但是,您可以通过使用 -O 的覆盖功能来消除 mv 语句:

    ncks -O --mk_rec_dmn A test_0.nc test_0.nc
    ncks -O --mk_rec_dmn B test_0.nc test_0.nc
    ncks -O --mk_rec_dmn A test_1.nc test_1.nc
    ncks -O --mk_rec_dmn B test_1.nc test_1.nc
    ncrcat test_0.nc test_1.nc test_01.nc
    

    HTH, cz

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 2015-11-15
      • 2023-03-10
      • 2012-06-05
      • 2020-01-29
      相关资源
      最近更新 更多