问题陈述是给出了感兴趣的区域。
我需要使用NDWI指数查找水域中多边形边界区域内的所有湖泊,这些湖泊的高度超过1500m。然后以表格形式在Google Earth Engine中以两年为间隔显示从1984年到2018年开始的湖泊地表水面积的变化。我已经使用了Landsat 5和7数据。
我需要以以下格式在表格结构的多边形标记区域中显示结果:-行-(Lake 1,Lake 2,Lake 3 ... Lake n)列-(Surface 1984年的面积,1986年的表面积,.... 2018)-以平方公里为单位的表面积。
我应该怎么做?
我创建了以下代码:
var l5 = ee.ImageCollection("LANDSAT/LT05/C01/T1_SR"),
roi = /* color: #d63000 */ee.Geometry.Polygon(
[[[77.68018052033392, 31.0091863423649],
[80.36084458283392, 29.5863837026937],
[80.98706528595892, 30.233944725529557],
[78.85571762970892, 31.57247908795104]]]),
elevation = ee.Image("USGS/SRTMGL1_003"),
l7 = ee.ImageCollection("LANDSAT/LE07/C01/T1_RT_TOA");
var mf = ee.Filter.calendarRange(10, 12, 'month');
Map.centerObject(roi);
var img1 = ee.ImageCollection(l5
.filterDate('1995-01-01','1999-12-31')
.filterBounds(roi)
.filter(mf));
var img2 = ee.ImageCollection(l7
.filterDate('2000-01-01','2018-12-31')
.filterBounds(roi)
.filter(mf));
//add NDWI band function
var addNDWI = function(image) {
return image
// NDWI
.addBands(image.normalizedDifference(['B2', 'B4']).rename('NDWI'))
};
//map add ndwi function to both image collections
var image1 = img1.map(addNDWI);
var image2 = img2.map(addNDWI);
Map.addLayer(image1, {}, 'image1');
Map.addLayer(image2, {}, 'image2');
//masking function for elevation and ndwi
var mask = function(image) {
var ndwiMask = image.select('NDWI').gte(0.3);
var elevMask = elevation.updateMask(elevation.gt(1500));
return image.updateMask(ndwiMask)
return image.updateMask(elevMask);
};
//map masking function
var maskedImg = image1.map(mask); //For 1984-1999
var maskedImg2 = image2.map(mask); //For 2000-2018
print(maskedImg);
print(maskedImg2);
//set up params to view NDWI band
var ndwiViz = {bands: 'NDWI',min: 0.3, palette: ['00FFFF', '0000FF']};
Map.addLayer(maskedImg, ndwiViz, 'NDWI 1984-1999');
Map.addLayer(maskedImg2, ndwiViz, 'NDWI 2000-2018');
输出在地图显示中显示意外的蓝线。另外,我只需要将输出限制为多边形边界区域,但是.clip()在这种情况下似乎不起作用。