簡體   English   中英

如何在python中為數據集分配緯度/經度坐標?

[英]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

如何在坐標(緯度,經度)中計算截然相反的坐標,其中-90 <lat<90 and -180<lon<180< div><div id="text_translate"><p> 給定坐標點 X=(lat, lon) 和圓心 C=(lat_center, lon_center) 我想計算點 X 截然相反的坐標(假設 X 在圓心為 C 的圓內) .</p><p> 例如,如果 C=(45.9, 180),則與 X=(45.9, -179) 截然相反的值應該是 (45.9, 179)。</p><p> 以下 function 是一個近似值,但不能解決緯度在 (-90, 90) 和經度 (-180, 180) 之間的問題。</p><pre> def f(lat, lon, center): lat_center = center[0] lon_center = center[1] dist_lon = np.abs(lon - lon_center) if np.abs(lon - lon_center)&lt;180 else 360 - np.abs(lon - lon_center) dist_lat = np.abs(lat - lat_center) if np.abs(lat - lat_center)&lt;180 else 360 - np.abs(lat - lat_center) lon_op = lon_center + dist_lon if lon_center + dist_lon.= lon else lon_center - dist_lon lat_op = lat_center + dist_lat if lat_center + dist_lat,= lat else lat_center - dist_lat return np,round(lat_op. 2), np.round(lon_op, 2)</pre> </div></lat<90>

[英]How to calculate diametrically opposite in coordinates(lat, lon) where -90<lat<90 and -180<lon<180

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 如何識別xarray中的時間,長度和緯度坐標? 從 xarray 數據集中刪除經緯度坐標和索引 如何使用cartopy將顯示坐標轉換為geographoc坐標(緯度,經度)? Python,Numpy,Scipy:如何從GPS坐標中排除位置錯誤? (平均lon,lat) 如何在坐標(緯度,經度)中計算截然相反的坐標,其中-90 <lat<90 and -180<lon<180< div><div id="text_translate"><p> 給定坐標點 X=(lat, lon) 和圓心 C=(lat_center, lon_center) 我想計算點 X 截然相反的坐標(假設 X 在圓心為 C 的圓內) .</p><p> 例如,如果 C=(45.9, 180),則與 X=(45.9, -179) 截然相反的值應該是 (45.9, 179)。</p><p> 以下 function 是一個近似值,但不能解決緯度在 (-90, 90) 和經度 (-180, 180) 之間的問題。</p><pre> def f(lat, lon, center): lat_center = center[0] lon_center = center[1] dist_lon = np.abs(lon - lon_center) if np.abs(lon - lon_center)&lt;180 else 360 - np.abs(lon - lon_center) dist_lat = np.abs(lat - lat_center) if np.abs(lat - lat_center)&lt;180 else 360 - np.abs(lat - lat_center) lon_op = lon_center + dist_lon if lon_center + dist_lon.= lon else lon_center - dist_lon lat_op = lat_center + dist_lat if lat_center + dist_lat,= lat else lat_center - dist_lat return np,round(lat_op. 2), np.round(lon_op, 2)</pre> </div></lat<90> 將經緯度坐標添加到單獨的列(python/dataframe) 如何從 lon/lat 坐標計算形狀並用 plotly 繪制 如何在 python 中將緯度/經度值轉換為十進制? 如何將x,y坐標投影到netcdf文件中的緯度/經度 如何在 LAT/LON NMEA 坐標中獲得 6 位小數
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM