【GEE学习笔记|遥感地学应用】GEE代码示例,利用Sentinel-2影像计算遥感指数: 归一化雪指数、 归一化水指数、 冰川反照率指数,提取或去除冰川区域?
【GEE学习笔记|遥感地学应用】GEE代码示例,利用Sentinel-2影像计算遥感指数: 归一化雪指数、 归一化水指数、 冰川反照率指数,提取或去除冰川区域?
文章目录
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通
”或参考学术信息专栏:https://blog.csdn.net/gaoxiaoxiao1209/article/details/146181282
前言
以下是代码展示,包括 NDSI、NDWI 和 NBR 的计算与导出:
- 计算 归一化雪指数(NDSI):使用 B3(绿光) 和 B11(短波红外)
- 计算 归一化水指数(NDWI):使用 B3(绿光) 和 B8(近红外)
- 计算 冰川反照率指数(NBR):使用 B8(近红外) 和 B12(短波红外)
- 全部指数导出 并保存到 Google Drive
GEE 数据下载代码
var roi = table; // table 为用户上传的矢量边界
// 去云函数
function maskS2clouds(image) {
var cloudProb = image.select('MSK_CLDPRB'); // 云概率
var mask = cloudProb.lt(10); // 只保留云概率 < 10 的区域
return image.updateMask(mask).divide(10000);
}
// 选择 Sentinel-2 数据集并处理
var dataset = ee.ImageCollection('COPERNICUS/S2_SR')
.filterBounds(roi)
.filterDate('2023-05-01', '2023-10-31')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 10))
.map(maskS2clouds)
.select(["B2", "B3", "B4", "B5", "B6", "B7", "B8", "B8A", "B9", "B11", "B12"]) // 选取所需波段
.median()
.clip(roi);
// 计算 归一化雪指数(NDSI)
var ndsi = dataset.expression(
'(B3 - B11) / (B3 + B11)', {
'B3': dataset.select('B3'),
'B11': dataset.select('B11')
}).rename('NDSI');
// 计算 归一化水指数(NDWI)
var ndwi = dataset.expression(
'(B3 - B8) / (B3 + B8)', {
'B3': dataset.select('B3'),
'B8': dataset.select('B8')
}).rename('NDWI');
// 计算 冰川反照率指数(NBR)
var nbr = dataset.expression(
'(B8 - B12) / (B8 + B12)', {
'B8': dataset.select('B8'),
'B12': dataset.select('B12')
}).rename('NBR');
// 显示 RGB 影像
var rgbVis = {min: 0.0, max: 0.3, bands: ['B4', 'B3', 'B2']};
Map.addLayer(dataset, rgbVis, 'RGB Image');
Map.centerObject(roi, 7);
// 显示 NDSI
var ndsiVis = {min: -1, max: 1, palette: ['blue', 'white']};
Map.addLayer(ndsi, ndsiVis, 'NDSI');
// 显示 NDWI
var ndwiVis = {min: -1, max: 1, palette: ['cyan', 'blue']};
Map.addLayer(ndwi, ndwiVis, 'NDWI');
// 显示 NBR
var nbrVis = {min: -1, max: 1, palette: ['green', 'yellow']};
Map.addLayer(nbr, nbrVis, 'NBR');
// 显示 ROI 边界
var styling = {color: "red", fillColor: "00000000"};
Map.addLayer(roi.style(styling), {}, "Boundary");
// 定义导出函数
function exportImage(image, description, fileNamePrefix) {
Export.image.toDrive({
image: image,
description: description,
fileNamePrefix: fileNamePrefix,
crs: "EPSG:4326",
scale: 10,
region: roi,
maxPixels: 1e13,
folder: 'sentinel-2'
});
}
// 导出计算的指数
exportImage(ndsi, "Sentinel-2_NDSI", "Sentinel-2_NDSI");
exportImage(ndwi, "Sentinel-2_NDWI", "Sentinel-2_NDWI");
exportImage(nbr, "Sentinel-2_NBR", "Sentinel-2_NBR");
代码优化与修改点
- 添加 NDSI、NDWI 和 NBR 计算。
- 使用 expression 方法 计算指数,使代码更直观。
- 优化导出部分,只导出必要的指数数据(NDSI、NDWI、NBR)。
- 更清晰的可视化调色板,更方便查看冰川和水体区域。
🚀 运行后,你可以在 Google Drive (sentinel-2 文件夹) 下载所有指数数据!
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通
”或参考学术信息专栏:https://blog.csdn.net/gaoxiaoxiao1209/article/details/146181282