概述
本代码在Google Earth Engine (GEE)平台上实现了对潍坊市2020年6月1日至2020年9月30日期间,云量少于10%的哨兵-2卫星影像的提取、处理和导出。主要功能包括加载指定区域,去除云层干扰,合成影像并导出。
数据集介绍
使用的数据集是哨兵-2卫星影像数据集(COPERNICUS/S2_SR_HARMONIZED),该数据集提供了高分辨率的多光谱影像,适用于土地覆盖分类、农业监测和环境监测等应用。
流程与功能
- 定义参数:指定城市名称、时间范围和最大云量百分比。
- 加载研究区域:通过过滤shapefile文件获取指定城市的研究区域,并在地图上显示。
- 定义去云函数:通过选择影像中的质量评估带(QA60),去除云层和卷云。
- 筛选哨兵-2影像数据:根据研究区域、时间范围和云量百分比过滤影像数据,并应用去云函数。
- 查询影像数量:统计满足条件的影像数量并打印。
- 设置可视化参数:定义RGB波段的可视化参数,用于地图展示。
- 添加影像至地图:将影像集合合成后裁剪至研究区域,并添加到地图中进行显示。
- 导出影像:将合成后的影像裁剪至研究区域,并导出至Google Drive。
运行结果
运行结果是生成了一幅覆盖潍坊市的哨兵-2卫星影像合成图,该图去除了云层干扰,并在地图上进行了展示,影像合成图被导出至Google Drive供进一步分析使用。
完整代码:
// 定义参数
var cityName = 'weifang';
var startDate = '2020-06-01';
var endDate = '2020-09-30';
var maxCloudPercentage = 10;
// 加载指定的shp范围
var roi = table.filter(ee.Filter.eq('city', cityName));
// 在地图中显示研究区
Map.addLayer(roi, {}, 'ROI');
Map.centerObject(roi);
// 定义去云函数
function maskClouds(image) {
var qa = image.select('QA60');
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask).divide(10000);
}
// 筛选哨兵-2影像数据
var sentinel2Collection = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterBounds(roi)
.filterDate(startDate, endDate)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', maxCloudPercentage))
.map(maskClouds);
// 查询影像数量
var imageCount = sentinel2Collection.size();
print('Number of images:', imageCount);
// 设置可视化参数
var visParams = {
bands: ['B4', 'B3', 'B2'],
min: 0,
max: 0.3,
gamma: 1.4
};
// 将影像集合添加至地图
Map.addLayer(sentinel2Collection.median().clip(roi), visParams, 'Sentinel-2 Composite');
// 导出影像示例
var exportImage = sentinel2Collection.median().clip(roi);
Export.image.toDrive({
image: exportImage,
description: cityName + '_Sentinel2_Composite',
folder: 'GEE_Exports',
scale: 10,
region: roi,
crs: 'EPSG:4326',
maxPixels: 1e13
});
运行示例:
工作台输出: