基于python实现NPP流程化操作

前提:已经配置好了python环境和GDAL库,numpy库

实现过程:

1. 读取数据:读取需要的各种数据:(这里需要用到NDVI、温度、降水、太阳辐射数据)。以读取NDVI数据为例:

filename = r'G:\graduation\code\NDVI15.tif'

NDVI = gdal.Open(filename)

2. 将读取的数据转存到numpy数组

Data = NDVI.ReadAsArray(0,0,width_NDVI,height_NDVI)

3.然后开始FPAR的计算

FPAR_NDVI = (Data-miN)*(0.95-0.001)/(maN-miN)+0.001
FPAR_SR = (SR-miR)*(0.95-0.001)/(maR-miR)+0.001

FPAR = (FPAR_NDVI+FPAR_SR)/2   ##植被层对入射光合有效辐射的吸收比例

4.继而进行APAR和NPP的计算

for xi in range(height_Veg):  
  for yj in range(width_Veg):
    APAR[xi][yj] = RData[xi,yj]*Data2[xi,yj]*0.5  
    Te2[xi][yj] = 1.184/(1+math.exp(0.2*(Topt-10-Data3[xi,yj])))*1 \
    /(1+math.exp(0.3*(-Topt-10+Data3[xi,yj])))  
    Te[xi][yj] = Te2[xi][yj]*Te1  
    
    Ep0[xi,yj] = 16*(10*Data3[xi,yj]/I)**a   
    Rn[xi,yj] = ((Ep0[xi,yj]*Data4[xi,yj])**0.5)*(0.369+0.589*((Ep0[xi,yj]/Data4[xi,yj])**0.5))
    E[xi,yj] = Data4[xi,yj]*Rn[xi,yj]*(Data4[xi,yj]**2+Rn[xi,yj]**2+Data4[xi,yj]*Rn[xi,yj]) \
    /((Data4[xi,yj]+Rn[xi,yj])*(Data4[xi,yj]**2+Rn[xi,yj]**2))   
    Ep[xi,yj] = (E[xi,yj]+Ep0[xi,yj])/2
    W[xi,yj] = 0.5+(0.5*E[xi,yj])/Ep[xi,yj]  
    
    NPP[xi,yj] = Data2[xi,yj]*FPAR[xi,yj]*0.5*Te[xi][yj]*W[xi,yj]*0.541    #NPP



你可能感兴趣的:(基于python实现NPP流程化操作)