Итерация по коллекции функций GEE

процесс итерации по imageCollection хорошо документирован, но это не относится к featureCollection. При попытке применить появляется несколько ошибок. Я показываю здесь одну из них. Если кто-то преуспел в этой процедуре, помощь будет приветствоваться.

var dict1 = ee.Dictionary({'Name': null, 'cultivo': null, 'imageId':null,'sum':null})

var n_list = ee.List(ee.Feature(null,dict1));
print(n_list)

var sum2 = function(feature,list){
  var actual = feature.get('sum')
  var previous = ee.Feature(ee.List(list).get(-1))
  var added = actual.add(previous)
  return ee.List(list).add(added)
    };

var summarize = ee.FeatureCollection(ee.List(sumChange.iterate(sum2,n_list)));
print('summarise',summarize)

Ошибка actual.add is not a function


person javier    schedule 02.04.2019    source источник
comment
Вы проверяли, является ли actual объектом ee.Number? Я предлагаю явно привести его к ee.Number с помощью var actual = ee.Number(feature.get('sum')), чтобы избежать ошибок, связанных с типом. В принципе, нет никакой разницы между повторением featureCollection и imageCollection.   -  person Kevin    schedule 03.04.2019
comment
Я тоже пробовал это. Теперь ошибка: FeatureCollection (Error) List.get, argument 'list': Invalid type. Expected: List<Object>. Actual: Feature.   -  person javier    schedule 03.04.2019


Ответы (1)


правильный способ заключается в следующем,

var dict1 = ee.Dictionary({'Name': null, 'cultivo': null, 'imageId':null,'sum':0})
//
var n_list = ee.List([ee.Feature(sumChange.first().geometry(),dict1)]);
//print(n_list)

var sum2 = function(feature,list){
  var actual = ee.Number(feature.get('sum'))
  var previous = ee.Number(ee.Feature(ee.List(list).get(-1)).get('sum'))
  var keepProperties = ['Name', 'cultivo', 'imageId','sum'];
  var added = actual.add(previous)
  return ee.List(list).add(feature.set('sumatoria', added).copyProperties(feature,keepProperties))
    };

var summarize = ee.FeatureCollection(ee.List(sumChange.iterate(sum2,n_list)));
print('summarise',summarize)
person javier    schedule 03.04.2019