基于 GEE 计算年均归一化植被指数 NDVI、植被覆盖度 FVC

目录

1 完整代码

2 运行结果


1 完整代码

// 导入研究小区的集合
Map.centerObject(roi);
Map.addLayer(roi, { 'color': 'grey' }, 'roi');

// 应用缩放因子
function applyScaleFactors(image) {
    var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
    var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
    return image.addBands(opticalBands, null, true)
                .addBands(thermalBands, null, true);
}

// 云处理函数
var cloudMaskL457 = function(image) {
    var qa = image.select('QA_PIXEL');
    // 如果云位(5)被设置且云置信度(7)高
    // 或者云阴影位被设置(3),则为坏像素
    var cloud = qa.bitwiseAnd(1 << 5)
                  .and(qa.bitwiseAnd(1 << 7))
                  .or(qa.bitwiseAnd(1 << 3));
    // 删除所有波段中不出现的边缘像素
    var mask2 = image.mask().reduce(ee.Reducer.min());
    return image.updateMask(cloud.not()).updateMask(mask2);
};

// 另一个云处理函数
function rmCloudNew(image) {
    var cloudShadowBitMask = (1 << 4);
    var cloudsBitMask = (1 << 3);
    var qa = image.select('QA_PIXEL');
    var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
                 .and(qa.bitwiseAnd(cloudsBitMask).eq(0));
    return image.updateMask(mask)
                .copyProperties(image)
                .copyProperties(image, ["system:time_start"]);
}

// 计算NDVI的函数
var get_NDVI = function(image) {
    var NDVI = image.normalizedDifference(['nir', 'red']).rename(['NDVI']);
    image = image.addBands(NDVI);
    return image.select("NDVI");
};

// 筛选Landsat 8影像集合
var L8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
           .filterBounds(roi)
           .filter(ee.Filter.calendarRange(2023, 2023, 'year'))
           .filter(ee.Filter.calendarRange(1, 12, 'month'))
           .map(applyScaleFactors)
           .select(['SR_B4', 'SR_B5', 'QA_PIXEL'], ['red', 'nir', 'QA_PIXEL'])
           .map(rmCloudNew)
           .map(get_NDVI);

// NDVI可视化参数
var precipitationVis = {
    min: -1,
    max: 1,
    palette: ["FFFFFF", "CE7E45", "DF923D", "F1B555", "FCD163",
              "99B718", "74A901", "66A000", "529400", "3E8601",
              "207401", "056201", "004C00", "023B01", "012E01",
              "011D01", "011301"]
};

// 遍历年份
for (var i = 2023; i <= 2023; i++) {
    var ndvi_year = L8.filterDate(i + '-6-01', i + '-7-31').select('NDVI');
    var ndvi_mean = L8.mean().clip(roi);
}

print(i, ndvi_mean);
Map.addLayer(ndvi_mean, precipitationVis, i + '_ndvi_mean', false);

// 计算百分位数
var num = ndvi_mean.reduceRegion({
    reducer: ee.Reducer.percentile([5, 95]),
    geometry: roi,
    scale: 30,
    maxPixels: 1e13
});

// 获取第5%和第95%位置的NDVI值
var min = ee.Number(num.get("NDVI_p5"));
var max = ee.Number(num.get("NDVI_p95"));

print("min", min); // 将值打印到控制台
print("max", max);

// 区分不同部分的NDVI
var greaterPart = ndvi_mean.gt(max);
var lessPart = ndvi_mean.lt(min);
var middlePart = ee.Image(1).subtract(greaterPart).subtract(lessPart);

// 计算FVC
var tempf1 = ndvi_mean.subtract(min).divide(max.subtract(min));
var FVC = ee.Image(1)
            .multiply(greaterPart)
            .add(ee.Image(0).multiply(lessPart))
            .add(tempf1.multiply(middlePart))
            .toFloat();

Map.addLayer(FVC, {}, "FVC");

// 导出NDVI均值图像到Drive
Export.image.toDrive({
    image: ndvi_mean,
    description: i + 'year_mean',
    region: roi,
    scale: 30,
    maxPixels: 1e13,
    folder: 'NDVI_year'
});

2 运行结果

植被覆盖度FVC数据可视化结果
归一化植被指数NDVI数据可视化结果

你可能感兴趣的:(Google,Earth,Engine(GEE),GEE,云计算,云平台,遥感大数据,数据集)