gpt4 book ai didi

python - xarray - 无法序列化坐标

转载 作者:行者123 更新时间:2023-11-30 22:14:33 25 4
gpt4 key购买 nike

我正在尝试使用 xarray 附加和写入 netCDF 文件。有关原始文件的一些信息如下。

Dimensions:    (Time: 744, south_north: 289, west_east: 339)
Coordinates:
XLAT (Time, south_north, west_east) float32 ...
XLONG (Time, south_north, west_east) float32 ...
Dimensions without coordinates: Time, south_north, west_east
Data variables:
Times (Time) |S19 ...
RAINNC (Time, south_north, west_east) float32 ...
I_RAINNC (Time, south_north, west_east) int32 ...
SNOWNC (Time, south_north, west_east) float32 ...
GRAUPELNC (Time, south_north, west_east) float32 ...
HAILNC (Time, south_north, west_east) float32 ...

这是有关附加文件的一些信息(添加了两个变量)。

Dimensions:    (Time: 744, south_north: 289, west_east: 339)
Coordinates:
XLAT (Time, south_north, west_east) float32 ...
XLONG (Time, south_north, west_east) float32 ...
Dimensions without coordinates: Time, south_north, west_east
Data variables:
Times (Time) |S19 ...
RAINNC (Time, south_north, west_east) float32 0.0 0.0 0.0 0.0 0.0
I_RAINNC (Time, south_north, west_east) int32 0 0 0 0 0 0 0 0 0 0 0 0
SNOWNC (Time, south_north, west_east) float32 ...
GRAUPELNC (Time, south_north, west_east) float32 ...
HAILNC (Time, south_north, west_east) float32 ...
PRCP (Time, south_north, west_east) float32 0.0 0.0 0.0 0.0 0.0
CUMPRCP (Time, south_north, west_east) float32 0.0 0.0 0.0 0.0 0.0

我正在尝试使用 xarray.to_netcdf() 写入新文件,但收到此错误:

ValueError: cannot serialize coordinates because variable RAINNC 
already has an attribute 'coordinates'

关于如何解决此错误有什么想法吗?

编辑:

数据是通过天气和研究预测模型 (WRF) 生成的。数据通过 open_dataset() 加载,默认使用decode_cf。这两个文件的 RAINNC 属性相同,如下所示。

OrderedDict([('FieldType', 104),
('MemoryOrder', 'XY '),
('description', 'ACCUMULATED TOTAL GRID SCALE PRECIPITATION'),
('units', 'mm'),
('stagger', ''),
('coordinates', 'XLONG XLAT XTIME')])

最佳答案

您是如何加载第一个xarray.Dataset的? RAINNC 变量有哪些属性:(1) netCDF 文件中、(2) 使用 xarray 加载的原始数据集中以及 (3) 组合数据集中?

此错误消息告诉您,RAINNC 在您的组合数据集中有一个 “坐标” 属性。 Xarray 引发错误,因为它使用 'coordinates' 属性(根据 CF 约定)来保存坐标(在您的情况下,XLATXLONG) 到 netCDF 文件。但是,如果存在预先存在的 'coordinates' 属性,则不会执行此操作,以避免覆盖现有数据。

通常不会出现这种情况,因为当将变量添加到 xarray 数据模型中的 coords 时,磁盘上 netCDF 文件中预先存在的 'coords' 属性会被删除。但是,如果您将 xarray.open_dataset()decode_cf=False 一起使用,或者使用某种手动逻辑来创建数据集,则可能会出现这种情况。

一个简单的解决方法是从组合数据集中的数据变量中删除任何 'coordinates' 属性(例如,del ds['RAINNC'].attrs['coordinates ']),但您绝对应该首先查看这些值,以确保您没有删除重要的元数据。

关于python - xarray - 无法序列化坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50475453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com