Я использую reduceRegion
для суммирования количества пикселей воды, определенных NDWI.Я хочу сделать это на коллекции изображений, чтобы увидеть изменения в акватории за определенный период времени.
Значения возвращаются из reduceRegion
в консоли и выглядят как целые числа, но я не могу извлечь их как таковые.Это кажется распространенной проблемой, но решение обычно использует функцию getInfo
для передачи этих значений на сторону клиента.К сожалению, getInfo
возвращает ноль в этом случае.
Код ниже предназначен для коллекции изображений ИЛИ одного изображения.Одиночное изображение (image1
) возвращает изображение с дополнительным свойством (waterArea
), и отображенный алгоритм разрывается (потому что функция возвращает нули).
Я также пытался использовать getInfo
на waterAg
, чтобы потенциально перенести этот список на сторону клиента, однако он возвращает те же List
объектов, которые мне не нужны.
var image1 = ee.Image(leastcloud.first()).select(['B11','B8','B3'])
var stackarea = function(image){
var watermask = ee.Image(0)
var MNDWI = image.normalizedDifference(['B3','B11'])
watermask = watermask.where(MNDWI.gt(.31),1);
//sum of water pixels in an area
var sum = ee.Number(watermask.reduceRegion({
reducer: ee.Reducer.sum(),
geometry: geometry,
scale: 20,
maxPixels: 1e9
}));
var clientSide = sum.getInfo()
var setArea = image.set('waterArea', clientSide)
return setArea
};
var single = stackarea(image1)
print(single)
var watermapped = filterSpot.map(stackarea)
var waterAg = watermapped.aggregate_array('waterArea')
print(waterAg)
Я действительно не уверен, как извлечь эти значения в виде чисел ...
Я надеюсь получить список чисел, чтобы я мог объединить этот массив с другимимассивы (дата изображения,% пикселей в облаке и т. д.)