1. 程式人生 > 其它 >使用Python批量提取TRMM降水資料均值

使用Python批量提取TRMM降水資料均值

今天給大家分享一個數據平均值的吧,好像從來沒有分享過這個內容。

以問題為導向利用Python幫助我們解決在科研中遇到的問題。最近有同學在處理TRMM降水資料的時候,說是要提取每個月的均

值出來。資料格式是tif柵格,目的也是非常明確的:提取多個tif的降水柵格均值出來。

剛才看了一下TRMM的計劃說是在2015年就退役了,我看了一下同學給我的資料,居然都到2019年了,這個我也不是很清楚,我

只知道把資料提取出來就行了。

Python學習交流Q群:906715085#####
首先,我先用ArcGIS開啟資料看看大概是什麼樣子的。這裡我打開了第一個時間和最近一個時間的資料,一看,喲呵,居然是全


球的,但是同學要提取的並不是全球的,而是中國某個區域的。So,我不得不對tif柵格資料進行掩膜提取。資料也看到了,是


1980-2019年的,月的,共計260多個檔案,如果一個一個地去掩膜提取,那是很煩的,包括這個任務的主要目的:提取每一個tif 柵格的均值,一個一個地搞都是非常麻煩的。So,先mask出指定區域的tif出來,再對這些tif求均值提取。

 

關於批量掩膜提取的內容,可以看看之前的記錄,這裡就不仔細說了,這個是連結地址:

使用ArcPy進行向量資料對柵格資料的批量裁剪

得到批量掩膜出來的tif就是指定區域的了,這就可以開始來提取均值了。當然,如果你想用ArcGIS一個一個地開啟這260多個tif柵

格在屬性裡檢視均值,然後複製出去也是沒問題的,只是很麻煩

SO,用Python來執行這個任務,在colab中使用相關的指令碼,因為有的包在我的電腦上老安裝不上

掩膜提取的tif我已經上傳到google drive了,因為我需要在colab寫相關的指令碼

具體的提取流程就是gdal來讀取tif資料,轉為numpy陣列計算均值,so easy

。我先讀取一個試試,如果可以的話,直接遍歷所有tif來讀取,一個的讀取是沒問題的。

既然一個的讀取是沒問題的,那就開始批量讀取並計算並匯出為DataFrame去。也看到了,我的目錄是多層資料夾,so,用

os.walk處理

指令碼如下,之前在提取全球的時候沒什麼問題,But,,當我提取指定研究區均值的時候輸出結果就是-inf,我用了nanmean也沒有

變化,負無窮,搜尋了一下,原來的原因大概是提取出來之後邊邊就變成黑色的了,我畫一個示意圖就清除了

這些黑邊框的影響導致計算出錯,so,用了np.where去處理,因為是降水資料,就把小於0的全部賦值成0了,最後計算就沒問題

了。where還可以用來進行邏輯判斷,看看到底是那些資料是-inf的。

最後提取得到電子表格,月的資料,如果想計算四個季節的均值,那麼一行命令也就搞定了,也是非常方便的。

最後
這一章到這裡就結束了,今天分享的內容到這裡就沒有了,喜歡的小夥伴點贊收藏,有問題的小夥伴評論留言,看見都會回覆噢。下一篇見。