Google Earth Engine Error – Fixing Dictionary.set Parameter ‘value’ is Required

classificationgoogle-earth-engineland-cover

I'm attempting to calculate the proportion of landcover classes for each county in Oregon in GEE and export values as a CSV, but I get the following error: Error: Error in map(ID=00000000000000000000): Dictionary.set: Parameter 'value' is required. (Error code: 3). I see this question was asked before, but not answered. Can someone help me address this error?
Here is my Code.

snippet of the code:

//calculate area of each class for each county in the shapefile
var calculateClassArea = function(feature) {
  var areaImage = ee.Image.pixelArea().addBands(ORlandcover);
  
  var areas = areaImage.reduceRegion({
    reducer: ee.Reducer.sum().group({
      groupField: 1,
      groupName: 'class',
    }),
      geometry: feature.geometry(),
      scale: 30,
      maxPixels: 10364007075
  });
  var classAreas = ee.List(areas.get('groups'));
  var classAreasLists = classAreas.map(function(item) {
    var areaDict = ee.Dictionary(item);
    var classNumber = ee.Number(
      areaDict.get('class')).format();
      var area2 = ee.Number(
        areaDict.get('sum')).divide(1e6).round();
        return ee.List([classNumber, area2]);
  });
  var result = ee.Dictionary(classAreasLists.flatten());
  var county = feature.get('Name');
  return ee.Feature(
    feature.geometry(),
    result.set('county', county));
};

var countyAreas = table.map(calculateClassArea);
//print(countyAreas);

var classes = ee.List.sequence(1, 16);
var outputFields = ee.List(
    ['county']).cat(classes).getInfo();
 
Export.table.toDrive({
    collection: countyAreas,
    description: 'class_area_by_county',
    folder: 'GEO Stuff',
    fileNamePrefix: 'class_area_by_county',
    fileFormat: 'CSV',
    selectors: outputFields
    })

Best Answer

Issue can be solved as follows ('set' method is not adequately used with ee.Feature object and it is also eliminated selectors parameter in Export.table):

//calculate area of each class for each county in the shapefile
var calculateClassArea = function(feature) {
  var areaImage = ee.Image.pixelArea().addBands(ORlandcover);
  
  var areas = areaImage.reduceRegion({
    reducer: ee.Reducer.sum().group({
      groupField: 1,
      groupName: 'class',
    }),
      geometry: feature.geometry(),
      scale: 30,
      maxPixels: 10364007075
  });
  var classAreas = ee.List(areas.get('groups'));
  var classAreasLists = classAreas.map(function(item) {
    var areaDict = ee.Dictionary(item);
    var classNumber = ee.Number(
      areaDict.get('class')).format();
      var area2 = ee.Number(
        areaDict.get('sum')).divide(1e6).round();
        return ee.List([classNumber, area2]);
  });
  var result = ee.Dictionary(classAreasLists.flatten());
  var county = feature.get('Name');
  return ee.Feature(feature.set('result', result));
};

var countyAreas = table.map(calculateClassArea);
print("countyAreas", countyAreas);

var classes = ee.List.sequence(1, 16);
var outputFields = ee.List(
    ['county']).cat(classes).getInfo();

print(outputFields);

Export.table.toDrive({
    collection: countyAreas,
    description: 'class_area_by_county',
    folder: 'GEO Stuff',
    fileNamePrefix: 'class_area_by_county',
    fileFormat: 'CSV',
    });

After running the task in GEE code editor (link here), without any error, I got following CSV file opened with LibreOffice.

enter image description here

Related Question