Google Earth Engine:将 Feature 设置为 FeatureCollection,但不是整个数组
Google Earth Engine: set Feature to FeatureCollection, but not a whole Array
我尝试向大型功能集合中添加一个新功能,但使用函数 set() 它会覆盖每个功能的整个列表。但我的目的是将数组中的每个值添加到相应的 FeatureCollection 中。有人可以帮助我吗?
var table = ee.FeatureCollection(ft:.....blablabla);
**//Create an Array from the property DN in the FeatureCollection:**
var propert = table.limit(100).aggregate_array('DN');
*// Values less than 1 will be set to 1, larger than 1== 0:*
var limit = ee.Array(propert).lt(1);
print(limit);
//Function, that add the list! of features (limit) to new property (Class) in the FeatureCollection ("table").
var addFeature = function(ar) {
return ar.set({Class: limit});
//Map throw the Featurecollection table
var areaAdded = table.limit(100).map(addArea);
};
所以,如果你能看到,我的代码将整个数组 [limit] 添加到 FeatureCollection 中的每个 属性,而不是数组中的第一个值到第一个 属性 等等...
有人可以帮助我吗?谢谢
如果特征数量较少,可以将特征集合转换为列表,将数组转换为列表,zip()
将它们放在一起,在列表上映射一个函数以设置 属性。玩具示例:
var features = [
ee.Feature(ee.Geometry.Rectangle(30.01, 59.80, 30.59, 60.15), {name: 'Voronoi'}),
ee.Feature(ee.Geometry.Point(-73.96, 40.781), {name: 'Thiessen'}),
ee.Feature(ee.Geometry.Point(6.4806, 50.8012), {name: 'Dirichlet'})
];
var fromList = ee.FeatureCollection(features);
var array = ee.Array([2, 3, 5]);
var lists = fromList.toList(fromList.size()).zip(array.toList());
var features = ee.FeatureCollection(lists.map(function(l) {
return ee.Feature(ee.List(l).get(0)).set('foo', ee.List(l).get(1));
}));
print(features);
我尝试向大型功能集合中添加一个新功能,但使用函数 set() 它会覆盖每个功能的整个列表。但我的目的是将数组中的每个值添加到相应的 FeatureCollection 中。有人可以帮助我吗?
var table = ee.FeatureCollection(ft:.....blablabla);
**//Create an Array from the property DN in the FeatureCollection:**
var propert = table.limit(100).aggregate_array('DN');
*// Values less than 1 will be set to 1, larger than 1== 0:*
var limit = ee.Array(propert).lt(1);
print(limit);
//Function, that add the list! of features (limit) to new property (Class) in the FeatureCollection ("table").
var addFeature = function(ar) {
return ar.set({Class: limit});
//Map throw the Featurecollection table
var areaAdded = table.limit(100).map(addArea);
};
所以,如果你能看到,我的代码将整个数组 [limit] 添加到 FeatureCollection 中的每个 属性,而不是数组中的第一个值到第一个 属性 等等... 有人可以帮助我吗?谢谢
如果特征数量较少,可以将特征集合转换为列表,将数组转换为列表,zip()
将它们放在一起,在列表上映射一个函数以设置 属性。玩具示例:
var features = [
ee.Feature(ee.Geometry.Rectangle(30.01, 59.80, 30.59, 60.15), {name: 'Voronoi'}),
ee.Feature(ee.Geometry.Point(-73.96, 40.781), {name: 'Thiessen'}),
ee.Feature(ee.Geometry.Point(6.4806, 50.8012), {name: 'Dirichlet'})
];
var fromList = ee.FeatureCollection(features);
var array = ee.Array([2, 3, 5]);
var lists = fromList.toList(fromList.size()).zip(array.toList());
var features = ee.FeatureCollection(lists.map(function(l) {
return ee.Feature(ee.List(l).get(0)).set('foo', ee.List(l).get(1));
}));
print(features);