多个站点干旱特征提取以及后处理

在提取干旱特征时往往采用游程理论法,而我没有找到合适的python包,只能用广泛使用的matlab游程理论的方法,参考http://t.csdn.cn/xoDpW博文。

但对于多个站点应该如何提取?修改后的matlab代码如下:

folder = 'G:\Python_\ghtz\data\';
cd(folder)
files = dir('*.csv')
for i = 1:length(files)
    filename = files(i).name
    data = csvread(filename,1.0);
    ds_array = data(:,2:4);
    threshold = -0.5;
    ds_event_properties = DisasterEventExtra(ds_array,threshold); % 调用函数
    disp(ds_event_properties) % 查看灾害事件提取结果    
    disp('Finished')
    writetable(ds_event_properties,filename)
end

data(:,2:4)中2和4指的是第2列和第4列,这里数行列的方式和python不同,python从0开始,matlab从1开始

其中data的格式如下图,处理过程可以参考之前发布的http://t.csdn.cn/ZlH8L

 

 处理后结果如下:

由此得出每个站点的干旱特征(每个csv文件名代表一个站点名),但需要将多个站点汇总进行arcgis画图,还需要以下代码。由于本人对matlab不太精通,所以选择用python处理。


import pandas as pd
import os

# 最大干旱历时
point_df = pd.DataFrame()
file=pd.read_csv("G:/Python_/ghtz/pointlocation.csv")
i=3305
j=0
while i < 13611:
    data_path = "G:/Python_/ghtz/result"
    if os.path.exists(data_path + "/" + str(i) + ".csv"):
        data_1 = pd.read_csv(data_path + "/" + str(i) + ".csv")
        for index, row in file.iterrows():
            point_df.loc[j,'point_name'] = i
            point_df.loc[j, 'duration'] = np.max(data_1['Duration'],axis=0)
            #对于平均干旱历时,只需要把max改为mean即可
    print(str(i) + '成功')
    j += 1
    i += 1

point_df.to_csv("G:/Python_/ghtz/max/duration.csv")

对于干旱频率则需要先筛选index<-0.5的数,然后除以总数,我这里月份总数是266个月,所以除以266

# 干旱频率
point_df = pd.DataFrame()
file=pd.read_csv("G:/Python_/ghtz/pointlocation.csv")
i=3305
j=0
while i < 13611:
    data_path = "G:/Python_/ghtz/data"
    if os.path.exists(data_path + "/" + str(i) + ".csv"):
        data_1 = pd.read_csv(data_path + "/" + str(i) + ".csv")
        data_2 = data_1[data_1["index"] < -0.5]
        fre = len(data_2) / 266
        for index, row in file.iterrows():
            point_df.loc[j,'point_name'] = i
            point_df.loc[j, 'fre'] = fre
    print(str(i) + '成功')
    j += 1
    i += 1

point_df.to_csv("G:/Python_/ghtz/fre/fre.csv")

最后得出的数据如下,就可以导入arcgis进行绘图啦

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值