计算Landsat的NDBI指数
//去云457的算法
function cloudMaskL457(image) {
var qa = image.select('pixel_qa');
// If the cloud bit (5) is set and the cloud confidence (7) is high
// or the cloud shadow bit is set (3), then it's a bad pixel.
var cloud = qa.bitwiseAnd(1 << 5).and(qa.bitwiseAnd(1 << 7)).or(qa.bitwiseAnd(1 << 3));
// Remove edge pixels that don't occur in all bands
var mask2 = image.mask().reduce(ee.Reducer.min());
return image.updateMask(cloud.not()).updateMask(mask2);
};
//去云8的算法
function cloudMaskL8sr(image) {
// Bits 3 and 5 are cloud shadow and cloud, respectively.
var cloudShadowBitMask = (1 << 3);
var cloudsBitMask = (1 << 5);
// Get the pixel QA band.
var qa = image.select('pixel_qa');
// Both flags should be set to zero, indicating clear conditions.
var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
.and(qa.bitwiseAnd(cloudsBitMask).eq(0));
return image.updateMask(mask);
}
//计算57NDBI的值
function opNdbi57(image){
var NDBI = image.normalizedDifference(['B5', 'B4']).rename('NDBI')
return image.addBands(NDBI);
}
//计算8NDBI的值
function opNdbi8(image){
var NDBI = image.normalizedDifference(['B6', 'B5']).rename('NDBI')
return image.addBands(NDBI);
}
var geometry = ee.FeatureCollection('projects/ee-wn1206/assets/dongbei').geometry();
//Map.centerObject(geometry,6)
var L5_COL = getNdvi(2001, 2011, "LANDSAT/LT05/C01/T1_SR", cloudMaskL457, opNdbi57);
var L7_COL = getNdvi(2012, 2012, "LANDSAT/LE07/C01/T1_SR", cloudMaskL457, opNdbi57);
var L8_COL = getNdvi(2013, 2020, "LANDSAT/LC08/C01/T1_SR", cloudMaskL8sr, opNdbi8);
var data = ee.ImageCollection(L5_COL.merge(L7_COL).merge(L8_COL))
绘制时间序列折线图
var yearlychart = ui.Chart.image.series({
imageCollection: data.select('NDBI_median'),
region: geometry.bounds(),
reducer: ee.Reducer.mean(),
scale: 5000,
xProperty:'Year'
}).setOptions({
interpolateNulls: true,
lineWidth: 2,
title: 'NDBI Daily Time Seires',
vAxis: {title: 'NBVI'},
hAxis: {title: 'Date'},
trendlines: { 0: {title: 'NDBI_trend',type:'linear', showR2: true, color:'red', visibleInLegend: true}}
});
print(yearlychart);
同理写出NDVI
function getNdvi(startYear, finishYear, name, cloudMask, op){
var years = ee.List.sequence(startYear, finishYear);
return ee.ImageCollection(years.map(function(year){
var start = ee.Date.fromYMD(year, 1, 1);
var end = start.advance(12, 'month');
var NDBI = ee.ImageCollection(name).filterDate(start, end).map(cloudMask).map(op);
return NDBI.reduce(ee.Reducer.median()).clip(geometry).set('Year',year);
}))
}