• 【GEE笔记1】Landsat8/9的NDVI计算,并计算区域NDVI平均值


    NDVI简介

    什么是NDVI

    NDVI是归一化植被指数(Normalized Difference Vegetation Index, NDVI)

    NDVI有什么用

    • 1、NDVI的应用:检测植被生长状态、植被覆盖度和消除部分辐射误差等;
    • 2、-1可见光高反射;0表示有岩石或裸土等,NIR和R近似相等;正值,表示有植被覆盖,且随覆盖度增大而增大;
    • 3、NDVI的局限性表现在,用非线性拉伸的方式增强了NIR和R的反射率的对比度。对于同一幅图象,分别求RVI和NDVI时会发现,RVI值增加的速度高于NDVI增加速度,即NDVI对高植被区具有较低的灵敏度;
    • 4、NDVI能反映出植物冠层的背景影响,如土壤、潮湿地面、雪、枯叶、粗糙度等,且与植被覆盖有关;

    NDVI一般怎么计算

    即(NIR-R)/(NIR+R)
    NIR为近红外波段的反射值
    R为红光波段的反射值
    英文缩写为 NDVI。归一化植被指数是反映农作物长势和营养信息的重要参数之一。根据该参数,可以知道不同季节的农作物对氮的需求量, 对合理施用氮肥具有重要的指导作用。
    NDVI——归一化植被指数:NDVI=(NIR-R)/(NIR+R),或两个波段反射率的计算。

    常见的卫星数据的NDVI计算公式:

    Landsat8-9: NDVI = (band5 - band4) / (band5 + band4) 
    # Landsat 8或称LDCM携带2个主要载荷: 运行陆地成像仪(Operational Land Imager, OLI) 和热红外传感器(Thermal Infrared Sensor, TIRS)。
    # 以上公式也适用于Landsat9.
    
    Sentinel-2: NDVI = (band8 - band4) / (band8 + band4)
    Modis: NDVI = (band2 - band1) / (band2 + band1)
    ETM/TM: NDVI = (band4 - band3) / (band4 + band3)
    # Landsat或称ETM+,Landsat5或称TM
    
    AVHRR: NDVI = (CH2 - CH1) / (CH2 + CH1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在GEE中计算Landsat8/9的NDVI

    // 第一步,指定研究区的范围,可以直接ee.Geometry.Polygon然后写四至点的经纬度
    var roi = ee.Geometry.Polygon([[
        [116.2589558694436,28.54241791617638]
    	[116.2589558694436,28.87485297022366]
    	[115.8634480569436,28.87485297022366]
    	[115.8634480569436,28.54241791617638]
    	]]);  
    // 也可以自己画范围,然后引用自己的范围
    var roi = ee.FeatureCollection(geometry); // 这行代码和上面的都是表示研究区范围的,具体使用如下图
    
    Map.centerObject(roi, 8);  // 以roi为中心显示地图,缩放等级8
    var image = ee.Image("LANDSAT/LC09/C02/T1_TOA/LC09_122040_20220506");  // 数据名称、时间、等级
    var ndvi = image.normalizedDifference(["B5", "B4"]).rename("NDVI");  //NDVI显示配置,NDVI值范围是-1到1
    var visParam = {  
      min: -0.2,   
      max: 0.8,  
      palette: ["FFFFFF", "CE7E45", "DF923D", "F1B555", "FCD163",   
                "99B718", "74A901", "66A000", "529400", "3E8601",   
                "207401", "056201", "004C00", "023B01", "012E01",   
                "011D01", "011301"]  
    };  
    Map.addLayer(ndvi, visParam, "NDVI");  // 加载计算好的NDVI数据图层
    Map.addLayer(roi, {color: "red"}, "roi");   // 加载roi,并显示为红色
    var mean = ndvi.reduceRegion({  
       reducer: ee.Reducer.mean(),  
       geometry: roi,   
       scale: 30  
    });  
    // 调用Image中的ReduceRegion方法计算roi区域内的NDVI均值
    // 参数分别是Reducer均值计算器、Geometry计算区域roi、scale计算使用的分辨率为30m。
    print("reduceRegion value is: ", mean); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    下图是自己画范围,然后引用自己的范围
    在这里插入图片描述

    计算过程和结果

    在这里插入图片描述

    计算结果

    在这里插入图片描述

    注:
    本文案例仅仅展示了NDVI计算过程最简单的部分,没有对影像进行处理,如去云处理、大气校正,有的人直接用TOA(calibrated top-of-atmosphere,大气层顶表观反射率,未经过大气校正。)做NDVI,也有的人用SR(Surface Reflectance,表面反射率数据)数据,笔者在写这篇文章时候所用到的数据还没有生产对应的的SR数据。

  • 相关阅读:
    JUC并发工具-CAS机制
    神经网络算法简单例子,图神经网络推荐算法
    笛卡尔树—简介
    图解LeetCode——1408. 数组中的字符串匹配(难度:简单)
    09-Java组合模式 ( Composite Pattern )
    【状语从句练习题】复习:分词从句
    ping不通Linux服务器怎么办?
    应用在儿童平板防蓝光中的LED防蓝光灯珠
    OC和Swift混编,导入头文件‘xxx-Swift.h‘ file not found
    数据库概论-MySQL的数据表的基本操作
  • 原文地址:https://blog.csdn.net/qq_41159191/article/details/126088324