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.selDataset.sel - 这将根据索引数组的值沿索引数组的维度重塑索引数组。我认为这正是您在“查找表”中寻找的内容。

在你的情况下:

lookup.sel(mukey=raster.mukey)

【讨论】:

太棒了,谢谢!经验法则答案总是在 xarray 中索引

以上是关于xarray中的查找表?的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL函数如何查找数值在工作表中的位置?

Spark 中的查找表

替换查找表值中的列

c中的查找表

强制查询为查找表中的每个值生成记录

访问 2007 引用完整性而不使用表中的查找