Xarray 错误的地图位置

Xarray wrong map position

我尝试绘制 xarray DataArray,但图像的位置不正常。我试图对坐标进行排序,但仍然不起作用。下面是试用版。

# Here is sample dataset https://github.com/tuyenhavan/Course_Data/blob/main/MainlandSEA_sand.tif
import rioxarray 
import xarray as xr
# Read dataset
ds=rioxarray.open_rasterio(r"C:\Users\hava_tu\Downloads\MainlandSEA_sand.tif")
# Plot the first band
# ds[0].plot() # Throw errors indicating AttributeError: 'tuple' object has no attribute 'startswith'
# Test with sort y and x values 
ds["x"]=sorted(ds.x)
ds["y"]=sorted(ds.y)
# Plot it again
ds[0].plot()  # Throw errors again AttributeError: 'tuple' object has no attribute 'startswith'

许多地理空间数据集的纬度坐标按降序排列。这是故意的,xarray 可以处理这种格式的数据 - 绘制变量应该不是问题。

内置的python方法sorted总是returns一个列表,当你像这样用列表或无标签数组分配坐标值时,这些值将被覆盖,但它不会更改由它们索引的数组的顺序,因此这很可能是您的数组和暗淡顺序变为 mid-aligned:

的地方
# this results in invalid data - don’t do this
ds["x"]=sorted(ds.x)
ds["y"]=sorted(ds.y)

相反,要么不要担心这一点,只需按纬度降序处理数据,要么使用 xarray 的 sortby 对数组和坐标进行排序:

ds = ds.sortby("x").sortby("y")