在估算植被的NPP時,相信很多人都會選擇CASA模型,因爲它實在是一個參數少易實現且應用廣泛的光能利用率模型啊。
CASA模型估算NPP,公式就是NPP = APAR * E,APAR是植被吸收的光合有效輻射,E是植被的光能利用率。因爲今天要說最適溫度,暫不說APAR。
E = T *W *Emax,
T是溫度脅迫,W是水分脅迫,Emax是植被的最大光能利用率。最適溫度Topt主要是在計算溫度脅迫T的時候用到。
T = T1 * T2
T1是指高溫和低溫對光能利用率的影響係數, T2是指溫度從最適溫度向高溫和低溫轉化對光能利用率的影響係數.
這裏的Topt就是所說的最適溫度啦。
Topt是指像元x處的最適溫度,即該像元的NDVI在一年中達到最大時當月的平均溫度。通俗一點說,就是在某個像元處,一年內的12個月的NDVI進行對比,比如8月份的NDVI是一年中最大的,那麼8月份的平均溫度就是此像元的最適溫度。
那麼Topt具體如何計算呢?其實就是進行比較。
下面附上python實現的具體過程:
Ntrans, Nproj, Narr = run.read_img(filelist[0])##讀圖像,filelist是包括12個月的NDVI的列表 NDVImaxValue = Narr ##先假定第一個月的NDVI是最大的,然後跟後面的對比,不斷替換,找到最大值 NDVImaxMonth = np.ones((rows, cols), int) NDVImaxMonthMeanTem = np.zeros((rows, cols)) ##定義最適溫度數組 for i in range(len(filelist)): ##2001年的時候,i= 0時,代表的是1月 Ntrans, Nproj, NDVIarr = run.read_img(filelist[i]) (dir1,name1) = os.path.split(filelist[i]) yy, yymm = findYM(name1) for row in range(rows): for col in range(cols): if NDVImaxValue[row,col] >= NDVIarr[row,col]: NDVImaxValue[row,col] = NDVImaxValue[row,col] ## NDVImaxValue保持不變 NDVImaxMonth[row,col] = NDVImaxMonth[row,col] ## NDVImaxMonth保持不變 # print(int(NDVImaxMonth[row,col])) NDVImaxMonthMeanTem[row, col] = MeanTemList[int(NDVImaxMonth[row, col]) - 1] ##最適溫度 # print(NDVImaxMonthMeanTem[row, col]) else: NDVImaxValue[row, col] = NDVIarr[row,col] NDVImaxMonth[row,col] = int(yymm[5:7]) NDVImaxMonthMeanTem[row, col] = MeanTemList[int(yymm[5:7]) - 1] ##最適溫度
上面的過程就是在不斷對一年內12個月的NDVI進行比較,然後找到NDVI最大值的月份,並把此月份的平均溫度賦值到Topt數組的某個像元裏,完成一個像元的Topt的查找,直到所有的像元數循環完了,就完成了一年的Topt的查找。
PS:我對Topt的計算過程糾結了好久,纔想明白,歡迎指正錯誤,或者精簡代碼。