[英]How to assign lat/lon coordinates to a dataset in python?
我有三個xarray數據集,緯度,經度,風速都具有相同的X,Y尺寸。 我想將 LATITUDE 和 LONGITUDE 數據集指定為 x,y 框架中每個點的 WIND SPEED 坐標,以便變量 WIND SPEED 具有如下尺寸:WIND SPEED(LATITUDE, LONGITUDE)。
我應該如何進行? 輸入數據是 Netcdf 格式的網格天氣模型的輸出。 我已經從輸入做了一些計算,我想將坐標分配給計算的輸出(風速)。 后來我想用最近鄰法進行空間插值,這樣我就可以在數據集中的任何緯度、經度處獲得一個值。 導入后的緯度 XArray 示例:
array([[21.821693, 21.821693, 21.821693, ..., 21.821693, 21.821693,
21.821693],
......................................................
[30.20221 , 30.20221 , 30.20221 , ..., 30.20221 , 30.20221 ,
30.20221 ]], dtype=float32)
風速陣列:
array([[8.725852, 8.758366, 8.728758, ..., nan, nan, nan],
[8.502903, 8.563703, 8.574378, ..., nan, nan, nan],
........]] dtype=float32)
一種解決方案是構建一個字典列表:
speed_lat_long_list_dict =
[ {id:1, speed:'1', lat:'20.8', long: '-18.5},
{id:2, speed:'3', lat:'24.8', long: '-14.5},
....
{id:n, speed:'n', lat:'n', long: 'n} ]
這將避免將坐標設置為重復的速度值的混淆。 例如,如果我們對相同的速度測量有不同的坐標,我們該怎么辦。
如果您願意,可以將其傳遞給 DataFrame,或者您可以使用 for 循環或列表推導來處理它
您可以合並數據集,然后將所需變量分配為坐標:
data = np.random.rand(50,50)
windspeed = xr.Dataset({'windspeed':(['x','y'], data)})
lattitude = xr.Dataset({'lattitude':(['x','y'], np.cos(data))})
longitude = xr.Dataset({'longitude':(['x','y'], np.sin(data))})
ds = xr.merge([windspeed, lattitude, longitude])
ds.set_coords(['lattitude','longitude'])
<xarray.Dataset> Dimensions: (x: 50, y: 50) Coordinates: lattitude (x, y) float64 0.7035 0.9987 0.917 0.9958 ... 0.593 0.93 0.7624 longitude (x, y) float64 0.7107 0.05069 0.3988 ... 0.8052 0.3675 0.6471 Dimensions without coordinates: x, y Data variables: windspeed (x, y) float64 0.7905 0.05071 0.4102 ... 0.936 0.3763 0.7037
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.