基于python和免费软件的干旱指数计算
1.懒人办法,直接用免费现成软件DrinC
优点:官网直接下载安装方便省事,结果可靠(验证过),官网还有很多说明文件和文献;
缺点:目前可计算的指数有限;
2.用python算
优点:很多很多…
缺点(可忽略):需要安装几个不太好装的库,我是用climate_indices算的(注意对python版本有要求)
上代码
# 相关包的导入
import numpy as np
import pandas as pd
from climate_indices import indices
from climate_indices import compute # 计算SPEI的包
# 路径处理和基本变量定义
rootdir = r'D:\自己的文件夹哈\SPEI\\';
tampa_file = rootdir + 'pre_.csv'
outpath = rootdir + 'Result1001\\'
lat = 纬度
styr = 开始年
edyr = 结束年
# 气象数据读取
tampa_data = pd.read_csv(tampa_file)
pre_data = np.asarray(tampa_data['Pre']) # 降水数据转换为np.array
tas_data = np.asarray(tampa_data['Tas']) # 温度数据转换为np.array
# 潜在蒸散发计算-桑斯维特方法
pet_data = indices.pet(temperature_celsius=tas_data,
latitude_degrees=lat,
data_start_year=styr)
# 计算SPEI
spei = indices.spei(precips_mm=pre_data,
pet_mm=pet_data,
scale=9, # 3个月尺度
distribution=indices.Distribution.gamma,
periodicity=compute.Periodicity.monthly,
data_start_year=styr,
calibration_year_initial=styr,
calibration_year_final=edyr,
)
spei[np.isnan(spei)] = -99 # nan转换为-99
spei_df = pd.DataFrame(data=spei, columns=['SPEI_9']) # 计算结果转换为DataFrame
# 计算结果写出
spei_df.to_csv(outpath + 'SPEI9.csv', index=False)
print('Finished.')
可以根据自己需求改指数和时间尺度