0

I carried out join operation to help in smoothing out my images in a Landsat ImageCollection by getting at least 3 Images in a specified time window, obtain the median and then adding those images to the ImageCollection. I expected to obtain an ImageCollection that I could still carry out some filter functions to create a time series with the median images, but it didn't work.

// 1. selecting the time window
var days = 32;
var milli = ee.Number(days).multiply(1000*24*60*60)
console.log(milli)

var join = ee.Join.saveAll({
  matchesKey:"images"
})

// 2. Apply the filter
var dif_filter = ee.Filter.maxDifference({
  difference:milli,
  leftField:"system:time_start",
  rightField:"system:time_start"
})


// 3. Apply the join
var joined_collection = join.apply({
  primary: original_collection,
  secondary:original_collection,
  condition:dif_filter
})

// Adding the median images to our collection
function medianCalculator(image){
  var imageGetter = ee.ImageCollection.fromImages(image.get("images"))
  var medianImage = imageGetter.reduce(ee.Reducer.median())
  return ee.Image(image).addBands(medianImage).select("NDVI_median", "EVI_median", "NDVI", "EVI")
}

// collection with smoothed Images
var collection_2 = joined_collection.map(medianCalculator)
print(collection_2)

I wanted to carry out some filters on "collection_2" but there was an error, "Line 110: collection_2.filter(...).median is not a function". What am I missing. I suspect that after performing the Join, the ImageCollection got turned into a FeatureCollection so I tried looking for ways of converting a FeatureCollection to an ImageCollection...to no avail.

0 Answers0