今天給大家分享一個數據平均值的吧,好像從來沒有分享過這個內容。 以問題為導向利用Python幫助我們解決在科研中遇到的問題。最近有同學在處理TRMM降水數據的時候,說是要提取每個月的均 值出來。數據格式是tif柵格,目的也是非常明確的:提取多個tif的降水柵格均值出來。 剛纔看了一下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的。
最後提取得到電子錶格,月的數據,如果想計算四個季節的均值,那麼一行命令也就搞定了,也是非常方便的。
最後
這一章到這裡就結束了,今天分享的內容到這裡就沒有了,喜歡的小伙伴點贊收藏,有問題的小伙伴評論留言,看見都會回覆噢。下一篇見。