Python / NetCDF4:如何复制NetCDF文件?

问题描述 投票:3回答:2

我想在之前复制一个NetCDF文件:

a)更新第二个文件中变量的值,和/或

b)向第二个文件添加一个新变量,该变量对应于原始变量的结构。

我已经可以做这种复制但是我的过程很乏味而且感觉很零碎,所以我想知道是否有更优雅,更简单的解决方案。例如,我希望生成的NetCDF文件包含所有全局属性,坐标维度,坐标变量以及可能的数据变量作为原始NetCDF文件。

然后我想在第二个NetCDF中创建另一个变量,其尺寸与原始变量之一相同(这也是可行的,但寻找更好的方法)。可能我正在寻找的是一种在Python脚本中执行nccopy功能的方法。这样的功能似乎没有出现在netcdf4模块中,但也许我可以使用另一个技巧呢?

也许这就像复制原始文件并在适当的地方修改副本一样简单?或者打开原始NetCDF并使用copy模块创建第二个NetCDF?

提前感谢任何建议或见解。

python netcdf
2个回答
4
投票

有了NCO,这就像是

ncap2 -s 'new_var=old_var+20' in.nc out.nc

并且你将使用-v来控制是否只需要new_var和old_var,或者in.nc的所有内容都在out.nc中。


2
投票

我将为您要做的事情提供xarray解决方案。 xarray具有“往返”功能,允许您读取/写入相同的netCDF文件,因此这可能是一个很好的方法。

import xarray as xr

# open your dataset
ds = xr.open_dataset('your_original_file.nc')

# change an existing variable
ds.your_var += 20

# add a new variable
ds['new_var'] = xr.DataArray([1, 2, 3, 4], dims=('new_dim', ))

# write to a new file
ds.to_netcdf('your_new_file.nc')
© www.soinside.com 2019 - 2024. All rights reserved.