I want to mask water bodies with two different conditions and then add the two indexed layers together to create one layer with different values of 0 (no water), 1 (water: based on index 1), 2 (water: based on index2) and 3 (water: based on both index 1 and 2). here is the code, I don't get any error but the final water band has pixel values of 3 for all the pixels. I can't figure out where the problem is. What am I doing wrong?
s2 = s2.filterBounds(region)
.filterDate('2021-01-16', '2021-01-18')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 35));
function mNDWI(img){
var img = ee.Image(img).divide(10000)
var mndwi = img.normalizedDifference(['B3', 'B11']).rename('mNDWI')
.copyProperties(img,['system:time_start'])
return img.addBands(mndwi)
}
function Fisher(img){
var img = ee.Image(img).divide(10000)
var fisher = img.expression('1.7204 + 171 * Green + 3 * Red - 70 * NIR - 45 * SWIR1 - 71 * SWIR2',
{'Green':img.select('B3'),'Red':img.select('B4'),
'NIR':img.select('B8'),'SWIR1':img.select('B11'),
'SWIR2':img.select('B12')}).rename('Fisher').copyProperties(img, ['system:time_start'])
return img.addBands(fisher)
}
var ic_in= s2.map(mNDWI).map(Fisher)
function water_thresholding(img){
var img = ee.Image(img)
var rvrs = img.select('mNDWI').gt(-0.3).rename('rivers')
var fi_index = img.select('Fisher').gt(0.63)
var mndwi_index = img.select('mNDWI').gt(0)
var otrs = (fi_index.or(mndwi_index)).remap([1, 0], [2, 0], null).rename('others')
var water = (rvrs.add(otrs)).rename('Water')
return img.addBands(water)
}
var s2_ic_msk = ic_in.map(water_thresholding)
print(s2_ic_msk.first())
Map.addLayer(s2_ic_msk.select('Water'), {}, 'Water' )