基于GEE平台,选取Sentinel-2数据,对研究区2016-2024年植被覆盖度(FVC)进行监测分析。先通过云雪掩膜和最大合成法计算归一化植被指数(NDVI)。然后采用像元二分法,利用NDVI的5%和95%分位数确定区域内植被与裸土的NDVI极值,从而计算FVC。
var geometry = table;
Map.centerObject(geometry, 7);
var colorizedVis = {
min: 0,
max: 1,
palette: ['blue', 'white', 'green'],
};
function maskS2clouds(image) {
var qa = image.select('QA60');
var mask = qa.bitwiseAnd(1 << 10).eq(0)
.and(qa.bitwiseAnd(1 << 11).eq(0))
.and(qa.bitwiseAnd(1 << 12).eq(0));
return image.updateMask(mask).divide(10000)
.set(image.toDictionary(image.propertyNames()));
}
function createNDVI(image) {
return image.addBands(image.normalizedDifference(["B8", "B4"]).rename('NDVI'));
}
var S2_COL = ee.ImageCollection("COPERNICUS/S2_HARMONIZED")
.filterDate("2016-01-01", "2024-12-31")
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.filterBounds(geometry)
.map(maskS2clouds)
.map(createNDVI)
.select('NDVI');
function calculateFVC(NDVI, region, scale) {
var percentile = NDVI.reduceRegion({
reducer: ee.Reducer.percentile([5, 95]),
geometry: region,
scale: scale,
maxPixels: 1e13
});
var NDVI_min = ee.Number(percentile.get('NDVI_p5'));
var NDVI_max = ee.Number(percentile.get('NDVI_p95'));
var FVC = NDVI.subtract(NDVI_min).divide(NDVI_max.subtract(NDVI_min))
.clamp(0, 1).rename('FVC');
return FVC;
}
var years = ee.List.sequence(2016, 2024);
var fvcList = [];
function exportAnnualFVC(year) {
var annualNDVI = S2_COL
.filter(ee.Filter.calendarRange(year, year, 'year'))
.max()
.set('year', year)
.set('system:time_start', ee.Date.fromYMD(year, 1, 1));
var annualFVC = calculateFVC(annualNDVI, geometry, 20);
var fvcMean = annualFVC.reduceRegion({
reducer: ee.Reducer.mean(),
geometry: geometry,
scale: 20,
maxPixels: 1e13
}).get('FVC');
fvcList.push(fvcMean);
Map.addLayer(annualFVC.clip(geometry), colorizedVis, 'FVC_' + year);
Export.image.toDrive({
image: annualFVC.clip(geometry),
description: 'FVC_' + year,
fileNamePrefix: 'FVC_' + year,
folder: 'sentinel_FVC',
region: geometry,
scale: 20,
crs: "EPSG:4326",
maxPixels: 1e13
});
}
years.getInfo().forEach(exportAnnualFVC);