植被指数第一弹—宽带绿度指数(你最常见的植被指数)

植被指数第一弹—宽带绿度指数(你最常见的植被指数)

本文参考资料:

Calculating different Vegetation Indices in Google Earth Engine

Enhanced Vegetation Index(EVI) from Sentinel-2 image on Google Earth Engine

Calculating NDVI from Sentinel-2 Images

增强型植被指数-EVI_linsen 1833[CSDN]

植被指数总结(作业) - 简书 (jianshu.com)

arcgis 笔记 4:收藏的一些植被指数公式 - 知乎 (zhihu.com)

宽带绿度指数可以简单度量绿色植被的数量和生长状况,选择的波段范围在可见光和近红外。本文以哨兵二号数据为参照,将宽带绿度指数公式表达出来,仅供参考。若有错误之处,敬请指正。

下面先看看Sentinel-2各波段中心波长与空间分辨率。

波段 Sentinel-2A 中心波长(nm) Sentinel-2B 中心波长(nm) 空间分辨率(m)
1-Coastal aerosol 442.7 442.2 60
2-Blue 492.4 492.1 10
3-Green 559.8 559.0 10
4-Red 664.6 664.9 10
5-Vegetation red edge 704.1 703.8 20
6-Vegetation red edge 740.5 739.1 20
7-Vegetation red edge 782.8 779.7 20
8-NIR 832.8 832.9 10
8A-Narrow NIR 864.7 864.0 20
9-Water vapour 945.1 943.2 60
10-SWIR-Cirrus 1373.5 1376.9 60
11-SWIR 1613.7 1610.4 20
12-SWIR 2202.4 2185.7 20

根据绿色植被对红波段和蓝波段的光吸收与发射特征,一系列植被指数发展出来,有比值植被指数(RVI, Ratio Vegetation Index),差值植被指数(DVI, Difference Vegetation Index)等。后来,随着人们对大气对辐射影响的理解,蓝波段和一系列校正因子与系数被引入公式,发展出适用于不同冠层、土壤背景、大气状况的植被指数。

1. NDVI(Normalized Difference Vegetation Index)

不多介绍,这应该是应用地最广的植被指数了...

\[NDVI=\frac{NIR-Red}{NIR+Red} \]

def getNDVI(image):
    
    # Normalized difference vegetation index (NDVI)
    ndvi = image.normalizedDifference(['B8','B4']).rename("NDVI")
    image = image.addBands(ndvi)

    return(image)

2. EVI(Enhanced Vegetation Index)

\(EVI\)\(NDVI\)相比,在高生物量区域变化较敏感,引入蓝波段,减少大气影响,对冠层信噪背景进行调整。

\[EVI=G*\frac{NIR-Red}{NIR+C1*Red-C2*Blue+L} \]

其中,\(C1\)大气阻抗红波段校正系数,取值为6;\(C2\)大气阻抗蓝波段校正系数,取值为7.5;\(L\) 冠层背景亮度校正因子,取值为1;\(G\) 增益系数,取值为2.5。

def getEVI(image):
    # Compute the EVI using an expression.
    EVI = image.expression(
        '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', {
            'NIR': image.select('B8').divide(10000),
            'RED': image.select('B4').divide(10000),
            'BLUE': image.select('B2').divide(10000)
        }).rename("EVI")

    image = image.addBands(EVI)

    return(image)

3. SAVI(Soil-Adjusted Vegetation Index)

\(NDVI\)在低植被覆盖率地区,易受到土壤亮度的影响,故常用土壤调节植被指数\(SAVI\),代替\(NDVI\)来表征植被特征。公式:

\[SAVI=\frac{NIR-Red}{NIR+Red+L}*(1+L) \]

其中,\(L\)为土壤亮度校正因子,表示绿色植被覆盖量,常取0.5来表示绝大多数的土地覆盖类型。\(SAVI\)取值范围-1到1。

# SAVI (Soil Adjusted Vegetation Index)
def getSAVI(image):
    # Compute the SAVI using an expression.
    SAVI = image.expression ('(((NIR - RED) / (NIR + RED + L))* (1+L))',{
        'L': 0.5, # Cobertura vegetation 0-1
        'NIR': image.select ('B8'),
        'RED': image.select ('B4')
    }).rename("SAVI")
    
    image = image.addBands(SAVI)

    return(image)

后来发展的变换型土壤调节植被指数\(TSAVI\),调整型土壤调节植被指数\(MSAVI\),优化型土壤调节植被指数\(OSAVI\),归纳土壤调节植被指数\(GESAVI\)

4. ARVI(Atmospherically Resistant Vegetation Index)

大气阻抗植被指数\(ARVI\),主要应用于大气气溶胶较高(刀耕火种,森林火灾,干旱半干旱)的地区;通过引入蓝波段,校正受到散射影响的红波段反射率。

\[ARVI=\frac{NIR-RB}{NIR+RB}\\ RB = Red+\gamma(Red-Blue) \]

\(\gamma\)为校正因子,常取值为1.0,取值范围-1到1,健康植被的取值范围常为0.2到0.8。

# ARVI (Atmospherically Resistant Vegetation Index)
def getARVI(image):
    # Compute the ARVI using an expression.
    ARVI = image.expression ('((NIR - (2 * RED) + BLUE) / (NIR + (2 * RED) - BLUE))',{
        'NIR': image.select ('B8'),
        'BLUE': image.select ('B2'), 
        'RED': image.select ('B4')
    }).rename("ARVI")
    
    image = image.addBands(ARVI)

    return(image)

\(SAVI\)\(ARVI\)结合到一起,可以得出土壤大气阻抗植被指数\(SARVI\)【叫SAR VI,bushi👀】。

5. GCVI(Green Chlorophyll Vegetation Index)

叶绿素植被指数\(GCVI\)采用近红外和绿光波段的反射比率来反映叶片中的叶绿素含量。

\[GCVI=\frac{NIR}{Green}-1 \]

# GCVI ( Vegetation Index)
def getGCVI(image):
    # Compute the GCVI using an expression.
    GCVI = image.expression('(((NIR) / (GREEN)) - 1)', {
    'NIR' : image.select('B8'),
    'GREEN' : image.select('B3')
  }).float().rename("GCVI")
    
    image = image.addBands(GCVI)

    return(image)

6. GLI(Green Leaf Index)

绿叶指数(GLI),也叫做绿度指数(Green Index),将绿波段和其他两个可见光波段进行组合,公式:

\[GLI = \frac{2*Green-Red-Blue}{Red+Green+Blue} \]

# GLI (Green Leaf Index)
def getGLI(image):
    # Compute the GLI using an expression.
    GLI = image.expression ('(((GREEN - RED) + (GREEN - BLUE)) / ((2 * GREEN) + RED + BLUE))', {
        'GREEN': image.select ('B3'),  
        'RED': image.select ('B4'),
        'BLUE': image.select ('B2')
        }).rename("GLI")
    image = image.addBands(GLI)

    return(image)
posted @ 2022-09-06 22:48  coliaxu  阅读(4542)  评论(0)    收藏  举报