我想在之前复制一个NetCDF文件:
a)更新第二个文件中变量的值,和/或
b)向第二个文件添加一个新变量,该变量对应于原始变量的结构。
我已经可以做这种复制但是我的过程很乏味而且感觉很零碎,所以我想知道是否有更优雅,更简单的解决方案。例如,我希望生成的NetCDF文件包含所有全局属性,坐标维度,坐标变量以及可能的数据变量作为原始NetCDF文件。
然后我想在第二个NetCDF中创建另一个变量,其尺寸与原始变量之一相同(这也是可行的,但寻找更好的方法)。可能我正在寻找的是一种在Python脚本中执行nccopy
功能的方法。这样的功能似乎没有出现在netcdf4
模块中,但也许我可以使用另一个技巧呢?
也许这就像复制原始文件并在适当的地方修改副本一样简单?或者打开原始NetCDF并使用copy模块创建第二个NetCDF?
提前感谢任何建议或见解。
有了NCO,这就像是
ncap2 -s 'new_var=old_var+20' in.nc out.nc
并且你将使用-v来控制是否只需要new_var和old_var,或者in.nc的所有内容都在out.nc中。
我将为您要做的事情提供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')