I want to generate the median composite image of ndwi images of several dates in google earth engine. How can I do that and how to shorten the code itelf?
var image5 = L5.filterDate('1987-01-01','2003-12-31').filterMetadata('CLOUD_COVER', 'less_than', 5)
.filterBounds(geometry)
var image8 = L8.filterDate('2013-01-01','2019-12-31').filterMetadata('CLOUD_COVER', 'less_than', 5)
.filterBounds(geometry)
var image5_set2 = L5.filterDate('2008-01-01','2012-12-31').filterMetadata('CLOUD_COVER', 'less_than', 5)
.filterBounds(geometry)
var collection = image5.merge(image5_set2).merge(image8)//sort('system:time_start');
print(collection)
// Export.table.toDrive(collection)
// Load an image.
var image1 = ee.Image('LANDSAT/LT05/C01/T1_SR/LT05_150044_19930211')
var image2 = ee.Image('LANDSAT/LC08/C01/T1_SR/LC08_150044_20170402')
var image3 = ee.Image('LANDSAT/LT05/C01/T1_SR/LT05_150044_19950321')
var image4 = ee.Image('LANDSAT/LC08/C01/T1_SR/LC08_150044_20180421')
var image5 = ee.Image('LANDSAT/LC08/C01/T1_SR/LC08_150044_20140205')
var image6 = ee.Image('LANDSAT/LT05/C01/T1_SR/LT05_150045_19960408')
var image7 = ee.Image('LANDSAT/LT05/C01/T1_SR/LT05_150045_19970411')
var image8 = ee.Image('LANDSAT/LC08/C01/T1_SR/LC08_150044_20190424')
.select(['B1','B2', 'B3', 'B4', 'B5', 'B6', 'B7']);
// Define the visualization parameters.
// var vizParams = {
// bands: ['B4', 'B3', 'B2' ],
// min: 300,
// max: 1500,
// gamma: [0.95, 1.1, 1]
// };
// // Center the map and display the image.
// Map.setCenter(69.704, 22.546, 10);
// Map.addLayer(image.clip(geometry), vizParams, 'false color composite');
// Export.image.toDrive({image:image,
// scale: 30,
// region: roi
// })
var green1 = image1.select('B2')
var nir1 = image1.select('B4')
var ndwi1 = green1.subtract(nir1).divide(green1.add(nir1));
var green2 = image2.select('B3')
var nir2 = image2.select('B5')
var ndwi2 = green2.subtract(nir2).divide(green2.add(nir2));
var green3 = image3.select('B2')
var nir3 = image3.select('B4')
var ndwi3 = green3.subtract(nir3).divide(green3.add(nir3));
var green4 = image4.select('B3')
var nir4 = image4.select('B5')
var ndwi4 = green4.subtract(nir4).divide(green4.add(nir4));
var green5 = image5.select('B3')
var nir5 = image5.select('B5')
var ndwi5 = green5.subtract(nir5).divide(green5.add(nir5));
var green6 = image6.select('B2')
var nir6 = image6.select('B4')
var ndwi6 = green6.subtract(nir6).divide(green6.add(nir6));
var green7 = image7.select('B2')
var nir7 = image7.select('B4')
var ndwi7 = green7.subtract(nir7).divide(green7.add(nir7));
var green8 = image.select('B3')
var nir8 = image.select('B5')
var ndwi8 = green8.subtract(nir8).divide(green8.add(nir8));
Map.addLayer(ndwi1.clip(geometry))
Map.addLayer(ndwi2.clip(geometry))
Map.addLayer(ndwi3.clip(geometry))
Map.addLayer(ndwi4.clip(geometry))
Map.addLayer(ndwi5.clip(geometry))
Map.addLayer(ndwi6.clip(geometry))
Map.addLayer(ndwi7.clip(geometry))
Map.addLayer(ndwi8.clip(geometry))
Best Answer
The following is a more efficient version of your operation and includes an example of calculating a median composite.
Code Editor script link: https://code.earthengine.google.com/4af664091ef27ed549077ae590b29362