0

I'm new to GEE and I'm trying to do a machine learning supervised classification using random forest. it turns out that I made a code taking different parts of other codes and it works well for small areas, but when I try to apply it to a larger area it only works in a part of the area, I already reviewed the code and I can't find the error. Can someone help me? There is my code: https://code.earthengine.google.com/d2d80d91fac3f3dca413d1ba5c1209ae

function maskS2clouds(image) {
  var qa = image.select('QA60');

  // Bits 10 and 11 are clouds and cirrus, respectively.
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;

  // Both flags should be set to zero, indicating clear conditions.
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
      .and(qa.bitwiseAnd(cirrusBitMask).eq(0));

  return image.updateMask(mask).divide(10000);
}

// Map the function over one month of data and take the median.
// Load Sentinel-2 TOA reflectance data.
var image = ee.ImageCollection('COPERNICUS/S2').filterBounds(studyarea)
                  .filterDate('2022-01-01', '2023-01-31')
                  // Pre-filter to get less cloudy granules.
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
                  .map(maskS2clouds);
                  
                  



var rgbVis = {
  min: 0.0,
  max: 0.3,
  bands: ['B5', 'B3', 'B2'],
};

Map.centerObject(studyarea);
Map.addLayer(image.median().clip(studyarea), rgbVis, 'RGB');

var image = ee.Image(image.first());
print(image)

Map.addLayer(image,{min:0,max:3000,bands:"B4,B3,B2"}, "LT7");



// set the selection bands
var predictionBands = image.bandNames();
print (predictionBands);

var trainingData = vegetacao.merge(agua).merge(agro).merge(urban);

// sample the regions
var classifierTraining = image.select(predictionBands).sampleRegions(
                      {collection: trainingData, 
                        properties: ['land_class']
                       });

//train the classifier
var classifier =  ee.Classifier.smileRandomForest(10000).train({features:classifierTraining, 
                                                    classProperty:'land_class',
                                                  inputProperties: predictionBands});

// get the classified image
var classified = image.select(predictionBands).classify(classifier).clip(studyarea);

var classifiedImage = image.classify(classifier).clip(studyarea);

var Palette = [
  
  '#1ffaff', //  vegetacao
  '#0da715', // agua
  '#bf04c2', // agro
  '#f6ff17', // urban
  
];


//add the classified image to the map
Map.addLayer(classified,  {min: 1, max: 4, palette: Palette}, "LULC");```
3
  • You have selected the first image from the image collection, which may not cover your study area. You can try doing image.median().
    – Padmanabha
    Commented Apr 23, 2023 at 6:59
  • ithis error appears -> LULC: Tile error: Image.reduceRegions: The default WGS84 projection is invalid for aggregations. Specify a scale or crs & crs_transform. Commented Apr 23, 2023 at 15:00
  • Need to set the scale property for sampleRegions
    – Padmanabha
    Commented Apr 23, 2023 at 19:28

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.