背景:我想统计海水的长期温度,一共有70个左右的点,这个点数据是我上传的shp文件。
下图是我的一个点在2000年到2019年每个月的温度合成数据,可以看到效果挺不错的。
要完成这个代码需要以下几个步骤:
1.筛选数据;
var sst = modis
.select('sst')
.filterDate(ee.Date('2000-01-01'), ee.Date('2019-12-31'));
2.获得每一月的合成值;
var years = ee.List.sequence(2000, 2019);
//获得每一月的合成值
var byMonthYear = ee.ImageCollection.fromImages(
years.map(function(y) {
return months.map(function (m) {
return sst
.filter(ee.Filter.calendarRange(y, y, 'year'))
.filter(ee.Filter.calendarRange(m, m, 'month'))
.mean()
.set('system:month', m).set('system:year', y);
});}).flatten());
3.根据每个月的合成值制表格;
//根据每个月的合成值制表格
var temp_trend = ui.Chart.image.series({
imageCollection: byMonthYear,
region: roi,
reducer: ee.Reducer.median(),
scale: 1000,
// xProperty: 'system:time_start'
xProperty: 'system:index'
})
.setOptions({
lineWidth: 1,
pointSize: 3,
trendlines: {0: {
color: 'CC0000'
}},
title: "每个月的合成温度"+Point_name,
vAxis: {title:"单位:摄氏度℃"}});
print(temp_trend);
}
4.循环所有矢量点,获取所有点的温度。
//循环矢量
print(river)
var woredaNames = river.aggregate_array("FID");
for (var woreda=0; woreda < 1 ;woreda++){
// Focus on one region:
var point_name=woreda;
var focusRegion = river.filter(ee.Filter.eq('FID', woreda));
point_tem(focusRegion,point_name)
}
这个链接是我的gee温度统计代码,可以给读者参考一下。
https://code.earthengine.google.com/e3a8f4d389b85331e4f047aacc32b7bb