所以我想合并 2 個資料集,1 個是來自 rioxarray.open_rasterio() 的單波段柵格資料集,另一個是查找表,索引為“mukey”。'mukey' 上的坐標對應于查找表中的 'mukey' 索引值。所需的結果是一個與 Raster 資料集具有相同 x 和 y 坐標的資料集,具有變數“n”和“K”,其值通過在“mukey”上合并來填充。如果您熟悉 ArcGIS,這是類似的操作。
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

uj5u.com熱心網友回復:
您正在尋找具有xarray 的DataArrays功能的高級索引。
您可以將 aDataArray作為關鍵字引數提供給DataArray.selor Dataset.sel- 這將根據索引陣列的值沿索引陣列的維度重塑索引陣列。我認為這正是您在“查找表”中尋找的內容。
在你的情況下:
lookup.sel(mukey=raster.mukey)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382365.html
上一篇:如何加入度量資料和發布資訊?
下一篇:MySQL子字串自連接
