Res*_*ess 5 python gis netcdf python-xarray
我正在尝试使用 combine_by_coords 组合两个空间 xarray 数据集。这两个数据集是彼此相邻的两个图块。所以有重叠的坐标。在重叠区域中,其中一个数据集的变量值为 nan。
我使用了带有 compat='no_conflicts' 选项的“combine_by_coords”。但是,它返回沿维度 y错误的单调全局索引。看起来它以前是一个问题,但已修复(此处)。所以我真的不知道为什么我会收到这个错误。这是一个示例(netcdf 磁贴在这里):
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
Run Code Online (Sandbox Code Playgroud)
谢谢
这不是错误,它抛出了根据您的输入应该抛出的错误。但是我可以看到文档并没有很清楚为什么会发生这种情况!
combine_by_coords并combine_nested做两件事:它们连接(使用xr.concat),它们合并(使用xr.merge)。merge将相同大小的变量分组,concat将不同大小的变量连接到彼此的末端。连接步骤永远不应该处理部分重叠的坐标,combine因此函数具有相同的限制。
这个错误是明确拒绝你给它的输入:“你给了我重叠的坐标,我不知道如何连接这些,所以我会拒绝它们。” 通常这是有道理的 - 当重叠坐标不是 NaN 时,选择哪个值是不明确的。
在你的情况,然后你问它在文档中有关合并重叠的坐标进行定义良好的操作,并且讨论在这里意味着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。
| 归档时间: |
|
| 查看次数: |
1065 次 |
| 最近记录: |