1

我试图计算具有特定经度/纬度的选定区域的平均 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

含义(系统找不到给定的文件)

4

2 回答 2

2

我对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

这与气候变化有关吗?那太酷了!

于 2018-08-29T20:30:01.230 回答
1

我最后没有使用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()
于 2018-09-14T09:49:13.157 回答