国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Python的大區(qū)域SPI標(biāo)準(zhǔn)降水指數(shù)自動批量化處理

這篇具有很好參考價值的文章主要介紹了基于Python的大區(qū)域SPI標(biāo)準(zhǔn)降水指數(shù)自動批量化處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1.引言

?????????標(biāo)準(zhǔn)化降水指數(shù)(SPI)是一個廣泛使用的指數(shù),用于描述一系列時間尺度上的氣象干旱的特征。但是經(jīng)過研究發(fā)現(xiàn),目前的處理方法基本都是單點(diǎn)進(jìn)行計(jì)算,缺少多點(diǎn)(大區(qū)域)的批量計(jì)算過程。因此本博客從氣象數(shù)據(jù)下載,處理成NC格式文件以及依靠climate indices庫完成多點(diǎn)的SPI指數(shù)計(jì)算,并可以在ARCGIS中利用反距離權(quán)重生成指數(shù)SPI柵格數(shù)據(jù)。本文有博主整理的完成Python代碼資源以及樣例數(shù)據(jù)。

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

2.SPI原理概述

????????SPI計(jì)算原理是將某時間尺度(如1、3、6、12個月等)降水量的連續(xù)時間序列(最好是長期記錄,一般最少30年)看作服從某種概率密度函數(shù)分布(如gamma分布),然后推導(dǎo)出相應(yīng)的累積概率函數(shù),再通過累積概率函數(shù)轉(zhuǎn)換為標(biāo)準(zhǔn)正態(tài)分布。轉(zhuǎn)換之后,某時間尺度樣本的SPI為:該樣本降水量的累積概率所對應(yīng)的標(biāo)準(zhǔn)正態(tài)分布的x軸的值。

????????例如:以3個月為時間尺度,使用1981-2010年30年的降水?dāng)?shù)據(jù)。計(jì)算2010年1月的SPI值。因?yàn)闀r間尺度是3個月,所以2010年1月的累積降水量被定義為2009年11月-2010年1月期間的總降水量,記作P;使用的時間序列為往年同期的降水量數(shù)據(jù),即各年11月-1月的降水。首先按照原理,將時間序列數(shù)據(jù)假設(shè)為滿足gamma分布g(x),然后推導(dǎo)其累積概率函數(shù)H(x),再轉(zhuǎn)換為標(biāo)準(zhǔn)正態(tài)分布。然后,查找P對應(yīng)的累積概率H(P),然后查找與H(P)相同累積概率的標(biāo)準(zhǔn)正態(tài)分布所對應(yīng)的x軸的值,即為SPI。示意圖如下,左圖為累積概率H(x),右圖為轉(zhuǎn)換之后的標(biāo)準(zhǔn)正態(tài)分布。

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

圖1?從虛線伽馬分布到標(biāo)準(zhǔn)正態(tài)分布的等概率變換的例子

詳細(xì)的數(shù)學(xué)原理請參考博客

3.技術(shù)方法

3.1 氣象數(shù)據(jù)下載

????????首先,我們需要下載30年某一區(qū)域的降水?dāng)?shù)據(jù)。因?yàn)殚L時間序列數(shù)據(jù)一般來說不太好獲取,博主使用的是NASA POWER提供的氣象數(shù)據(jù),是免費(fèi)的。

網(wǎng)站:NASA POWER | Data Access Viewer

  • 入下圖所示,我們選擇東北的區(qū)域的數(shù)據(jù),時間范圍為:1992-2022。因?yàn)檫x擇的是月度數(shù)據(jù),網(wǎng)站只更新到1992-2020,后面2021與2022只能下載日度的數(shù)據(jù)進(jìn)行累積后處理。(文尾提供Python代碼與樣例氣象數(shù)據(jù),1_merge_daily_precipitation.py)

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

圖2 NASA POWER VIEWER 網(wǎng)站頁面

  • 下圖為博主下載的區(qū)域氣象數(shù)據(jù),格式為csv,打開可以看到。數(shù)據(jù)其實(shí)是按照經(jīng)度緯度各網(wǎng)點(diǎn)排列的,因?yàn)镹ASA提供的是0.5°×0.5°的分辨率數(shù)據(jù),所以整個吉林省為20×12個點(diǎn)。列JAN-DEC為每個月的降水?dāng)?shù)據(jù)。

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

  • 需要注意的是,因?yàn)?021與2022為日度數(shù)據(jù)所以需要進(jìn)行自己累積計(jì)算,算完后合并到1992-2020中即可。
j2022=r"raw_data\jilinday2022.csv"
    weather_table = pd.read_csv(j2022)
    IS_ALL_Month=False
    if IS_ALL_Month:
        out_dic={"PARAMETER":[],"YEAR":[],"LAT":[],"LON":[],"1":[],"2":[],"3":[],"4":[],"5":[],"6":[],"7":[],
            "8":[],"9":[],"10":[],"11":[],"12":[]}
    else:
        out_dic={"PARAMETER":[],"YEAR":[],"LAT":[],"LON":[],"1":[],"2":[],"3":[],"4":[],"5":[],"6":[],"7":[],
            "8":[]}
    
    weather_table=weather_table.set_index(['LAT', 'LON','MO'])    
    for y in (weather_table.index.get_level_values(0).unique()):#緯度方向
        data_y=weather_table[(weather_table.index.get_level_values(0) == y)]
        for x in (data_y.index.get_level_values(1).unique()):#經(jīng)度方向
            data_yx=data_y[(data_y.index.get_level_values(1) == x)]
            for month in (data_yx.index.get_level_values(2).unique()):
                data_month = data_yx[(data_yx.index.get_level_values(2) == month)]
                out_dic[str(month)]=out_dic[str(month)]+[np.sum(data_month["PRECTOTCORR"].values)]
            #循環(huán)日累加
            out_dic["PARAMETER"]=out_dic["PARAMETER"]+["PRECTOTCORR_SUM"]
            out_dic["YEAR"]=out_dic["YEAR"]+[2022]
            out_dic["LAT"]=out_dic["LAT"]+[y]
            out_dic["LON"]=out_dic["LON"]+[x]
    df_out=pd.DataFrame(out_dic)
    df_out.to_csv(r"process_data\jilin2022.csv",index=False)

3.2 安裝 climate indices庫

? ? ? ?本博客在計(jì)算SPI指數(shù)時候需要安裝climate indices庫。

????????climate indices?是由James Adams利用Python開發(fā)的一個計(jì)算各種氣象指數(shù),包括SPEI, SPI, PET, PDSI, scPDSI的庫,可以使用pip install 來安裝該庫。

????????在cmd 中啟動python,導(dǎo)入climate_indices庫,如果沒提示錯誤,則表示安裝成功。

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

????????同時,在python\Scripts 文件夾中會生成這個process_climate_indices.exe,后面批處理主要依靠這個exe。

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

注意:如果按照報錯,可以使用文尾資源中的lib\climate_indices-py3.8.whl文件按照,這個已經(jīng)讓地理所老師重新編譯,適用于window10-11,python3.8環(huán)境。?

3.3 轉(zhuǎn)換NC氣象格式數(shù)據(jù)

? ? ? ? 因?yàn)橄胍褂胏limate indices,輸入數(shù)據(jù)必須為nc格式的數(shù)據(jù),因此我們必須要將處理得到的xlsx降水?dāng)?shù)據(jù)生成nc文件(2_write_ncfile.py)。

#---netcdf foramt---#
    f_w = nc.Dataset(outpath,'w',format = 'NETCDF4')
    f_w.createDimension('time',times)   
    f_w.createDimension('lat',y_size)   
    f_w.createDimension('lon',x_size)
    ##創(chuàng)建變量。參數(shù)依次為:‘變量名稱’,‘?dāng)?shù)據(jù)類型’,‘基礎(chǔ)維度信息’
    time=f_w.createVariable('time',"S19",('time')) 
    for i in range(times):
        #time[i] = data_serise[i].strftime('%Y-%m-%d')
        time[i] = data_serise[i].strftime('%Y-%m-%d %H:%M:%S')
    time.units = 'times since {0:s}'.format(time[0])
    time.standard_name = 'Time'
    time.axis = 'T' 
    f_w.createVariable('lat',np.float32,('lat'))  
    f_w.createVariable('lon',np.float32,('lon'))
    #t=np.linspace(0,times-1,times,dtype=int)
    lon=np.linspace(min_x,max_x,x_size,dtype=float)
    lat=np.linspace(min_y,max_y,y_size,dtype=float)
    #寫入變量time的數(shù)據(jù)。維度必須與定義的一致。
    #f_w.variables['time'][:]=data_serise#np.array(list_data)#data_serise
    f_w.variables['lon'][:]=lon
    f_w.variables['lat'][:]=lat
    #xarray_data_r=np.transpose(xarray_data,(3,2,0,1))
    #f_w.createVariable( "prcp", np.float32, ('time','lat','lon'),fill_value=fill_value)
    f_w.createVariable( "prcp", np.float32, ('lat','lon',"time"),fill_value=fill_value)
    #f_w.variables["prcp"][:]=xarray_data_r[0]
    f_w.variables["prcp"][:]=xarray_data[:,:,:,0]
    f_w.variables["prcp"].units="millimeter"
    f_w.close

?3.4 運(yùn)行批處理文件

? ? ? ? 看到這一步,我先恭喜大家,數(shù)據(jù)獲取與處理確實(shí)不易。下一步就可以運(yùn)行我們的批處理文件了(3_cal_SPIindex.py)。下面對其中的一些參數(shù)進(jìn)行解釋:

變量名稱 含義

index

想要運(yùn)行的指數(shù)名稱,選擇“spi”

periodicity

周期,選擇月度“monthly“

netcdf_precip

輸入氣象數(shù)據(jù),nc格式

var_name_precip

字段名稱,選擇”prcp“

output_file_base

輸出的spi的nc結(jié)果數(shù)據(jù)名稱

scales

尺度,應(yīng)該是跟gamma函數(shù)有關(guān),選擇3

calibration_start_year

開始年份

calibration_end_year

結(jié)束年份

multiprocessing

多進(jìn)程處理,選擇all

3.5 轉(zhuǎn)成ArcGIS可以導(dǎo)入的格式

????????運(yùn)行完3.4后,可以生成后綴為nc_spi_gamma_03.nc與nc_spi_pearson_03.nc格式的結(jié)果文件,運(yùn)行4_SPI2xlsx.py文件,可以轉(zhuǎn)成excel文件,導(dǎo)入arcgis結(jié)果如下:

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

4.結(jié)果展示

4.1 SPI 點(diǎn)位結(jié)果展示

? ? ? ? 如下圖所示,這是通過我們批處理計(jì)算得到的吉林省多點(diǎn)的SPI點(diǎn)狀數(shù)據(jù):

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

4.2 生成整個區(qū)域面狀結(jié)果

? ? ? ? 這里我們需要在4.1的基礎(chǔ)上,結(jié)合ArcGIS工具中的Spatial?Analyst tools /Interpolation/IDW插值得到插值柵格影像。

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

????????其中分辨率那一欄,可以根據(jù)需求自己設(shè)置,需要注意的是這里的分辨率單位是°,不是米。插值結(jié)果如下:

python spi函數(shù),氣象數(shù)據(jù)分析,Python,python,開發(fā)語言

4.3 寫在最后

? ? ? ? 完整資源和樣例數(shù)據(jù)地址如下https://download.csdn.net/download/u010329292/88291585:需要的小伙伴可以供下載學(xué)習(xí):)文章來源地址http://www.zghlxwxcb.cn/news/detail-821797.html

到了這里,關(guān)于基于Python的大區(qū)域SPI標(biāo)準(zhǔn)降水指數(shù)自動批量化處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Python的大數(shù)據(jù)零售超市數(shù)據(jù)可視化平臺-爬蟲

    基于Python的大數(shù)據(jù)零售超市數(shù)據(jù)可視化平臺-爬蟲

    該項(xiàng)目含有源碼、文檔、PPT、配套開發(fā)軟件、軟件安裝教程、項(xiàng)目發(fā)布教程、包運(yùn)行成功以及課程答疑與微信售后交流群、送查重系統(tǒng)不限次數(shù)免費(fèi)查重等福利! 軟件開發(fā)環(huán)境及開發(fā)工具: 開發(fā)語言:python 使用框架:Django 前端技術(shù):JavaScript、VUE.js(2.X)、css3 開發(fā)工具:

    2024年02月03日
    瀏覽(27)
  • 通過Python計(jì)算有效降水量

    有效降水量是指能夠提供給作物蒸發(fā)蒸騰,從而減少作物對灌溉水需求的雨量,可根據(jù)美國農(nóng)業(yè)部推薦的方法進(jìn)行逐月計(jì)算,本文將介紹其在Python環(huán)境中的實(shí)現(xiàn)方式。其公式如下: [P_{eff}=begin{cases}P_{month}timesleft(125-0.2times P_{month}right)/125,P_{month}leqslant250mathrm{~mm}\\\\125+0.1

    2024年01月23日
    瀏覽(31)
  • Python DEM數(shù)據(jù)填充平坦區(qū)域(基于梯度)

    DEM數(shù)據(jù)中平地是值沒有局部梯度的數(shù)學(xué)水平區(qū)域。雖然平地可能自然發(fā)生,但它們在DEM中的存在也經(jīng)常是DEM收集和處理中的技術(shù)問題的結(jié)果,如地形反射率的偏差、從浮點(diǎn)精度到整數(shù)精度的轉(zhuǎn)換、噪聲去除、低垂直分辨率或低水平分辨率,以及其他可能性。凹陷填充算法通常

    2024年02月08日
    瀏覽(36)
  • STM32使用SPI+DMA(標(biāo)準(zhǔn)庫)

    STM32使用SPI+DMA(標(biāo)準(zhǔn)庫)

    DMA DMA原理 DMA通道資源分配 SPI+DMA配置 主函數(shù)編寫如下 1.CPU配置好DMA。 2.SPI發(fā)出DMA請求。(在DMA_Mode_Normal模式下,該請求實(shí)際上需要CPU命令SPI發(fā)出請求) 3.若該通道有多個請求,DMA控制器通過仲裁器判斷,根據(jù)配置的優(yōu)先級,選擇先回應(yīng)該通道高優(yōu)先級的請求,再回應(yīng)低優(yōu)先

    2024年02月11日
    瀏覽(20)
  • 金融時間序列分析:Python基于garch模型預(yù)測上證指數(shù)波動率、計(jì)算var和var穿透率、雙尾檢驗(yàn)

    金融時間序列分析:Python基于garch模型預(yù)測上證指數(shù)波動率、計(jì)算var和var穿透率、雙尾檢驗(yàn)

    目錄 一、收益率波動效應(yīng)的分析 1.1 ?收益率序列平穩(wěn)性檢驗(yàn) 1.2 建立AR(p)模型 1.3 Ljung-Box混成檢驗(yàn)殘差序列的相關(guān)性,判斷是否有ARCH效應(yīng) 1.4 建立ARCH模型 ?二、GARCH模型與波動率預(yù)測 2.1 建立GARCH模型 2.2 波動率預(yù)測 三、正態(tài)分布的假設(shè)下通過波動率計(jì)算VaR ?四、厚尾分布的假

    2024年02月04日
    瀏覽(32)
  • 基于Python的語義視頻搜索:使用結(jié)構(gòu)化相似度測量指數(shù)(SSMI)和圖像字幕網(wǎng)絡(luò)實(shí)現(xiàn)的分步解析與實(shí)戰(zhàn)示例

    在如今這個視頻信息愈加豐富的時代,如何有效地搜索、分析和管理大量的視頻數(shù)據(jù)變得越來越重要。本文旨在解釋我們?nèi)绾问褂肞ython和一些先進(jìn)的計(jì)算機(jī)視覺技術(shù)來實(shí)現(xiàn)對視頻庫的語義搜索,即,我們可以通過自動生成的摘要來搜索視頻數(shù)據(jù)庫。 在這個過程中,我們首先將

    2024年02月16日
    瀏覽(26)
  • Python| 水文 |批量讀取NC文件降水?dāng)?shù)據(jù)并導(dǎo)出為Excel相應(yīng)格式

    Python| 水文 |批量讀取NC文件降水?dāng)?shù)據(jù)并導(dǎo)出為Excel相應(yīng)格式

    ①首先需要在網(wǎng)上下載相應(yīng)whl的安裝包 (注意:一定要保證版本與Python解釋器版本一致,比如我的解釋器是3.11版本,電腦是windows64位的系統(tǒng),那么就選擇netCDF4-1.6.5-cp311-cp311-win_amd64.whl進(jìn)行下載) 在網(wǎng)上看到過一些下載地址,但是好多沒法用,這里提供一個,不需要梯子:

    2024年04月28日
    瀏覽(39)
  • Python 標(biāo)準(zhǔn)類庫-并發(fā)執(zhí)行之multiprocessing-基于進(jìn)程的并行

    Python3.6 multiprocessing 是一個支持使用類似于線程模塊的API派生進(jìn)程的包。該包同時提供本地和遠(yuǎn)程并發(fā),通過使用子進(jìn)程而不是線程,有效地避開了全局解釋器鎖。因此, multiprocessing 模塊允許程序員充分利用給定機(jī)器上的多個處理器。它同時在Unix和Windows上運(yùn)行。 該模塊還引

    2024年02月09日
    瀏覽(24)
  • 基于新浪微博海量用戶行為數(shù)據(jù)、博文數(shù)據(jù)數(shù)據(jù)分析:包括綜合指數(shù)、移動指數(shù)、PC指數(shù)三個指數(shù)

    基于新浪微博海量用戶行為數(shù)據(jù)、博文數(shù)據(jù)數(shù)據(jù)分析:包括綜合指數(shù)、移動指數(shù)、PC指數(shù)三個指數(shù)

    項(xiàng)目介紹 微指數(shù)是基于海量用戶行為數(shù)據(jù)、博文數(shù)據(jù),采用科學(xué)計(jì)算方法統(tǒng)計(jì)得出的反映不同事件領(lǐng)域發(fā)展?fàn)顩r的指數(shù)產(chǎn)品。 微指數(shù)對于收錄的,在指數(shù)方面提供微博數(shù)據(jù)層面的指數(shù)數(shù)據(jù),包括綜合指數(shù)、移動指數(shù)、PC指數(shù)三個指數(shù)。 項(xiàng)目舉例 以‘中興’這一

    2024年02月14日
    瀏覽(21)
  • 基于雙向長短期神經(jīng)網(wǎng)絡(luò)BILSTM的指數(shù)預(yù)測,基于gru神經(jīng)網(wǎng)絡(luò)的指數(shù)預(yù)測

    目錄 背影 摘要 LSTM的基本定義 LSTM實(shí)現(xiàn)的步驟 BILSTM神經(jīng)網(wǎng)絡(luò) 基于雙向長短期神經(jīng)網(wǎng)絡(luò)BILSTM的指數(shù)預(yù)測,基于gru神經(jīng)網(wǎng)絡(luò)的指數(shù)預(yù)測 完整代碼:基于雙向長短期神經(jīng)網(wǎng)絡(luò)BILSTM的指數(shù)預(yù)測,基于gru神經(jīng)網(wǎng)絡(luò)的指數(shù)預(yù)測(代碼完整,數(shù)據(jù)齊全)資源-CSDN文庫 https://download.csdn.net/d

    2024年04月24日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包