GEE代码实例教程详解:湖泊面积变化分析

GEE代码实例教程详解:湖泊面积变化分析

简介

在本篇博客中,我们将通过Google Earth Engine (GEE) 探索湖泊面积随时间的变化。通过分析MODIS数据集中的归一化差异水体指数(NDWI),我们可以识别湖泊区域并监测其面积变化。

背景知识

MODIS数据集

MODIS(Moderate Resolution Imaging Spectroradiometer,中分辨率成像光谱辐射计)数据集是NASA提供的高分辨率遥感数据集,广泛应用于地球表面监测。

NDWI

归一化差异水体指数(NDWI)是一种用于遥感图像中水体检测的指数。它基于水体在不同光谱波段的反射特性差异。

完整代码

javascript 复制代码
// 定义研究区域的坐标点
var cor = [
  [44.82021271860131, 37.08040466447922],
  [46.11659943735131, 37.08040466447922],
  [46.11659943735131, 38.37506300104177],
  [44.82021271860131, 38.37506300104177],
  [44.82021271860131, 37.08040466447922]
];

// 创建多边形区域
var roi = ee.Geometry.Polygon(cor);

// 将多边形添加到地图上并设置视图中心
Map.addLayer(roi, {color: 'red'});
Map.centerObject(roi);

// 定义时间范围
var time_start = '2001';
var time_end = '2023';

// 创建MODIS图像集合并筛选数据
var modis = ee.ImageCollection("MODIS/061/MOD09A1")
  .filterDate(time_start, time_end);

// 计算NDWI
var ndwi = modis.map(function(img) {
  var band = img.select('sur_refl_b01').multiply(0.0001); // 选择MODIS的特定波段
  var index = band.normalizedDifference(['sur_refl_b04', 'sur_refl_b02']).rename('ndwi');
  return index
    .copyProperties(img, img.propertyNames());
});

// 将NDWI图层添加到地图上
Map.addLayer(ndwi.filterDate('2010', '2011').toBands().clip(roi), {min: 0, max: 1, palette: ['blue', 'green', 'yellow']}, 'NDWI 2010-2011');

// 计算2010-2011年的NDWI平均值
var ndwi_average = ndwi.filterDate('2010', '2011').median();

// 打印NDWI平均值的直方图
print(
  ui.Chart.image.histogram(ndwi_average, roi, 500)
    .setOptions({title: 'NDWI Histogram'})
);

// 计算湖泊面积
var lake_area = ndwi.map(function(img) {
  var thr = img.gt(0.1); // 设置NDWI阈值
  var mask = thr.updateMask(thr);
  var area = mask.multiply(ee.Image.pixelArea().divide(1e6)); // 计算像素面积
  return area
    .copyProperties(img, img.propertyNames());
});

// 打印湖泊面积随时间变化的图表
print(
  ui.Chart.image.series(lake_area, roi, ee.Reducer.sum(), 500, 'system:time_start')
    .setOptions({title: 'Lake Area Change Over Time'})
);

代码详解

1. 定义研究区域

我们定义了一个多边形区域作为研究对象,使用ee.Geometry.Polygon创建,并将其添加到地图上。

2. 创建MODIS图像集合

我们使用ee.ImageCollection获取MODIS数据,并根据时间范围筛选图像。

3. 计算NDWI

对MODIS图像集合中的每张图像,我们选择特定的波段并计算NDWI。然后,我们将结果复制到原始图像的属性中。

4. 可视化NDWI

我们选择2010-2011年的NDWI图像,并将其添加到地图上,使用颜色映射来区分不同的NDWI值。

5. 计算NDWI平均值

我们计算2010-2011年NDWI的中位数,并打印其直方图,以了解NDWI值的分布。

6. 湖泊面积计算

我们设置NDWI阈值为0.1,以此识别水体。然后,我们计算每个像素的水体面积,并复制图像属性。

7. 湖泊面积变化分析

我们使用ui.Chart.image.series打印湖泊面积随时间变化的图表,这有助于我们了解湖泊面积如何随时间变化。

结论

通过本教程,我们学习了如何使用GEE分析湖泊面积随时间的变化。我们使用了MODIS数据集,并计算了NDWI来识别水体。通过分析NDWI的直方图和湖泊面积的时间序列,我们可以监测湖泊面积的变化趋势。

进一步探索

GEE提供了丰富的工具和方法来进行地理空间数据分析。在后续的教程中,我们将继续探索GEE的其他应用,包括气候变化监测、土地覆盖分类等。

相关推荐
此星光明12 天前
GEE训练教程——ECMWF/ERA5_LAND/DAILY_AGGR数据的地表温度的时序分析
javascript·gee·图表·温度·时序·摄氏度
此星光明1 个月前
GEE 数据集——美国gNATSGO(网格化国家土壤调查地理数据库)完整覆盖了美国所有地区和岛屿领土的最佳可用土壤信息
javascript·数据库·数据集·美国·数据·gee·土壤
此星光明1 个月前
GEE 案例——利用哨兵-2 图像时间序列和谷歌地球引擎云计算自动绘制和监测香港海洋水质参数
javascript·云计算·应用·gee·案例·时序·水质
此星光明2 个月前
GEE问题:筛选指定区域的Sentinel-1影像缺乏VH等波段
前端·javascript·数据库·sentinel·gee·vh·vv
Promising_GEO4 个月前
利用高德+ArcGIS优雅获取任何感兴趣的矢量边界
arcgis·gee
_养乐多_5 个月前
GEE:通过代码隐藏工具栏按钮
javascript·云计算·遥感·gee
TwcatL_tree5 个月前
GEE代码实例教程详解:降水量分类分析
人工智能·分类·数据挖掘·gee
TwcatL_tree5 个月前
GEE代码实例教程详解:地表温度与土地覆盖类型分析
信息可视化·gee
TwcatL_tree5 个月前
GEE代码实例教程详解:长时间序列NDVI分析
开发语言·前端·javascript·gee