0

I'm trying to reclassify a NDWI raster into 1 for values >0.4 and 0 for <0.4. I understand that its possible to use .remap in case of discrete values, but not sure how to reclassify NDWI raster using a threshold. Ideally, I need a function which will reclassify each image in a collection.

Attached is the earth engine code I used (and struck)

// Import MODIS 8 day reflectance collection.
var collection = ee.ImageCollection('MODIS/006/MYD09A1')
                   .filterBounds(roi);

//roi refers to an area of interest
//start data and end date 
var iniDate = ee.Date.fromYMD(2016,1,1);
var endDate = ee.Date.fromYMD(2017,12,31);
print('MODIS', collection);

// MODIS bands
var modisBands = 
['sur_refl_b03','sur_refl_b04','sur_refl_b01','sur_refl_b02', 
'sur_refl_b06', 'sur_refl_b07'];
var lsBands = ['blue','green','red','nir','swir1','swir2'];

// helper function to extract the QA bits
function getQABits(image, start, end, newName) {
// Compute the bits we need to extract.
var pattern = 0;
for (var i = start; i <= end; i++) {
pattern += Math.pow(2, i);
}

// Return a single band image of the extracted QA bits, giving the band
// a new name.
return image.select([0], [newName])
            .bitwiseAnd(pattern)
            .rightShift(start);
}

// A function to mask out cloudy pixels.
function maskQuality(image) {
// Select the QA band.
var QA = image.select('StateQA');
// Get the internal_cloud_algorithm_flag bit.
var internalQuality = getQABits(QA,8, 13, 'internal_quality_flag');
// Return an image masking out cloudy areas.
return image.updateMask(internalQuality.eq(0));
}

// create cloud free composite
var noCloud = collection.filterDate(iniDate,endDate)
                        .map(maskQuality)
                        .select(modisBands,lsBands);

// Function to calculate and add an NDWI band
var addNDWI = function(image) {
return image.addBands(image.normalizedDifference(['green', 'swir1']));
};

// Add NDWI band to image collection
var noCloud = noCloud.map(addNDWI);

// create NDWI image collection
var NDWI = noCloud.select(['nd']);

// Reclassify each image in NDWI collection and calculate yearly composite
2

What about values equal to 0.4?

.gt(): greater than

.gte(): greater or equal than

Then:

// Reclassify each image in NDWI collection and calculate yearly composite
var reclassified = NDWI.map(function(img){
  return img.gte(0.4) // or gt()
})

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.