Python实现CASA模型估算植被净初级生产力——最适温度篇

  在估算植被的NPP时,相信很多人都会选择CASA模型,因为它实在是一个参数少易实现且应用广泛的光能利用率模型啊。

CASA模型估算NPP,公式就是NPP = APAR * E,APAR是植被吸收的光合有效辐射,E是植被的光能利用率。因为今天要说最适温度,暂不说APAR。

                                                           E = T *W *Emax,

T是温度胁迫,W是水分胁迫,Emax是植被的最大光能利用率。最适温度Topt主要是在计算温度胁迫T的时候用到。

                                                                T = T1 * T2

 T1是指高温和低温对光能利用率的影响系数, T2是指温度从最适温度向高温和低温转化对光能利用率的影响系数.

Python实现CASA模型估算植被净初级生产力——最适温度篇_第1张图片

这里的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的计算过程纠结了好久,才想明白,欢迎指正错误,或者精简代码。

 

 


 

 

你可能感兴趣的:(植被净初级生产力估算,CASA模型,Python)