使用GEE代码编辑器从功能中提取的现有列表中创建唯一值列表

时间:2018-08-26 09:07:57

标签: code-editor google-earth-engine

我正在使用Google Earth Engine代码编辑器。我有一个包含多个状态火灾的要素集合,需要生成将在选择小部件中使用的状态的唯一列表。我正在尝试编写一个函数,该函数获取所有火灾的状态值列表,创建一个新列表,然后将新状态值添加到新的唯一列表中。我已经运行了下面的代码,并且没有收到任何错误消息,但是输出仍然是statesUnique = []。谁能为我指出正确的方向,以使新列表填充唯一的州值?

我的代码:

// List of state property value for each fire
var states = fire_perim.toList(fire_perim.size()).map(function(f) {
  return ee.Feature(f).get('STATE');
}).sort();
print('States: ', states);

// Create unique list function
var uniqueList = function(list) {
  var newList = []
  var len = list.length;
  for (var i = 0; i < len; i++) {
    var j = newList.contains(list[i]);
    if (j === false) {
      newList.add(list[i])
    }
  }
  return newList
};

// List of unique states
var statesUnique = uniqueList(states);
print('States short list: ', statesUnique)

1 个答案:

答案 0 :(得分:0)

好的,我没有想到这个答案,有些工作人员在帮我,但是我想发布答案,所以这是一个解决方案:

var state_field = 'STATE'
var all_text = 'All states'
// Function to build states list
var build_select = function(feature_collection, field_name, all_text) {
  var field_list = ee.Dictionary(feature_collection.aggregate_histogram(field_name))
                     .keys().insert(0, all_text);
  return field_list.map(function(name) {
    return ee.Dictionary({'label': name, 'value': name})
  }).getInfo();
};

var states_list = build_select(fire_perim, state_field, all_text)
print(states_list)