簡體   English   中英

使用 cdo 計算選定區域 lon lat 的平均值

[英]Calculate mean over an selected area lon lat with cdo

我試圖計算具有特定 lon/lat 的選定區域的平均 SPI 值。 我做了以下區域,我想在這里計算平均值。

ds_mlw1 = ds.sel(lat=slice(-16.74833, -16.75613), lon=slice(35.27023, 35.27915))

我看到最好使用 cdo 包。 我收到一個錯誤,提示我的 cdo 無法識別。 有人知道如何解決這個問題。

這是我的腳本

from cdo import *
import matplotlib.pyplot as plt
file = 'spi3_6_12_1deg_cru_ts_3_21_1949_2012.nc'
cdo = Cdo()
cdo.debug=True


meanspi  = cdo.fldmean(input=file,returnCdf=True).variables['spi3'][:] 

我收到以下錯誤

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-77-7eeb6d09369c> in <module>()
      9 import matplotlib.pyplot as plt
      10 file = 'spi3_6_12_1deg_cru_ts_3_21_1949_2012.nc'
  ---> 11 cdo = Cdo()
     12 cdo.debug=True
     13 

FileNotFoundError: [WinError 2] Het 系統 kan het opgegeven bestand niet vinden

意思(系統找不到給定的文件)

我對cdo不熟悉,但是使用ipython(交互式python)調試了這部分代碼:

from cdo import *
cdo=Cdo() 

並且能夠得到你的錯誤:

FileNotFoundError: [Errno 2] No such file or directory: 'cdo': 'cdo'

我還可以在異常跟蹤中看到它正在尋找可執行文件“cdo”。 看起來 python 模塊cdo是程序二進制cdo的包裝器。

如果您安裝程序cdo它可能會解決您的問題。 信息出現在這里? : https://code.mpimet.mpg.de/projects/cdo/wiki/Cdo#Documentation

這與氣候變化有關嗎? 這很酷!

最后我沒有使用cdo包,而是使用了xarray中的slice函數。

ds_mlw = ds.sel(lon=slice(33,37), lat=slice(-18,-13), time=slice("2002-01-01", "2017- 
11-01"))
spi_avg = ds_mlw.mean(dim=('lon', 'lat'))
plt.figure(figsize=(10,5))
spi_avg['spi3'].plot()

如何在坐標(緯度,經度)中計算截然相反的坐標,其中-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.

相關問題 Python 計算以緯線 lat1 和 lat2 以及經線 lon1 和 lon2 為界的表面積 根據緯度/經度計算密度 在Python中計算lat / lon多邊形的面積 使用 Python 計算矩形的 4 個角的緯度/經度 檢查緯度/經度是否在陸地或海洋上 使用 CDO 或 NCO 組合浮標站數據集 (NetCDF),經緯度被丟棄 給定特定的緯度/經度,從緯度/經度的 csv 列表中計算最近點 如何在坐標(緯度,經度)中計算截然相反的坐標,其中-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在特定區域(緯度/經度)中繪制geotiff數據
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM