简介
本篇博客将介绍如何使用Google Earth Engine (GEE) 对Sentinel-2数据进行归一化差异水体指数(NDWI)和归一化差异植被指数(NDTI)的分析。这些指数有助于识别水体和植被覆盖情况。
背景知识
Sentinel-2数据集
Sentinel-2是由欧洲空间局(ESA)提供的高分辨率光学卫星数据,广泛应用于植被监测、土地覆盖分类和环境变化分析。
NDWI
归一化差异水体指数(NDWI)是一种用于识别水体的遥感指数。
NDTI
归一化差异植被指数(NDTI)是一种用于增强植被特征的遥感指数,通常用于植被覆盖度分析。
完整代码
代码语言:javascript复制// 定义研究区域的坐标点
var cor = [
[经度1, 纬度1],
[经度2, 纬度2],
[经度3, 纬度3],
[经度4, 纬度4]
// 请替换为具体的坐标点
];
// 创建多边形区域
var roi = ee.Geometry.Polygon(cor);
// 将地图中心设置为研究区域
Map.centerObject(roi);
// 加载Sentinel-2数据集
var sen = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED")
.select(['B2', 'B3', 'B4', 'B8'])
.filterDate('2023', '2024')
.filterBounds(roi)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 10))
.median().multiply(0.0001);
// 添加假彩色图层
Map.addLayer(sen.clip(roi),
{bands:['B8', 'B4', 'B3']}, 'false color composite', false);
// 计算NDWI
var ndwi = sen.normalizedDifference(['B3', 'B8']).rename('ndwi');
Map.addLayer(ndwi.clip(roi), [], 'ndwi', false);
// 打印NDWI直方图
print(
ui.Chart.image.histogram(ndwi, roi, 100)
);
// 设置NDWI阈值
var thr = ndwi.gt(0.1);
Map.addLayer(thr.clip(roi), [], 'ndwi threshold', false);
// 更新掩膜
var sen_mask = sen.updateMask(thr);
// 添加掩膜后的Sentinel-2图层
Map.addLayer(sen_mask.clip(roi), [], 'sen_mask', false);
// 计算NDTI
var ndti = sen_mask.normalizedDifference(['B4', 'B3']).rename('ndti');
Map.addLayer(ndti.clip(roi), {
palette: ['blue', 'green', 'yellow', 'orange', 'red']
}, 'ndti', false);
// 导出NDTI图像
Export.image.toDrive({
image: ndti.clip(roi),
description: 'sen2_ndti',
region: roi,
scale: 10,
crs: ndti.getInfo().crs,
maxPixels: 1e13,
folder: 'test'
});
代码详解
1. 定义研究区域
创建多边形区域roi
,用于限定分析的地理范围,并设置地图中心。
2. 加载Sentinel-2数据集
加载Sentinel-2数据集,选择特定波段,筛选日期,地理范围和云层覆盖。
3. 添加假彩色图层
使用Sentinel-2数据的特定波段创建假彩色图层,以更好地识别不同地表特征。
4. 计算NDWI
计算归一化差异水体指数,以识别水体。
5. 打印NDWI直方图
打印NDWI的直方图,以了解NDWI值的分布。
6. 设置NDWI阈值
设置阈值以识别水体区域,并更新掩膜。
7. 计算NDTI
计算归一化差异植被指数,以识别植被覆盖度。
8. 导出NDTI图像
将NDTI图像导出到Google Drive。
结论
本教程展示了如何使用GEE对Sentinel-2数据进行NDWI和NDTI的计算和分析。这些指数有助于了解水体和植被覆盖度的空间分布。
进一步探索
GEE提供了多种工具和方法来进行水体和植被分析。在后续的教程中,我们将继续探索GEE在不同领域的应用。