xarray中的查找表?
Posted
技术标签:
【中文标题】xarray中的查找表?【英文标题】:Lookup table in xarray? 【发布时间】:2022-01-17 09:30:31 【问题描述】:所以我想合并 2 个数据集,1 是来自 rioxarray.open_rasterio() 的单波段栅格数据集,另一个是查找表,索引暗淡为“mukey”。沿着“mukey”的坐标对应于查找表中的“mukey”索引值。所需的结果是具有与栅格数据集相同的 x 和 y 坐标的数据集,其中变量“n”和“K”的值通过合并“mukey”来填充。如果您熟悉 ArcGIS,this is the analogous operation.
xr.merge() 和 assign() 似乎并没有执行此操作,并且通过转换为 pandas 或 numpy 来作弊会在我的 32GB 机器上遇到内存问题。 xarray 是否为这个简单的用例提供任何支持?谢谢,
data = (np.abs(np.random.randn(12000000))).astype(np.int32).reshape(1,4000,3000)
raster = xr.DataArray(data,dims=['band','y','x'],coords=[[1],np.arange(4000),np.arange(3000)])
raster = raster.to_dataset(name='mukey')
raster
lookup = pd.DataFrame('mukey':list(range(10)),'n':np.random.randn(10),'K':np.random.randn(10)*2).set_index('mukey').to_xarray()
lookup
【问题讨论】:
【参考方案1】:您正在寻找 xarray 的 advanced indexing with DataArrays 功能。
您可以将DataArray
作为关键字参数提供给DataArray.sel
或Dataset.sel
- 这将根据索引数组的值沿索引数组的维度重塑索引数组。我认为这正是您在“查找表”中寻找的内容。
在你的情况下:
lookup.sel(mukey=raster.mukey)
【讨论】:
太棒了,谢谢!经验法则答案总是在 xarray 中索引以上是关于xarray中的查找表?的主要内容,如果未能解决你的问题,请参考以下文章