I am able to remove null value from a list using the following methods:
print(ee.List([1,7, null, 3,5]).filter(ee.Filter.gt('item',0)))
print(ee.List([1,7, null, 3,5]).filter(ee.Filter.neq('item', null)))
However, I got the error ImageCollection (Error) List.get: List is empty (index is 1).
in my code.
The daily LSTs are put into a list and I am trying to extract the second largest LST for study years.
What I am doing wrong here?
Thanks for your help in advance.
Here is the code:
var startDate = ee.Date('2001-01-01'); // set start time for analysis
var endDate = ee.Date('2001-12-31'); // set end time for analysis
// calculate the number of year to process
var nyears = ee.Number(endDate.difference(startDate,'year'));
//init a time band
var createTimeBand= function(image) {
return image.addBands(image.metadata('system:time_start')
.divide(1e18))
// .divide(1000*60*60*24*365))
}
var sst = ee.ImageCollection('MODIS/006/MOD11A1').select('LST_Day_1km')
.filterDate(startDate, endDate)
//.map(createTimeBand)
var byyearMin = ee.ImageCollection(
// map over each month
ee.List.sequence(0,nyears).map(function (n) {
// calculate the offset from startDate
var ini = startDate.advance(n,'year');
// advance just one month
var end = ini.advance(1,'year');
var sortedDays = sst.filterDate(ini,end)
.sort('LST_Day_1km').filter(ee.Filter.neq('item', null))//.filter(ee.Filter.neq('item', ""))
.toList(sst.size())
//print(ee.List(sst))
//var sortedDays_clean = sortedDays.replaceAll(" ", 0)
//var sortedDays_clean = sortedDays.filter(ee.Filter.gt('item',1))
var secondLargest = ee.List(sortedDays.get(1))
//var secondSmallest = ee.List(sortedDays.get(-1))
var collection = ee.Image(secondLargest)
//.addBands(secondSmallest).rename(['secondLargest', 'secondSmallest'])
.multiply(0.02)
.subtract(273.15)
return collection
.set('system:time_start', ini.millis()) //convert time to number
.set('Date', ee.Date(ini))
}));
print(byyearMin)