I'm trying to convert a list into a Feature Collection in Google Earth Engine in order to export as CSV file. I'm getting this error
FeatureCollection (Error) Collection, argument 'features': Invalid type. Expected type: List. Actual type: List<Dictionary>.
How could I solve this problem? My sample code is as below
https://code.earthengine.google.com/69b6d4dacc25d1b53cebf69793e2a8cb
// Paracou
var aoi =
/* color: #0b4a8b */
/* shown: false */
/* displayProperties: [
{
"type": "rectangle"
},
{
"type": "rectangle"
},
{
"type": "rectangle"
},
{
"type": "rectangle"
}
] */
ee.Geometry.MultiPolygon(
[[[[-52.6965668016105, 4.103697563685889],
[-52.6965668016105, 4.028527912014533],
[-52.66257784897378, 4.028527912014533],
[-52.66257784897378, 4.103697563685889]]],
[[[-52.944764020870714, 5.289271129398686],
[-52.944764020870714, 5.247049874677615],
[-52.91446578783849, 5.247049874677615],
[-52.91446578783849, 5.289271129398686]]],
[[[11.550656910465511, -0.15383260074272592],
[11.550656910465511, -0.240177754768104],
[11.645242329166683, -0.240177754768104],
[11.645242329166683, -0.15383260074272592]]],
[[[9.85547793421202, -1.8999002299831818],
[9.85547793421202, -1.9469089457924809],
[9.892556791633895, -1.9469089457924809],
[9.892556791633895, -1.8999002299831818]]]], null, false);
// Load Sentinel-2 spectral reflectance data.
var filter = ee.Filter.and(
ee.Filter.bounds(point),
ee.Filter.date('2019-01-01', '2020-01-01')
)
var S2composite = ee.ImageCollection(
ee.Join.saveFirst('cloudProbability').apply({
primary: ee.ImageCollection('COPERNICUS/S2_SR').filter(filter),
secondary: ee.ImageCollection('COPERNICUS/S2_CLOUD_PROBABILITY').filter(filter),
condition: ee.Filter.equals({leftField: 'system:index', rightField: 'system:index'})
})
).map(function (image) {
var cloudFree = ee.Image(image.get('cloudProbability')).lt(30)
return image.updateMask(cloudFree).divide(10000)
})
.select(
['B2','B3','B4','B8','B11','B12'],
['Blue','Green','Red','NIR','SWIR1','SWIR2'])
.map(function(image) {
var ndvi = image.expression(
'((NIR - Red) / (NIR + Red))', {
'NIR': image.select('NIR'),
'Red': image.select('Red')
}).rename('NDVI');
return image.addBands(ndvi,null,true);
})
var median = S2composite.median();
var neighborhoods = median.neighborhoodToArray(ee.Kernel.square(1));
var extracted = neighborhoods.reduceRegions({
collection: point,
reducer: ee.Reducer.first(),
scale: 25, // meters
tileScale:16
});
Map.centerObject(aoi, 3)
Map.addLayer(point);
print(point.limit(100))
print(extracted.limit(10));
var extracted_list = extracted.toList(extracted.size());
var extracted_list = extracted_list.slice(0,20);
var medianBandDict = ee.FeatureCollection(extracted_list.map(function (ele){
var id = ee.Feature(ele).id();
var geometry = ee.Feature(ele).geometry();
var IDS = ee.Feature(ele).get('IDS');
var blue_median = ee.Array(ee.Feature(ele).get('Blue')).toList()
.flatten().reduce(ee.Reducer.median());
var green_median = ee.Array(ee.Feature(ele).get('Green')).toList()
.flatten().reduce(ee.Reducer.median());
var ndvi_median = ee.Array(ee.Feature(ele).get('NDVI')).toList()
.flatten().reduce(ee.Reducer.median());
var nir_median = ee.Array(ee.Feature(ele).get('NIR')).toList()
.flatten().reduce(ee.Reducer.median());
var red_median = ee.Array(ee.Feature(ele).get('Red')).toList()
.flatten().reduce(ee.Reducer.median());
var swir1_median = ee.Array(ee.Feature(ele).get('SWIR1')).toList()
.flatten().reduce(ee.Reducer.median());
var swir2_median = ee.Array(ee.Feature(ele).get('SWIR2')).toList()
.flatten().reduce(ee.Reducer.median());
return {'id':id,
'IDS' : IDS,
'geometry' :geometry,
'blue_median': blue_median,
'green_median' :green_median,
'ndvi_median': ndvi_median,
'nir_median': nir_median,
'red_median': red_median,
'swir1_median':swir1_median,
'swir2_median': swir2_median
};
})).flatten();
print("medianBandDict", medianBandDict);
Export.table.toDrive({
collection: medianBandDict,
description:'Kernel',
fileFormat: 'CSV'
});