今天給大家分享一個資料平均值的吧,好像從來沒有分享過這個內容,
以問題為導向利用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的,

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


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

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457980.html
標籤:Python
上一篇:Python全堆疊開發【第一篇】:Python安裝與初識
下一篇:利用python來制作動態二維碼
