简介

本篇博客将介绍如何使用Google Earth Engine (GEE) 对Sentinel-2数据进行归一化差异水体指数(NDWI)和归一化差异植被指数(NDTI)的分析。这些指数有助于识别水体和植被覆盖情况。

背景知识

Sentinel-2数据集

Sentinel-2是由欧洲空间局(ESA)提供的高分辨率光学卫星数据,广泛应用于植被监测、土地覆盖分类和环境变化分析。

NDWI

归一化差异水体指数(NDWI)是一种用于识别水体的遥感指数。

NDTI

归一化差异植被指数(NDTI)是一种用于增强植被特征的遥感指数,通常用于植被覆盖度分析。

完整代码

// 定义研究区域的坐标点
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.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.

代码详解

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在不同领域的应用。