在GEE中按逐年固定日期范围处理Landsat影像并计算NDVI
扩展Landsat 8 NDVI逐年同期处理方案(2013-2022)
完整实现代码
// 1. 定义目标区域(替换为你的研究区) var roi = ee.Geometry.Rectangle([116.0, 39.5, 116.5, 40.0]); // 示例区域:北京周边 Map.centerObject(roi, 10); // 2. 定义年份范围与处理函数 var startYear = 2013; var endYear = 2022; var years = ee.List.sequence(startYear, endYear); // 单年份NDVI处理函数 var processYear = function(year) { year = ee.Number(year); // 定义每年的时间范围:5月1日至6月30日 var startDate = ee.Date.fromYMD(year, 5, 1); var endDate = ee.Date.fromYMD(year, 6, 30); // 筛选Landsat 8 TOA影像 var l8Collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA') .filterBounds(roi) .filterDate(startDate, endDate) .filterMetadata('CLOUD_COVER', 'less_than', 30); // 初步云量筛选 // 云评分去云函数 var maskClouds = function(image) { var cloudScore = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud'); var mask = cloudScore.lte(20); // 云评分≤20的区域保留 return image.updateMask(mask).clip(roi); }; // 去云并计算NDVI var ndviCollection = l8Collection.map(maskClouds).map(function(image) { var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI'); return ndvi.set({ 'year': year, 'system:time_start': image.get('system:time_start') }); }); // 合成该年份的NDVI均值影像(也可选择中值/最大值合成) var annualNdvi = ndviCollection.mean().set('year', year); return annualNdvi; }; // 3. 生成逐年NDVI影像集 var annualNdviCollection = ee.ImageCollection.fromImages(years.map(processYear)); // 4. 将各年份NDVI加载到地图 var ndviVis = {min: -0.2, max: 0.8, palette: ['blue', 'white', 'green']}; annualNdviCollection.evaluate(function(images) { images.forEach(function(img) { var year = img.properties.year; var image = ee.Image(img.id); Map.addLayer(image, ndviVis, 'NDVI_' + year); }); }); // 5. 生成逐年NDVI均值统计图表 var statsChart = ui.Chart.image.series({ imageCollection: annualNdviCollection, region: roi, reducer: ee.Reducer.mean(), scale: 30 }) .setOptions({ title: '2013-2022年5-6月NDVI均值变化', vAxis: {title: 'NDVI均值'}, hAxis: {title: '年份'}, lineWidth: 2, pointSize: 4 }); print('逐年NDVI均值统计', statsChart);
关键功能说明
- 逐年批量处理:通过
ee.List.sequence生成2013-2022年份列表,用map调用处理函数完成每年同期影像的自动化处理,每个结果影像都带有year属性用于后续区分。 - 云处理优化:保留原代码的云评分筛选逻辑,先按云量<30%初步筛选影像,再用
simpleCloudScore将云评分≤20的区域保留,提升去云效果。 - 影像集构建:将每年合成的NDVI均值影像整合为
ImageCollection,方便后续地图加载与统计分析。 - 地图加载:通过
evaluate将影像集转为客户端列表,循环添加各年份NDVI图层,图层名称带年份标识便于切换查看。 - 统计图表:使用
ui.Chart.image.series基于影像集和研究区生成逐年NDVI均值折线图,直观展示时间变化趋势。
可调整参数提示
- 可修改
startYear和endYear调整年份范围; - 云量阈值(
CLOUD_COVER和cloudScore.lte)可根据研究区云况调整; - 影像合成方式可将
mean()改为median()或max(),适配不同研究需求; - 可视化参数
ndviVis可根据区域植被特征调整颜色 palette 和数值范围。
内容的提问来源于stack exchange,提问作者James Hatten
相关产品推荐
相关产品推荐

