基于GEE计算年度植被覆盖度
1.植被覆盖度计算公式参考地理学报的《2001-2013年华北地区植被覆盖度与干旱条件的相关分析》
2.代码
var roi=ee.FeatureCollection("users/xxxx/Mydistrict");
function rmCloud(image) {
var cloudShadowBitMask = (1 << 3);
var cloudsBitMask = (1 << 5);
var qa = image.select("pixel_qa")
var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
.and(qa.bitwiseAnd(cloudsBitMask).eq(0));
return image.updateMask(mask);
}
//merge bestNDVI
var bestNDVI=ee.ImageCollection("LANDSAT/LC08/C01/T1_SR")
.filterDate("2020-01-01","2020-12-31")
.filterBounds(roi)
.map(rmCloud)
.map(function(image){
var ndvi=image.normalizedDifference(["B5","B4"]);
return image.addBands(ndvi.rename("NDVI"))
})
.qualityMosaic("NDVI")
.clip(roi)
.select("NDVI");
Map.centerObject(roi,8);
Map.addLayer(bestNDVI,{},"bestNDVI");
//calculate the 5% and 95% num of the image
var num =bestNDVI.reduceRegion({
reducer:ee.Reducer.percentile([5,95]),
geometry:roi,
scale:30,
maxPixels:1e13
});
print("num",num);
var min = ee.Number(num.get("NDVI_p5"));
var max = ee.Number(num.get("NDVI_p95"));
print("min",min);
print("max",max)
//quantile and combine
var greaterPart = bestNDVI.gt(max);
var lessPart = bestNDVI.lt(min);
var middlePart =ee.Image(1).subtract(greaterPart).subtract(lessPart);// get the middle part
//var mask=bestNDVI.gt(mim).add(bestNDVI.lt(min));
//var middlePart=bestNDVI.updateMask(mask);
//calculate FVC
var tempf1=bestNDVI.subtract(min).divide(max.subtract(min));
//ee.Image(constant): creat a constatnt image
var FVC=ee.Image(1).multiply(greaterPart)
.add(ee.Image(0).multiply(lessPart))
.add(tempf1.multiply(middlePart));
Map.addLayer(FVC,{},"FVC");
//导出⽂文件到Drive,名称为l8Img,分辨率30⽶米,区域是roi区域
Export.image.toDrive({
image: FVC,
description: "fvc",
fileNamePrefix: "fvc",
folder: "xxxx",
scale: 30,
region: roi,
maxPixels: 1e13
});