基于 GEE Landsat C02 数据集合成 1986-2023 年的逐年年均 NDVI、多年均值、多年均值趋势折线图

目录

1 完整代码

2 运行结果



1 完整代码

//感兴趣的区域信息
var roi = ee.FeatureCollection('projects/ee-zhangkanghnust/assets/HengShaoLou');

Map.centerObject(roi);
Map.addLayer(roi, {'color': 'grey'}, 'roi');

// Applies scaling factors.
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);
}

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"]);
}

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

var L8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
            .filterBounds(roi)
            .filter(ee.Filter.calendarRange(2014, 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);

var L7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2')
            .filterBounds(roi)
            .filter(ee.Filter.calendarRange(2012, 2013, 'year'))
            .filter(ee.Filter.calendarRange(1, 12, 'month'))
            .map(applyScaleFactors)
            .select(['SR_B3', 'SR_B4', 'QA_PIXEL'], ['red', 'nir', 'QA_PIXEL'])
            .map(rmCloudNew)
            .map(get_NDVI);

var L5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2')
            .filterBounds(roi)
            .filter(ee.Filter.calendarRange(1986, 2011, 'year'))
            .filter(ee.Filter.calendarRange(1, 12, 'month'))
            .map(applyScaleFactors)
            .select(['SR_B3', 'SR_B4', 'QA_PIXEL'], ['red', 'nir', 'QA_PIXEL'])
            .map(rmCloudNew)
            .map(get_NDVI);

var Landsat = ee.ImageCollection(L8.merge(L7).merge(L5))
              .sort("system:time_start");

// print("Landsat_data", Landsat);

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 = 1986; i <= 2023; i++) {
  var ndvi_year = Landsat.filterDate(i + '-01-01', i + '-12-31').select('NDVI');
  var ndvi_mean = ndvi_year.mean().clip(roi);
  // print(i, ndvi_mean);
  // Map.addLayer(ndvi_mean, precipitationVis, i + '_ndvi_mean', false);
  Export.image.toDrive({
      image: ndvi_mean,
      description: i + 'year_mean',
      region: roi,
      scale: 30,
      maxPixels: 1e13,
      folder: 'NDVI_year'
  });
}

var years = ee.List.sequence(1986, 2023);

var collectYear = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    return Landsat.filterDate(start, end).reduce(ee.Reducer.mean()).float().set('system:time_start', y).set('year', y);
  })
);

print(collectYear, "ndvi_year");

var result_land = collectYear.mean().clip(roi);
print(result_land, 'ndvi_mean');
Map.addLayer(result_land, precipitationVis, 'ndvi_mean');

Export.image.toDrive({
    image: result_land,
    description: 'ndvi_mean',
    region: roi,
    scale: 30,
    maxPixels: 1e13,
    folder: 'NDVI_year'
});

var Yearly_chart = ui.Chart.image.series({
    imageCollection: collectYear.select('NDVI_mean'),
    region: roi,
    reducer: ee.Reducer.mean(),
    scale: 500,
    xProperty: 'year',
}).setOptions({
    interpolateNulls: true,
    lineWidth: 2,
    title: 'NDVI Yearly Series',
    vAxis: {title: 'NDVI'},
    hAxis: {title: 'Date'},
    trendlines: {0: {title: 'NDVI_trend', type: 'linear', showR2: true, color: 'red', visibleInLegend: true}}
});

print(Yearly_chart);

2 运行结果

运行结果可视化

多年NDVI均值趋势折线图

运行结果点击RUN可下载

多年NDVI均值折线图

多年NDVI均值雷达图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值