使用 GEE 代码编辑器从从特征中提取的现有列表中创建唯一值列表
Using GEE code editor to create unique values list from existing list pulled from feature
我在 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)
好吧,我没有想出这个答案,工作中的一些人帮助了我,但我想 post 答案所以这是一个解决方案:
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)
我在 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)
好吧,我没有想出这个答案,工作中的一些人帮助了我,但我想 post 答案所以这是一个解决方案:
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)