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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/785017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LLM】二、python调用本地的ollama部署的大模型

系列文章目录 往期文章: 【LLM】一、利用ollama本地部署大模型 目录 文章目录 前言 一、ollama库调用 二、langchain调用 三、requests调用 四、相关参数说明: 总结 前言 本地部署了大模型,下一步任务便是如何调用的问题&#xff0c…

科普文:K8S中常见知识点梳理

简单说一下k8s集群内外网络如何互通的 要在 Kubernetes(k8s)集群内外建立网络互通,可以采取以下措施: 使用service: 使用Service类型为NodePort或LoadBalancer的Kubernetes服务。这可以使服务具有一个公共IP地址或端口…

探展2024世界人工智能大会之令人惊艳的扫描黑科技~

文章目录 ⭐️ 前言⭐️ AIGC古籍修复文化遗产焕新⭐️ 高效的文档图像处理解决方案⭐️ AIGC扫描黑科技一键全搞定⭐️ 行业级的知识库大模型加速器⭐️ 结语 ⭐️ 前言 大家好,我是 哈哥(哈哥撩编程),这次非常荣幸受邀作为专业…

基于单片机的太阳能智能追光系统设计

摘 要: 光伏能源是一种发电新能源,具有高清洁度、高再生的特点,在能源紧张的当代其应用价值极高。目前,光伏能源发电主要利用光伏设备来实现,但在初期应用过程中,人们发现,太阳光的移动会决定光…

ElasticSearch学习篇14_《检索技术核心20讲》进阶篇之大倒排索引

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243,文档形式记录笔记。 内容 主要是海量数据的大倒排索引的一些原理设计思想,ES底层就是基于这些设计思想以及原理,主要涉及读写分离、索引分层等…

C++ | Leetcode C++题解之第223题矩形面积

题目: 题解: class Solution { public:int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth min(ax2, bx2) - max…

vb.netcad二开自学笔记9:界面之ribbon

一个成熟的软件怎么能没有ribbon呢&#xff0c;在前面的框架基础上再加个命令AddRibbon <CommandMethod("AddRibbon")> Public Sub AddRibbon() Dim ribbonControl As RibbonControl ComponentManager.Ribbon Dim tab As RibbonTab New RibbonTab() tab.Tit…

# 昇思25天学习打卡营第10天 | 使用静态图加速

昇思25天学习打卡营第10天 | 使用静态图加速 文章目录 昇思25天学习打卡营第10天 | 使用静态图加速动态图的开启方式静态图的开启方式基于全局context的开启方式基于修饰器的开启方式 总结打卡 AI编译框架分为两种运行模式&#xff1a; 动态图模式&#xff1a; 计算图的构建和计…

近红外光谱脑功能成像(fNIRS):2.实验设计、指标计算与多重比较

一、实验设计的策略与方法 近红外光谱成像&#xff08;INIRS&#xff09;作为一种非侵入性脑功能成像技术&#xff0c;为研究大脑活动提供了一种高效、生态效度高的方法。然而&#xff0c;为了充分利用INIRS技术并确保实验结果的准确性和可靠性&#xff0c;研究者必须精心设计实…

AGAST (角点检测)

AGAST检测原理 AGAST(Adaptive and Generic Accelerated Segment Test)算法是Elmar于2010年提出的特征检测算法,改进了FAST(Features from Accelerated Segment Test)特征检测方法,使其具有更快的速度和更好的鲁棒性。AGAST算法提供了比FAST算法更详细的特征标记方式和判断依…

DWM 相关实现代码 [自用]

1. DWM 缩略图和模糊隐藏实现半透明 #include <windows.h> #include <dwmapi.h> #include <string> #pragma comment(lib, "dwmapi.lib")// 检查 UWP 窗口是否可见 bool IsUWPWindowVisible(HWND hwnd) {DWORD cloaked 0;DwmGetWindowAttribute(…

matplotlib颜色对照表

matplotlib的色彩设置: #------------------------------------------------------------------------------------------------------------------------------- #-------------------------------------------------------------------------------------------------------…

【linux服务器】大语言模型实战教程:LLMS大模型快速部署到个人服务器

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引言 说到大语言模型相信大家都不会陌生&#xff0c;大型语言模型(LLMs)是人工智能文本处理的主要类型,也现在最流行的人工智能…

【AI大模型】赋能儿童安全:楼层与室内定位实践与未来发展

文章目录 引言第一章&#xff1a;AI与室内定位技术1.1 AI技术概述1.2 室内定位技术概述1.3 楼层定位的挑战与解决方案 第二章&#xff1a;儿童定位与安全监控的需求2.1 儿童安全问题的现状2.2 智能穿戴设备的兴起 第三章&#xff1a;技术实现细节3.1 硬件设计与选择传感器选择与…

报修小程序论文(设计)开题报告

一、课题的背景和意义 近些年来&#xff0c;随着移动互联网巅峰时期的来临&#xff0c;互联网产业逐渐趋于“小、轻、微”的方向发展&#xff0c;符合轻应用时代特点的各类技术受到了不同领域的广泛关注。在诸多产品中&#xff0c;被誉为“运行着程序的网站”之名的微信小程序…

Java | Leetcode Java题解之第224题基本计算器

题目&#xff1a; 题解&#xff1a; class Solution {public int calculate(String s) {Deque<Integer> ops new LinkedList<Integer>();ops.push(1);int sign 1;int ret 0;int n s.length();int i 0;while (i < n) {if (s.charAt(i) ) {i;} else if (s…

(十一) Docker compose 部署 Mysql 和 其它容器

文章目录 1、前言1.1、部署 MySQL 容器的 3 种类型1.2、M2芯片类型问题 2、具体实现2.1、单独部署 mysql 供宿主机访问2.1.1、文件夹结构2.1.2、docker-compose.yml 内容2.1.3、运行 2.2、单独部署 mysql 容器供其它容器访问&#xff08;以 apollo 为例&#xff09;2.2.1、文件…

allWebPlugin中间件实现ActiveX插件在谷歌、火狐、Edge浏览器使用

下载并安装allWebPlugin中间件 1、请从下面地址下载allWebPlugin中间件产品&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1xUyQDzOabh7mU7J7TYhtig?pwdz3q0 提取码&#xff1a;z3q0 如下图所示&#xff0c;下载最新allWebPlugin_x86_v2.0.0.14_stable_20240707…

Flutter【组件】标签

简介 flutter 标签组件。标签组件是一种常见的 UI 元素&#xff0c;用于显示和管理多个标签&#xff08;或标签集合&#xff09;。 github地址&#xff1a; https://github.com/ThinkerJack/jac_uikit pub地址&#xff1a;https://pub.dev/packages/jac_uikit 使用方式&…

机器学习:预测评估8类指标

机器学习&#xff1a;8类预测评估指标 R方值、平均值绝对误差值MAE、均方误差MSE、均方误差根EMSE、中位数绝对误差MAD、平均绝对百分误差MAPE、可解释方差分EVS、均方根对数误差MLSE。 一、R方值 1、说明&#xff1a; R方值&#xff0c;也称为确定系数或拟合优度&#xff…