代码概述
该代码基于Google Earth Engine (GEE)平台,旨在从不同遥感数据集中筛选、合并并展示指定区域和时间范围内的数据,同时输出数据集影像的源信息和日期信息。涉及的遥感数据集包括MODIS、Landsat 8和Sentinel-2。
使用的数据集
- MODIS (MOD09GA):提供全球范围内的每日地表反射率数据,空间分辨率为500米。
- Landsat 8 (LC08/C02/T1_L2):提供全球覆盖的高分辨率卫星影像,空间分辨率为30米。
- Sentinel-2 (COPERNICUS/S2_HARMONIZED):提供全球范围内的多光谱影像,空间分辨率为10米。
代码流程
- 定义区域和时间范围:指定感兴趣的地理区域和时间范围。
- 筛选和准备数据集:
- 分别从MODIS、Landsat 8和Sentinel-2数据集中筛选指定时间范围内的影像,并标记数据源。
- 合并数据集:将MODIS、Landsat 8和Sentinel-2数据集合并为一个数据集。
- 数据集筛选:尽管尝试对合并后的数据集进行云量筛选,但实际代码中未生效。
- 显示数据集和区域:在GEE地图界面上显示感兴趣区域及合并后的数据集影像。
- 输出影像信息:
- 输出数据集中每个影像的数据源信息。
- 输出数据集中所有影像的日期信息。
运行结果
代码运行后,将在GEE地图上展示指定区域的合并影像,并在控制台输出数据集中每个影像的数据源信息和日期信息,可以方便地获取并分析指定区域和时间范围内的多源遥感数据。
完整代码:
// 定义区域
//var geometry = table;
var geometry = table2.filter(ee.Filter.eq('city','hefei'))
// 定义时间范围
var startDate = '2020-09-15';
var endDate = '2020-12-28';
// 定义不同数据集
//modis数据集
var modis = ee.ImageCollection('MODIS/061/MOD09GA')
.filterBounds(geometry)
.filterDate(startDate, endDate)
.map(function(image) {
return image.set('source', 'MODIS');
});
//landsat数据集
var landsat = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")
.filterBounds(geometry)
.filterDate(startDate, endDate)
.map(function(image) {
return image.set('source', 'Landsat');
});
//sentinel-2数据集
var sentinel2 = ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
.filterBounds(geometry)
.filterDate(startDate, endDate)
.map(function(image) {
return image.set('source', 'Sentinel-2');
});
// 合并所有数据集
var mergedCollection = modis.merge(landsat)
.merge(sentinel2);
// 进行筛选
var filteredCollection = mergedCollection.filter(ee.Filter.and(
ee.Filter.gt('CLOUD_COVER', 5) // 将云量阈值调整为 5,此处无效
));
// 打印数据集大小
var count = filteredCollection.size();
print('合并和筛选后的数据集大小:', count);
// 在地图上显示整个数据集
Map.centerObject(geometry, 8);
Map.addLayer(filteredCollection, {}, 'Filtered Collection');
// 在地图上显示区域
Map.addLayer(geometry, {}, 'Region of Interest');
// 查看每个影像的数据源并打印
filteredCollection = filteredCollection.map(function(image) {
var source = ee.String(image.get('source'));
return image.set('source', source);
});
filteredCollection.aggregate_array('source').evaluate(function(sourceList) {
print('数据集中每个影像的数据源:', sourceList);
});
// 查看数据集中所有影像的日期并打印
filteredCollection.aggregate_array('system:time_start').evaluate(function(dateList) {
var formattedDates = dateList.map(function(date) {
return new Date(date).toISOString().slice(0, 10); // 将日期格式化为 YYYY-MM-DD
});
print('所有影像的日期:', formattedDates);
});
运行示例:
工作台输出:
数据合并结果: