将 70 个 netCDF 文件与 xarray 合并
Posted
技术标签:
【中文标题】将 70 个 netCDF 文件与 xarray 合并【英文标题】:Merge 70 netCDF files with xarray 【发布时间】:2022-01-08 18:52:40 【问题描述】:我想将 70 个 netCDF 文件合并为一个。为此,我使用 xarray 的 .to_netcdf() 函数:
ds = xarray.open_mfdataset('*.nc')
ds.to_netcdf('SST_2021-10_timeseries.nc')
我的问题是我的 jupyter notebook 总是因为文件数太多而挂掉。有没有更有效的方法来合并文件?
【问题讨论】:
不是 netCDF 的答案,但另一种选择是使用 zarr 存储而不是 netCDF(例如ds.to_zarr
),因为 zarr 支持分块和并行写入。
【参考方案1】:
另一种方法是使用 nctoolkit。命令如下:
import nctoolkit as nc
ds = nc.open_data('*.nc')
ds.merge("time")
ds.to_nc('SST_2021-10_timeseries.nc')
或者您可以使用 CDO 在命令行上执行此操作:
cdo -mergetime *.nc SST_2021-10_timeseries.nc
这些选项应该可以解决任何 RAM 问题。
【讨论】:
似乎我无法在这一行中打开所有带有星号的数据集: ds = nc.open_data('*.nc') 然后会得到没有名称为 * 的数据集的消息.nc 你安装了哪个版本的nctoolkit? Conda 有安装旧版本的倾向,因此您拥有的版本可能不接受通配符 nctoolkit-0.3.9,我觉得是最新的吧? 好的。那应该行得通。但是试试:ds = nc.open_data(nc.create_ensemble(".", recursive = False))
。您使用的是什么操作系统?
虽然字符串 "*.nc" 应该被 nctoolkit 替换为 glob.glob("'.nc')
(第 436 行:github.com/pmlmodelling/nctoolkit/blob/master/nctoolkit/api.py)。所以我对发生的事情感到困惑以上是关于将 70 个 netCDF 文件与 xarray 合并的主要内容,如果未能解决你的问题,请参考以下文章