gpt4 book ai didi

python - Xarray combine_by_coords 返回单调全局索引错误

转载 作者:行者123 更新时间:2023-12-04 11:23:42 25 4
gpt4 key购买 nike

我正在尝试使用 combine_by_coords 组合两个空间 xarray 数据集。这两个数据集是彼此相邻的两个图块。所以有重叠的坐标。在重叠区域中,其中一个数据集的变量值为 nan。
我使用了带有 compat='no_conflicts' 选项的“combine_by_coords”。但是,它返回沿维度 y 错误的单调全局索引。看起来以前是一个问题,但已修复( here )。所以我真的不知道为什么我会收到这个错误。这是一个示例(netcdf 磁贴是 here ):

import xarray as xr

print(xr.__version__)
>>>0.15.1

ds1=xr.open_dataset('Tile1.nc')
ds2=xr.open_dataset('Tile2.nc')
ds = xr.combine_by_coords([ds1,ds2], compat='no_conflicts')
>>>...
ValueError: Resulting object does not have monotonic global indexes along dimension y
谢谢

最佳答案

这不是错误,它抛出了根据您的输入应该抛出的错误。但是我可以看到文档并没有很清楚为什么会发生这种情况!combine_by_coordscombine_nested做两件事:它们连接(使用 xr.concat ),它们合并(使用 xr.merge )。 merge将相同大小的变量分组,concat将不同大小的变量连接到彼此的末端。连接步骤永远不应该处理部分重叠的坐标,而 combine因此,函数具有相同的限制。
这个错误是明确拒绝你给它的输入:“你给了我重叠的坐标,我不知道如何连接这些,所以我会拒绝它们。”通常这是有道理的 - 当重叠坐标不是 NaN 时,选择哪个值是不明确的。
在您的情况下,您要求它执行明确定义的操作,以及文档中关于合并重叠坐标的讨论 here意味着 compat='no_conflicts'会处理这种情况。不幸的是,这仅适用于 xr.merge ,不是 xr.concat ,因此它不适用于 combine_by_coords任何一个。这绝对是令人困惑的。
或许可以概括 combine函数来处理您所描述的场景(坐标的重叠部分完全由非 NaN 值指定)。如果您想看到它,请打开一个建议此功能的问题。
(问题 #3150 是关于其他问题的,这是处理“在每个数据集之间没有变化的坐标维度”的实际错误。)
相反,您需要先剪掉重叠部分。这应该不难 - 大概您知道(或可以确定)您的重叠有多大,并且您的所有 NaN 都在一个数据集上。您只需要使用 .isel()切片的方法。一旦你摆脱了重叠的 NaN,那么你应该能够很好地组合它(你也不应该指定 compat)。如果您使用的是 combine_by_coords作为使用 open_mfdataset 打开许多文件的一部分那么使用 preprocess 编写首先应用的修剪函数可能会更容易。论据 open_mfdataset .

关于python - Xarray combine_by_coords 返回单调全局索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62806175/

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