我正在尝试绘制图表并从Google Earth Engine获取数据。我正在Earth Engine中使用MODIS-Aqua / L3SMI数据。
我在内置功能中使用了地球引擎,以每年的每年的天数比较平均海面温度。但是,它非常繁忙,想计算每月平均值,然后绘制数据集的不同年份。使用代码here,我可以获得数据集中所有年份的每月平均值。
var sst = ee.ImageCollection('NASA/OCEANDATA/MODIS-Aqua/L3SMI').select('sst').filterDate(ee.Date('2013-01-01'), ee.Date('2017-12-31'))
var byMonth = ee.ImageCollection.fromImages(
months.map(function (m) {
return sst.filter(ee.Filter.calendarRange(m, m, 'month'))
.select(0).mean()
.set('month', m);
}));
有没有一种方法可以更改此代码,以便可以按年平均每月的平均值进行绘制?这样,您每年在图上会得到不同的线条,可以用作视觉比较?
答案 0 :(得分:1)
要计算每年每个月的平均值,您需要映射可能的月份,并仅按该月份筛选映射中的每个迭代(此处为another post about nesting map functions in EE)。对于您的特定示例,这是我的处理方式:
var startDate = ee.Date('2013-01-01'); // set start time for analysis
var endDate = ee.Date('2017-12-31'); // set end time for analysis
// calculate the number of months to process
var nMonths = ee.Number(endDate.difference(startDate,'month')).round();
var point = ee.Geometry.Point([-87.02617187499999, 28.05714582901274]);
var sst = ee.ImageCollection('NASA/OCEANDATA/MODIS-Aqua/L3SMI').select('sst')
.filterDate(startDate, endDate);
var byMonth = ee.ImageCollection(
// map over each month
ee.List.sequence(0,nMonths).map(function (n) {
// calculate the offset from startDate
var ini = startDate.advance(n,'month');
// advance just one month
var end = ini.advance(1,'month');
// filter and reduce
return sst.filterDate(ini,end)
.select(0).mean()
.set('system:time_start', ini);
}));
print(byMonth);
Map.addLayer(ee.Image(byMonth.first()),{min: 15, max: 35},'SST');
// plot full time series
print(
ui.Chart.image.series({
imageCollection: byMonth,
region: point,
reducer: ee.Reducer.mean(),
scale: 1000
}).setOptions({title: 'SST over time'})
);
// plot a line for each year in series
print(
ui.Chart.image.doySeriesByYear({
imageCollection: byMonth,
bandName:'sst',
region: point,
regionReducer: ee.Reducer.mean(),
scale: 1000
}).setOptions({title: 'SST over time'})
);
以下是代码的链接:https://code.earthengine.google.com/bb2f654d443d70a91fa89c8fb3cf601d
我不太确定要在图表中查找什么,因此我提供了两种选择:(1)全时序列图和(2)DOY的图,就像上面的那样,每年都有一条线
我希望这会有所帮助!