// cloud masking functions:
//#####################################################################################
var getQABits = function(image, start, end, newName) {
// Compute the bits .
var pattern = 0;
for (var i = start; i <= end; i++) {
pattern += Math.pow(2, i);
}
// Return a single band image of the extracted QA bits, giving the band a new name.
return image.select([0], [newName])
.bitwiseAnd(pattern)
.rightShift(start);
};
// A function to mask out cloudy pixels.
var cloud_shadows = function(image) {
// Select the QA band.
var QA = image.select(['pixel_qa']);
// Get the internal_cloud_algorithm_flag bit.
return getQABits(QA, 3,3, 'Cloud_shadows').eq(0);
// Return an image masking out cloudy areas.
};
// A function to mask out cloudy pixels.
var clouds = function(image) {
// Select the QA band.
var QA = image.select(['pixel_qa']);
// Get the internal_cloud_algorithm_flag bit.
return getQABits(QA, 5,5, 'Cloud').eq(0);
// Return an image masking out cloudy areas.
};
// A function to mask out snow pixels.
var snow = function(image) {
// Select the QA band.
var QA = image.select(['pixel_qa']);
// Get the internal_cloud_algorithm_flag bit.
return getQABits(QA, 4,4, 'Snow').eq(0);
// Return an image masking out cloudy areas.
};
var maskClouds = function(image) {
var s = snow(image);
var cs = cloud_shadows(image);
var c = clouds(image);
image = image.updateMask(s);
image = image.updateMask(cs);
return image.updateMask(c);
};
//Set year range
var yearrangeStart = 1986;
var yearrangeStop = 1987;
var monthrangeStart = 5;
var monthrangeStop = 10;
//Loop through years
for(var loopYear = yearrangeStart; loopYear <= yearrangeStop; loopYear +=1){
for(var loopMonth = monthrangeStart; loopMonth <= monthrangeStop; loopMonth +=1){
//Set year's date range
if(loopMonth == 6 || loopMonth == 9){var endday = 30;}
else {var endday = 31;}
var start = ee.Date.fromYMD(loopYear, loopMonth, 1);
var end = ee.Date.fromYMD(loopYear, loopMonth, endday);
var collectionL5 = ee.ImageCollection('LANDSAT/LT05/C01/T1_SR').filterBounds(AOI)
//July and August only
.filterDate(start, end)
.map(function (image) {
var m = maskClouds(image).select('B4');
var n = maskClouds(image).select('B3');
var a = m.multiply(2).add(1);
var b = a.multiply(a);
var c = m.subtract(n);
var d = c.multiply(8);
var e = b.subtract(d).sqrt();
return (
a.subtract(e).divide(2)
.rename('nd').set({"system:time_start":image.get("system:time_start")})
)
});
// Merge Landsat collection
var collectionL = ee.ImageCollection(collectionL5);
//Create composite with median, clip to AOI and rename band based on year
var finalOutput = collectionL.reduce(ee.Reducer.median())
.clip(AOI)
.rename(loopYear.toString()+'_'+loopMonth.toString());
//Generate filename for export
var filename = ("NDVI_Composite_").concat(loopYear.toString()+'_'+loopMonth.toString());
//Add to map //
// Map.addLayer(finalOutput, {}, filename);
//zhushi xiamian
// var colorizedVis = {
// min: 0.0,
// max: 1.0,
// palette: [
// 'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
// '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
// '012E01', '011D01', '011301'
// ],
// };
// Map.addLayer(finalOutput, colorizedVis, 'Colorized');
// var zonalStats = finalOutput.reduceRegion({
// geometry: AOI,
// reducer: ee.Reducer.mean(),
// scale: 30,
// bestEffort: true
// });
// print(zonalStats)
Export.image.toDrive({
image:finalOutput,
description: loopYear.toString()+'_'+loopMonth.toString(),
folder: "MASVI",
region: AOI.geometry().bounds(),
scale: 30,
maxPixels: 8e11})
}}
解决了吗兄弟