当前位置: 首页 > news >正文

GEE代码实例教程详解:湖泊水位变化监测

简介

本篇博客将介绍如何使用Google Earth Engine (GEE) 对湖泊水位变化进行监测。通过MODIS数据集,我们可以识别2001年和2023年的湖泊范围,并计算湖泊的高程变化。

背景知识

MODIS数据集

MODIS/061/MOD09Q1数据集提供了MODIS的地表反射数据,这些数据可以用来计算归一化差异水体指数(NDWI)。

NDWI

归一化差异水体指数(NDWI)是一种用于识别水体的遥感指数,它基于水体在近红外和短波红外波段的反射特性差异。

ALOS全球数字地表模型

JAXA/ALOS/AW3D30数据集提供了全球30米分辨率的数字地表模型(DSM),可以用来计算地表的高程。

完整代码

// 定义研究区域的坐标点
var cor = [[44.86557382828752, 37.08659871132482],[46.08505625016252, 37.08659871132482],[46.08505625016252, 38.34669285754838],[44.86557382828752, 38.34669285754838],[44.86557382828752, 37.08659871132482]
];// 创建多边形区域
var roi = ee.Geometry.Polygon(cor);// 将地图中心设置为研究区域
Map.centerObject(roi);// 2001年MODIS数据
var modis2001 = ee.ImageCollection("MODIS/061/MOD09Q1").select('sur_refl_b01', 'sur_refl_b02').filterDate('2001', '2002').map(function (img) {var band = img.multiply(0.0001);var ndwi = band.normalizedDifference(['sur_refl_b01', 'sur_refl_b02']).rename('ndwi');return ndwi;}).median();// 2001年NDWI图层
Map.addLayer(modis2001.clip(roi), [], 'ndwi_2001', false);// 2001年湖泊阈值
var thr = modis2001.gt(0.1);
Map.addLayer(thr.clip(roi), [], 'lake_thr', false);// 2001年湖泊掩膜
var mask2001 = thr.updateMask(thr);
Map.addLayer(mask2001.clip(roi), [], 'mask2001', false);// 2001年湖泊边界矢量
var vector2001 = mask2001.reduceToVectors({geometry: roi,scale: 250
});
Map.addLayer(vector2001, [], 'lake2001', false);// ALOS DSM
var dem = ee.ImageCollection("JAXA/ALOS/AW3D30/V3_2").mean().select('AVE_DSM');// 2001年湖泊高程
var lake_elevation_2001 = ee.Number(dem.reduceRegion({reducer: ee.Reducer.percentile([55]),geometry: vector2001,scale: 250
}).get('AVE_DSM'));
print('lake elevation for 2001', lake_elevation_2001);// 导出2001年湖泊边界
Export.table.toDrive({collection: vector2001,description: 'lake2001',folder: 'lake_border',fileFormat: 'SHP'
});// 2023年MODIS数据
var modis2023 = ee.ImageCollection("MODIS/061/MOD09Q1").select('sur_refl_b01', 'sur_refl_b02').filterDate('2023', '2024').map(function (img) {var band = img.multiply(0.0001);var ndwi = band.normalizedDifference(['sur_refl_b01', 'sur_refl_b02']).rename('ndwi');return ndwi;}).median();// 2023年湖泊掩膜
var thr2 = modis2023.gt(0.1);
var mask2023 = thr2.updateMask(thr2);
Map.addLayer(mask2023.clip(roi), [], 'mask2023', false);// 2023年湖泊边界矢量
var vector2023 = mask2023.reduceToVectors({geometry: roi,scale: 250
});
Map.addLayer(vector2023, [], 'lake2023', false);// 2023年湖泊高程
var lake_elevation_2023 = ee.Number(dem.reduceRegion({reducer: ee.Reducer.percentile([55]),geometry: vector2023,scale: 250
}).get('AVE_DSM'));
print('lake elevation for 2023', lake_elevation_2023);

代码详解

1. 定义研究区域

创建一个多边形区域roi,用于限定分析的地理范围,并设置地图中心。

2. 加载MODIS数据集

分别加载2001年和2023年的MODIS数据集,并计算NDWI。

3. 湖泊范围识别

通过设置NDWI阈值,识别出2001年和2023年的湖泊范围。

4. 湖泊边界矢量提取

将识别出的湖泊掩膜转换为矢量边界。

5. 加载ALOS DSM数据集

加载ALOS全球数字地表模型数据集,并计算平均DSM。

6. 湖泊高程计算

使用ALOS DSM数据,计算2001年和2023年湖泊边界的55百分位高程。

7. 湖泊边界导出

将2001年的湖泊边界矢量导出为SHP格式。

8. 湖泊高程变化监测

打印2001年和2023年的湖泊高程,监测湖泊水位变化。

结论

本教程展示了如何使用GEE对湖泊水位变化进行监测。通过MODIS数据识别湖泊范围,并结合ALOS DSM数据计算湖泊高程,我们可以了解湖泊水位随时间的变化情况。

进一步探索

GEE提供了多种工具和方法来进行水体监测和地形分析。在后续的教程中,我们将继续探索GEE在不同领域的应用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 用户画像与相关性分析揭示麦当劳满意度提升关键
  • Jenkins教程-15-常用插件-Blue Ocean
  • Okhttp hostnameVerifier详解
  • HttpServer内存马
  • 音频demo:使用faad2将AAC数据解码出PCM数据
  • 电子设备常用的胶水有哪些?
  • sdbusplus:将文件描述符作为method的返回值
  • React-native优质开源项目
  • VsCode崩溃无法打开解决办法
  • 【Spring Boot】统一异常处理
  • 从零到一:构建股票预测模型的Python实战教程
  • Redis-Redis可视化工具Redis Insight下载及安装
  • Android TV跨平台开发心得
  • DataExcelServer局域网文件共享服务器增加两个函数
  • 【Android高级UI】计算不规则图形面积
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • Apache Zeppelin在Apache Trafodion上的可视化
  • canvas 高仿 Apple Watch 表盘
  • classpath对获取配置文件的影响
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • ECMAScript入门(七)--Module语法
  • gulp 教程
  • java多线程
  • Python 反序列化安全问题(二)
  • Spring框架之我见(三)——IOC、AOP
  • uni-app项目数字滚动
  • v-if和v-for连用出现的问题
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 多线程 start 和 run 方法到底有什么区别?
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 力扣(LeetCode)357
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端路由实现-history
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 三分钟教你同步 Visual Studio Code 设置
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 数组的操作
  • 微信支付JSAPI,实测!终极方案
  • 项目实战-Api的解决方案
  •  一套莫尔斯电报听写、翻译系统
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • # Maven错误Error executing Maven
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #QT项目实战(天气预报)
  • #每天一道面试题# 什么是MySQL的回表查询
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $(selector).each()和$.each()的区别
  • $.ajax()参数及用法
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (Python) SOAP Web Service (HTTP POST)
  • (六)Hibernate的二级缓存
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)