0

我将 3D xarray DataArray转换为IRIS cube,添加坐标和属性并保存到 NetCDF 文件。我保存的数据是海洋的 3 维(时间、纬度、经度)温度或盐度。我想将面罩和水深的 2D(纬度、经度)数组添加到同一个 NetCDF 文件中,但我不确定如何执行此操作。我执行以下操作以转换为立方体并保存:

ds_cube = data_array.to_iris()
lat.standard_name = "latitude"
lon.standard_name = "longitude"
lat.units = "degrees"
lon.units = "degrees"

cube.add_dim_coord(lat, 1)
cube.add_dim_coord(lon, 2)
cube.units = units

a = cube.attributes
a[version'] = 'version tag'

with warnings.catch_warnings():
   iris.save(cube, name,
          saver=iris.fileformats.netcdf.save,
          unlimited_dimensions=['time'],
          fill_value=1.e20, zlib=True,
          complevel=1, chunksizes=chunksizes)

这很好用,但我还想将两个二维数组添加到同一个 NetCDF 文件中,该文件包含每个网格点的掩码和底部深度。我尝试在保存之前将其他多维数据集添加到列表中,但我猜这会由于 3D 和 2D 字段之间的尺寸差异而失败:

mask_cube = mask_2darray.to_iris()
cubes=[cube, mask_cube]
with warnings.catch_warnings():
   iris.save(cubes, name,
          saver=iris.fileformats.netcdf.save,
          unlimited_dimensions=['time'],
          fill_value=1.e20, zlib=True,
          complevel=1, chunksizes=chunksizes)

如果我可以将 xarray 数据集转换为 IRIS 多维数据集,这将很简单,但我相信如果有人能指出我正确的方向,也有一种方法可以使用 xarray DataArrays 来做到这一点。

4

0 回答 0