Я отвечаю на этот вопрос в отношении кода, размещенного в комментариях, надеюсь, вопрос будет дополнен кодом, размещенным в комментариях.
Фильтрация: ок.
Просто комментарий, я бы не назвал переменную коллекции изображений именем img
, меня это просто смущает, но имена переменных зависят от вас.
var mf = ee.Filter.calendarRange(10, 12, 'month');
var img1 = ee.ImageCollection(l5
.filterDate('1984-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));
добавить NDWI : Это ваш код:
var addNDWI = function(image){
var ndwi = image.normalizedDifference(['B2', 'B4']).rename('NDWI');
var ndwiMask = ndwi.gte(0.3);
return image.addBands(ndwi);
};
var image1 = img1.map(addNDWI);
var image2 = img2.map(addNDWI);
вы не сохраняете ndwiMask
, поэтому вы не сможете использовать его вне этой функции. Опять же, я бы не назвал их image
, поскольку это не изображения, а коллекции изображений.
маска высот : необходимо выбрать диапазон elevation
:
var elevMask = elevation.select('elevation').gt(1500)
Это изображение маски будет иметь те, где высота больше 1500, и нули, где нет.
применение масок : в этой части вы должны помнить, что Earth Engine использует функциональное программирование, поэтому объекты не являются изменяемыми, это означает, что вы не можете обновить состояние объекта с помощью метода, вы должны поймать вывод метода, который вы вызываете. Здесь вам нужна маска ndwi, поэтому вы должны вычислить ее с диапазоном NDWI.
var mask = function(image){
var ndwiMask = image.select('NDWI').gt(0.3)
var ndwi_masked = image.updateMask(ndwiMask);
return ndwi_masked.updateMask(elevMask);
};
var maskedImg = image1.map(mask); // ImageCollection!
var maskedImg2 = image2.map(mask); // ImageCollection!
Визуализация : В результате получается ImageCollection
, когда вы добавляете его на карту, EE создает мозаику, и это то, что вы увидите. Помните об этом для дальнейшей обработки.
var ndwiViz = {bands: ['NDWI'], min: 0.5, max: 1, palette: ['00FFFF', '0000FF']};
Map.addLayer(maskedImg, ndwiViz, 'Landsat 5 masked collection');