Как отобразить изменения площади поверхности озера с течением времени в области, ограниченной полигоном, в таблице земного двигателя? - PullRequest
0 голосов
/ 03 июля 2019

Проблема в том, что задана интересующая область.

Мне нужно найти все озера в ограниченном полигоном районе, используя индекс NDWI для водоемов, которые находятся на высоте более 1500 м. Затем отобразите изменения в площади поверхностных вод озера, начиная с 1984 по 2018 год, с двухлетним интервалом в виде таблицы в Google Earth Engine. Я использовал данные Landsat 5 и 7.

Мне нужно отобразить результаты в области, отмеченной полигонами, в виде структуры таблицы в следующем формате: - Ряды - (Озеро 1, Озеро 2, Озеро 3 ... Озеро n) Столбцы - (Поверхность Площадь в 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 () не работает.

Это ссылка Earth Engine на тот же

...