GEE | 2000年至今MODIS蒸散发ET变化分析 (日/月/季节/年)

职场   2024-12-24 09:49   陕西  

一、说明

MOD16A2.061是基于Penman-Monteith方程的8天复合蒸散量产品,空间分辨率为500米,时间范围自2001年起至今。基于GEE对ET进行时间变化分析,包括日、月、季节和年,并导出对应的栅格数据。

各位同学可以根据需求更改研究区、时间段和分辨率,当然也可以分析其他产品数据。

二、日变化特征

var geometry = table;Map.centerObject(geometry, 7);
var dataset = ee.ImageCollection("MODIS/006/MOD16A2") .filterDate('2018-01-01', '2020-12-31') .filterBounds(geometry) .select('ET');
var convertET = function(image) { var img = image.multiply(0.1); return img.set('system:time_start', image.get('system:time_start'));};dataset = dataset.map(convertET);
if (dataset.size().getInfo() === 0) { print('Error: No data found for the given time and region');} else { print(ui.Chart.image.series(dataset, geometry, ee.Reducer.mean(), 1000));}
function exportImageCollection(imgCol) { var indexList = imgCol.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list"); indexList.evaluate(function(indexs) { for (var i = 0; i < indexs.length; i++) { var image = imgCol.filter(ee.Filter.eq("system:index", indexs[i])).first(); image = image.clip(geometry); Export.image.toDrive({ image: image, description: 'MODIS_ET_' + indexs[i], fileNamePrefix: 'MODIS_ET_' + indexs[i], folder: 'MODIS_ET_Images', region: geometry, scale: 1000, crs: "EPSG:4326", maxPixels: 1e13 }); } });}
exportImageCollection(dataset);

三、月尺度

var geometry = ee.FeatureCollection('users/yusuhenhao/beijing');Map.centerObject(geometry, 8);
var dataset = ee.ImageCollection("MODIS/006/MOD16A2").select('ET');
var monthlyET = ee.FeatureCollection([]);
for (var i = 2015; i <= 2020; i++) { for (var j = 1; j <= 12; j++) { var startDate = ee.Date.fromYMD(i, j, 1); var endDate = startDate.advance(1, 'month').advance(-1, 'day'); var data_collection = dataset.filterDate(startDate, endDate).sum(); var monthlySum = data_collection.multiply(0.1).clip(geometry).set({ 'year': i, 'month': j, 'system:time_start': startDate.millis() }); var meanET = monthlySum.reduceRegion({ reducer: ee.Reducer.mean(), geometry: geometry, scale: 1000, maxPixels: 1e13 }).get('ET'); var feature = ee.Feature(null, { 'time': startDate.format('YYYY-MM'), 'ET_mean': meanET }); monthlyET = monthlyET.merge(ee.FeatureCollection([feature])); Export.image.toDrive({ image: monthlySum, description: i + '_' + j + '_ET', fileNamePrefix: i + '_' + j + '_ET', folder: 'MOD17A2H_ET', scale: 1000, region: geometry, crs: "EPSG:4326", maxPixels: 1e13 }); }}
var chart = ui.Chart.feature.byFeature(monthlyET, 'time', 'ET_mean') .setChartType('LineChart') .setOptions({ title: 'Monthly ET (2018-2020)', hAxis: { title: 'Time', slantedText: true, slantedTextAngle: 45 }, vAxis: {title: 'ET (mm)'}, lineWidth: 2, pointSize: 4, colors: ['#1f77b4'] });
print(chart);

四、季节尺度

春:3-5月,夏:6-8月,秋:9-11月,冬:12-次年2月

var geometry = table;
var etCollection = ee.ImageCollection("MODIS/006/MOD16A2").select('ET');
var seasons = { 'spring': [3, 4, 5], 'summer': [6, 7, 8], 'autumn': [9, 10, 11], 'winter': [12, 1, 2]};
var table = ee.List([]);
for (var year = 2015; year <= 2020; year++) { for (var season in seasons) { var months = seasons[season]; var startYear = year; var endYear = (season === 'winter') ? year + 1 : year;
var seasonalCollection = ee.ImageCollection( months.map(function(month) { var startDate = ee.Date.fromYMD(month === 12 ? year : startYear, month, 1); var endDate = startDate.advance(1, 'month'); return etCollection.filterDate(startDate, endDate).sum().multiply(0.1); // 单位转换为毫米 }) );
var seasonalET = seasonalCollection.sum().clip(geometry);
var meanET = seasonalET.reduceRegion({ reducer: ee.Reducer.mean(), geometry: geometry, scale: 500, maxPixels: 1e13 }).get('ET');
var row = ee.Feature(null, { 'Year': year, 'Season': season, 'Mean_ET': meanET });
table = table.add(row);
Export.image.toDrive({ image: seasonalET, description: year + '_' + season + '_ET', fileNamePrefix: year + '_' + season + '_ET', scale: 500, crs: 'EPSG:4326', region: geometry, maxPixels: 1e13, folder: 'seasonal_ET_data' }); }}
var featureCollection = ee.FeatureCollection(table);
Export.table.toDrive({ collection: featureCollection, description: 'Seasonal_ET_Table', fileNamePrefix: 'seasonal_et', fileFormat: 'CSV'});

五、生长季

代码中设置为了4-9月,可以根据研究区的生长季时间修改。

var geometry = table;
Map.centerObject(geometry, 6);
var dataset = ee.ImageCollection("MODIS/006/MOD16A2").select('ET');
var annualET = ee.FeatureCollection([]);
for (var i = 2001; i <= 2020; i++) { var startDate = ee.Date.fromYMD(i, 5, 1); var endDate = ee.Date.fromYMD(i, 9, 30);
var yearlyData = dataset.filterDate(startDate, endDate).sum(); var yearlyET = yearlyData.multiply(0.1).clip(geometry).set({ 'year': i, 'system:time_start': startDate.millis() });
var meanET = yearlyET.reduceRegion({ reducer: ee.Reducer.mean(), geometry: geometry, scale: 5000, maxPixels: 1e13 }).get('ET');
var feature = ee.Feature(null, { 'year': i, 'ET_mean': meanET });
annualET = annualET.merge(ee.FeatureCollection([feature]));
Export.image.toDrive({ image: yearlyET, description: i + "_ET_SZJ", fileNamePrefix: i + "_ET_SZJ", folder: 'Annual_ET', scale: 5000, region: geometry, crs: "EPSG:4326", maxPixels: 1e13 });}
var chart = ui.Chart.feature.byFeature(annualET, 'year', 'ET_mean') .setChartType('LineChart') .setOptions({ title: 'Annual ET (2001-2005)', hAxis: {title: 'Year'}, vAxis: {title: 'Mean ET (mm)'}, lineWidth: 2, pointSize: 4, colors: ['#1f77b4'] });
print(chart);

六、年度变化

var geometry = table;
Map.centerObject(geometry, 6);
var dataset = ee.ImageCollection("MODIS/006/MOD16A2").select('ET');
var annualET = ee.FeatureCollection([]);
for (var i = 2001; i <= 2020; i++) { var startDate = ee.Date.fromYMD(i, 1, 1); var endDate = ee.Date.fromYMD(i, 12, 31);
var yearlyData = dataset.filterDate(startDate, endDate).sum(); var yearlyET = yearlyData.multiply(0.1).clip(geometry).set({ 'year': i, 'system:time_start': startDate.millis() });
var meanET = yearlyET.reduceRegion({ reducer: ee.Reducer.mean(), geometry: geometry, scale: 5000, maxPixels: 1e13 }).get('ET');
var feature = ee.Feature(null, { 'year': i, 'ET_mean': meanET });
annualET = annualET.merge(ee.FeatureCollection([feature]));
Export.image.toDrive({ image: yearlyET, description: i + "_ET", fileNamePrefix: i + "_ET", folder: 'Annual_ET', scale: 5000, region: geometry, crs: "EPSG:4326", maxPixels: 1e13 });}
var chart = ui.Chart.feature.byFeature(annualET, 'year', 'ET_mean') .setChartType('LineChart') .setOptions({ title: 'Annual ET (2001-2005)', hAxis: {title: 'Year'}, vAxis: {title: 'Mean ET (mm)'}, lineWidth: 2, pointSize: 4, colors: ['#1f77b4'] });
print(chart);

七、成为会员

GIS遥感数据处理应用
会员:数据处理,ArcGIS/Python/MATLAB/R/GEE教学,指导作图和论文。
 最新文章