- 积分
- 250
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-7-6
- 最后登录
- 1970-1-1
![未绑定新浪微博用户 新浪微博达人勋](source/plugin/sina_login/img/gray.png)
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 lumux 于 2025-2-13 09:34 编辑
求助各位大神,怎么在python中计算PDSI和SCPDSI?之前在climat indices 中计算,一直出错,请问有没有更好的办法?
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from climate_indices import palmer
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
# 数据路径
#data_path0 = r"d:\data\nclimgrid_lowres_tavg.nc"
data_path1 = r"d:\data\nclimgrid_lowres_prcp.nc"
data_path2 = r"d:\data\nclimgrid_lowres_pet.nc"
data_path3 = r"d:\data\nclimgrid_lowres_soil.nc"
#ds = xr.open_dataset(data_path2)
#print(ds.pet)
# 打开数据
prcpd = xr.open_dataset(data_path1).prcp
petd = xr.open_dataset(data_path2).pet
awcd = xr.open_dataset(data_path3).awc
# 转换为NumPy数组
prcpdd = prcpd.to_numpy()
petdd = petd.to_numpy()
awcdd = awcd.to_numpy()
# 计算pdsi
pdsid = palmer.pdsi(prcpdd/25.4,petdd/25.4,awcdd,1895,2000,2010)
print(pdsid)
显示如下错误:
Traceback (most recent call last):
File "C:\Users\sdswh\AppData\Roaming\Python\Python312\site-packages\climate_indices\palmer.py", line 2358, in pdsi
ET, PR, R, RO, PRO, L, PL = _water_balance(awc,
^^^^^^^^^^^^^^^^^^^
File "C:\ProgramData\anaconda3\Lib\site-packages\numba\core\dispatcher.py", line 423, in _compile_for_args
error_rewrite(e, 'typing')
File "C:\ProgramData\anaconda3\Lib\site-packages\numba\core\dispatcher.py", line 364, in error_rewrite
raise e.with_traceback(None)
numba.core.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name '_water_balance_potential_loss': Cannot determine Numba type of <class 'function'>
File "C:\Users\sdswh\AppData\Roaming\Python\Python312\site-packages\climate_indices\palmer.py", line 216:
def _water_balance(awc, pet, precip):
<source elided>
# calculate potential loss values
PL[k], PLs[k], PLu[k] = _water_balance_potential_loss(
^
Traceback (most recent call last):
File C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
exec(code, globals, locals)
File d:\pp\test2-pdsi.py:37
pdsid = palmer.pdsi(prcpdd/25.4,petdd/25.4,awcdd,1895,2000,2010)
File ~\AppData\Roaming\Python\Python312\site-packages\climate_indices\palmer.py:2358 in pdsi
ET, PR, R, RO, PRO, L, PL = _water_balance(awc,
File C:\ProgramData\anaconda3\Lib\site-packages\numba\core\dispatcher.py:423 in _compile_for_args
error_rewrite(e, 'typing')
File C:\ProgramData\anaconda3\Lib\site-packages\numba\core\dispatcher.py:364 in error_rewrite
raise e.with_traceback(None)
TypingError: Cannot determine Numba type of <class 'function'>
|
|