前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GEE代码实例教程详解:湖泊面积分析

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

作者头像
Twcat_tree
发布2024-07-09 08:13:21
2140
发布2024-07-09 08:13:21
举报
文章被收录于专栏:二猫の家

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

完整代码

代码语言:javascript
复制
// 定义研究区域的坐标点
var coordinates = [
  [42.000552219688586, 38.18969302118053],
  [43.868228000938586, 38.18969302118053],
  [43.868228000938586, 39.209978258633186],
  [42.000552219688586, 39.209978258633186],
  [42.000552219688586, 38.18969302118053]
];

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

// 将多边形添加到地图上
Map.addLayer(roi, {color: 'red'});

// 定义时间范围
var time_start = '2013-01-01';
var time_end = '2021-12-31';

// 创建Landsat 8图像集合并筛选数据
var landsat = ee.ImageCollection('LANDSAT/LC08/C01/T1')
  .filterDate(time_start, time_end)
  .filter(ee.Filter.lt('CLOUD_COVER', 10))
  .filter(ee.Filter.calendarRange(6, 9, 'month')) // 筛选夏季月份
  .filterBounds(roi); // 应用地理范围

// 计算NDWI
var ndwi = landsat.map(function(img) {
  var green = img.select('B4').multiply(0.0001).subtract(0.1); // 绿色波段
  var nir = img.select('B5').multiply(0.0001).subtract(0.1); // 近红外波段
  var ndwi = green.normalizedDifference(nir).rename('ndwi');
  return img.addBands(ndwi);
}).median().select('ndwi');

// 应用阈值并创建水体掩膜
var water_mask = ndwi.gte(0.1); // NDWI大于等于0.1的像素被认为是水体

// 将水体掩膜添加到地图上
Map.addLayer(water_mask, {min: 0, max: 1, palette: ['0000FF']}, 'Water Mask');

// 计算水体像素面积(单位:平方米)
var pixel_area = water_mask.multiply(ee.Image.pixelArea());

// 将像素面积添加到地图上
Map.addLayer(pixel_area.clip(roi), {min: 0, max: 1000, palette: ['00FF00']}, 'Pixel Area');

// 计算湖泊面积(单位:平方公里)
var scale = 30; // 定义分析的尺度
var lake_area = pixel_area.reduceRegion({
  reducer: ee.Reducer.sum(),
  geometry: roi,
  scale: scale,
  bestEffort: true
}).get('ndwi');

// 将面积从平方米转换为平方公里
var lake_area_km2 = lake_area / 1e6 / 1e6 * scale * scale;

// 打印湖泊面积
print('Lake Area (square kilometers):', lake_area_km2);

代码详解

1. 定义研究区域

我们首先定义了一个多边形区域(Region of Interest, ROI),这是分析湖泊面积的地理范围。坐标点列表表示多边形的顶点,我们使用ee.Geometry.Polygon来创建这个多边形。

2. 添加图层到地图

使用Map.addLayer函数将ROI添加到地图上,使用红色边界线可视化多边形区域。

3. 定义时间范围

设置时间范围time_starttime_end,用于筛选Landsat 8图像集合中的图像。

4. 创建和筛选图像集合

使用ee.ImageCollection获取Landsat 8图像,并应用多个筛选条件:

  • filterDate:根据时间范围筛选图像。
  • filter:选择云量覆盖小于10%的图像。
  • filterBounds:将图像集合限制在ROI内。
5. 计算NDWI

使用map函数遍历图像集合,对每张图像进行处理:

  • 选择绿色波段(B4)和近红外波段(B5),并进行辐射校正。
  • 计算NDWI,使用normalizedDifference函数。
6. 应用阈值和创建掩膜

使用gte函数(greater than or equal)设置阈值0.1,创建水体掩膜。

7. 可视化水体掩膜

将水体掩膜添加到地图上,使用蓝色可视化水体区域。

8. 计算像素面积

使用multiply函数将水体掩膜与每个像素的面积相乘,得到每个水体像素的面积(单位:平方米)。

9. 可视化像素面积

将计算得到的像素面积添加到地图上,使用绿色可视化。

10. 计算湖泊面积

使用reduceRegion函数和ee.Reducer.sum对ROI内的像素面积求和,得到湖泊的总面积(单位:平方米)。然后将面积转换为平方公里。

11. 打印结果

使用print函数打印湖泊的面积。

结论

本教程通过一个具体的代码实例,详细解释了如何在GEE中进行湖泊面积分析。从定义研究区域到计算和可视化结果,我们逐步介绍了每个步骤及其代码实现。希望这个教程能帮助你更好地理解GEE的功能,并激发你在地理空间数据分析领域的探索。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GEE代码实例教程详解:湖泊面积分析
    • 完整代码
      • 代码详解
        • 1. 定义研究区域
        • 2. 添加图层到地图
        • 3. 定义时间范围
        • 4. 创建和筛选图像集合
        • 5. 计算NDWI
        • 6. 应用阈值和创建掩膜
        • 7. 可视化水体掩膜
        • 8. 计算像素面积
        • 9. 可视化像素面积
        • 10. 计算湖泊面积
        • 11. 打印结果
      • 结论
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档