我创建了一个 Sentinel 2 图像列表。我还从 DATATAKE_IDENTIFIER 字段中提取了日期值,并将其粘贴回我列表中每个图像的 ee.Date 类型的名为“DATE”的属性。现在,我正在尝试检索按时间顺序最接近用户指定的感兴趣日期的图像。例如,如果我的日期为:5 月 5 日、5 月 10 日、5 月 15 日、5 月 20 日,用户选择 14 日-我想在 5 月 15 日回来吗?有人可以帮忙吗?这是我的代码:
var startDate = ee.Date('2017-07-01');
var finishDate = ee.Date('2017-07-31');
//Create imageCollection with the sentinel2 data and the date filters
var interestImageCollection = ee.ImageCollection(sentinel2_1C_ImageCollection)
.filterBounds(interestRectangle) //changed here your geometrical shape
.filterDate(startDate, finishDate)
.sort('CLOUDY_PIXEL_PERCENTAGE', false);
//function which will extract the date from the 'DATATAKE_IDENTIFIER' field and add it as a new one to every image
var add_date = function(interestImageCollection){
//iterate over the image Collection
//.map must always return something
return interestImageCollection.map(function(image){
//take the image property containing the date
var identifier = ee.String(image.get('DATATAKE_IDENTIFIER'));
//regex
var splitOn = "_|T";
//split
var splitted = identifier.split(splitOn,"");
var date = ee.String(splitted.get(1));
//DATE OPTION
var year = ee.Number.parse(date.slice(0,4));
var month = ee.Number.parse(date.slice(4,6));
var day = ee.Number.parse(date.slice(6,8));
var dateTaken = ee.Date.fromYMD(year, month, day);
return image.set('DATE',dateTaken);
});
};
//list conversion
var subList = interestImageCollection.toList(interestImageCollection.size());
//get the image with the chronologically closest date to my date of interest
var dateOfInterest = ee.Date('2017-07-10');
对于编程语言,我会使用一个循环,在每次迭代时检查我想要的日期和检索到的日期之间的差异是否低于任何以前的值并更新一些时间变量。但我认为地球引擎有一种更自动化的方式来做到这一点。
我还尝试将 sort 函数与自定义比较器一起使用,但效果不佳。
还有一些常规的 javascript(如最接近的)函数似乎在地球引擎中不起作用。
潇湘沐
相关分类