如何使用NCO将不同维度大小的netCDF文件合并为单个文件
合并维度大小不一致的netCDF文件解决方案
报错原因
你使用ncecat默认要求所有非拼接维度的大小完全一致,你的文件中vertex index、bond index两个维度在不同文件中大小不同,因此触发报错。
可行方案
方案1:使用NCO命令行工具
添加--allow_mismatch参数允许非拼接维度大小不一致,同时指定输出为支持可变维度的netCDF4格式即可,命令如下:
ncecat -u time --allow_mismatch -7 network????.vm.nc merged.nc
其中-7参数指定输出为netCDF4经典压缩格式,兼顾兼容性和文件体积。
方案2:使用Python xarray库(更灵活可控)
如果NCO命令不符合你的需求,可以用xarray自定义合并逻辑,能直接使用文件中自带的Network::time作为合并维度的取值,避免自动生成的时间序号不符合实际业务逻辑。
- 先安装依赖:
pip install xarray netcdf4
- 运行如下合并脚本:
import xarray as xr import glob # 按文件名排序读取所有待合并文件 file_list = sorted(glob.glob("network????.vm.nc")) ds_list = [] for file_path in file_list: ds = xr.open_dataset(file_path) # 以文件自带的时间值为依据,扩展time维度 ds = ds.expand_dims(time=[ds["Network::time"].item()]) ds_list.append(ds) # 合并时允许维度大小不一致 merged_ds = xr.concat( ds_list, dim="time", compat="override", join="outer" ) # 导出合并后的文件 merged_ds.to_netcdf("merged.nc")
内容的提问来源于stack exchange,提问作者Kartik Chhajed
相关产品推荐
相关产品推荐

