Google Earth Engine – Image Collection Minimum and Maximum Extraction in Google Earth Engine

google-earth-enginemodisndvi

I've wrote this code but it makes error about min and max image?

var modis = ee.ImageCollection("MODIS/006/MOD13Q1")
.filterBounds(geometry)
.filterDate("2000-01-01","2001-01-01")
.select("NDVI");

print(modis);

var mod13 = modis.map(function(img){
  return img.multiply(0.0001)
  .copyProperties(img,['system:time_start','system:time_end']);
});

print(mod13);

var vci = mod13.map(function(img){
 var id = img.id();
 var min =  img.reduceRegion(ee.Reducer.min(),geometry,250);
 var max = img.reduceRegion(ee.Reducer.max(),geometry,250);
 return img.expression(
   "(NDVI-min)/(max-min)",{
     "NDVI" : img,
     "max" : max,
     "min" : min
   }).copyProperties(img,['system:time_start','system:time_end']);
});

Best Answer

img.reduceRegion returns a dictionary with the result of the reduction in each band, so you have to get the result for the band that you are interested in, which I understand is NDVI.

var modis = ee.ImageCollection("MODIS/006/MOD13Q1")
//.filterBounds(geometry) // no need to filter by bounds in MODIS
.filterDate("2000-01-01","2001-01-01")
.select("NDVI");

print(modis);

var mod13 = modis.map(function(img){
  return img.multiply(0.0001)
  .copyProperties(img,['system:time_start','system:time_end']);
});

print(mod13);

var vci = mod13.map(function(img){
 var id = img.id();
 var min =  img.reduceRegion(ee.Reducer.min(), geometry,250).get('NDVI');
 var max = img.reduceRegion(ee.Reducer.max(), geometry,250).get('NDVI');
 return img.expression(
   "(NDVI-min)/(max-min)",{
     "NDVI" : img,
     "max" : ee.Number(max),
     "min" : ee.Number(min)
   }).copyProperties(img,['system:time_start','system:time_end']);
});
print(vci)