1.前提
由于某些数据的时间分辨率为8天或者16天,然而我们需要了解他的年总值或者均值,因此需要将整年的数据进行计算,为了方便起见,在GEE平台上进行操作,可以避免下载大量的数据到本地。
2. 按年合成数据(总值):以MOD17A2H.006数据为例
数据描述:
MOD17A2H.006: Terra Gross Primary Productivity 8-Day Global 500M 500m:
The MOD17A2H V6 Gross Primary Productivity (GPP) product is a cumulative 8-day composite with a 500m resolution. The product is based on the radiation-use efficiency concept and can be potentially used as inputs to data models to calculate terrestrial energy, carbon, water cycle processes, and biogeochemistry of vegetation.
数据波段:
该数据为8天合成数据
GEE code:
// 设置感兴趣区域
var geometry = table.geometry();
Map.centerObject(geometry, 5);
Map.addLayer(geometry, {color: "black"}, "ROI")
// 加载 MODIS/006/MOD17A2H 数据集
var dataset = ee.ImageCollection("MODIS/006/MOD17A2H").select('Gpp');
var gppVis = {
min: 0,
max: 600,
palette: ['bbe029', '0a9501', '074b03'],
};
Map.addLayer(dataset.filterBounds(geometry), gppVis, 'GPP');
// 定义起始年份和结束年份
var startYear = 2001;
var endYear = 2004;
// 定义一个函数用于按年合成并导出影像
var exportYearlyComposite = function(year) {
year = ee.Number(year);
// 过滤特定年份的影像集合
var yearCollection = dataset.filterBounds(geometry)
.filter(ee.Filter.calendarRange(year, year, 'year'));
// 合成影像
var yearImage = yearCollection.sum().multiply(0.1);
// 设置导出参数
var exportParams = {
image: yearImage.toFloat(),
description: 'modis_gpp_yearly_' + year.getInfo(),
folder: 'Gpp',
region: geometry,
scale: 500,
crs: "EPSG:4326",
maxPixels: 1e13,
};
// 导出影像
Export.image.toDrive(exportParams);
print(exportParams)
print(year)
print(yearCollection)
};
// 遍历每个年份并导出影像
for (var year = startYear; year <= endYear; year++) {
exportYearlyComposite(year);
}
控制台:
主要函数介绍:
ee.Filter.calendarRange(year, year, ‘year’):
3. 按月合成数据(均值):以MOD17A2H.006数据为例
代码解释: 合成指定月份之间的遥感数据,并求得统计数据(最大值、最小值、总值和平均值等)
合成每年7-8月份遥感数据,获得生长季平均值数据:
// 设置感兴趣区域
var geometry = table.geometry();
Map.centerObject(geometry, 5);
Map.addLayer(geometry, {color: "black"}, "ROI")
// 加载 MODIS/006/MOD17A2H 数据集
var dataset = ee.ImageCollection("MODIS/006/MOD17A2H").select('Gpp');
var gppVis = {
min: 0,
max: 600,
palette: ['bbe029', '0a9501', '074b03'],
};
//Map.addLayer(dataset.filterBounds(geometry), gppVis, 'GPP');
// 定义起始年份和结束年份
var startYear = 2020;
var endYear = 2022;
// 定义一个函数用于按年合成并导出影像
var exportYearlyComposite = function(year) {
year = ee.Number(year);
// 过滤特定年份的影像集合
var yearCollection = dataset.filterBounds(geometry)
.filter(ee.Filter.calendarRange(year, year, 'year'))
.filter(ee.Filter.calendarRange(7, 8, 'month'));
// 计算7月到8月的平均值影像
var compositeImage = yearCollection.mean().multiply(0.1);
// 设置导出参数
var exportParams = {
image: compositeImage.toFloat(),
description: 'modis_gpp_yearly_' + year.getInfo(),
folder: 'Gpp',
region: geometry,
scale: 500,
crs: "EPSG:4326",
maxPixels: 1e13,
};
// 导出影像
Export.image.toDrive(exportParams);
print(exportParams)
print(year)
print(yearCollection)
};
// 遍历每个年份并导出影像
for (var year = startYear; year <= endYear; year++) {
exportYearlyComposite(year);
}
控制台:
上述代码中,我在exportYearlyComposite函数中添加了一个额外的过滤器,用于过滤7月到8月的影像集合:.filter(ee.Filter.calendarRange(7, 8, ‘month’))。然后,我使用yearCollection.mean()来计算7月到8月的平均值影像,并将其命名为compositeImage。最后,将compositeImage导出到Google Drive。