GEE代码实例教程详解:植被状况指数(VCI)与干旱监测

简介

在本篇博客中,我们将使用Google Earth Engine (GEE) 进行植被状况指数(Vegetation Condition Index, VCI)的计算和干旱监测。通过MODIS NDVI数据,我们可以评估2001年至2024年间的植被状况和干旱等级。

背景知识

MODIS NDVI数据集

MODIS/061/MOD13A2数据集提供了MODIS的归一化植被指数(NDVI)数据,这些数据可以用来评估植被覆盖和健康状况。

植被状况指数(VCI)

VCI是一种基于NDVI的指标,用于评估植被状况和监测干旱。VCI的计算公式为:
[ VCI = \left(\frac{(NDVI - NDVI_{min})}{(NDVI_{max} - NDVI_{min})}\right) \times 100 ]

完整代码

// 定义研究点坐标
var cor = [52.91994991092, 33.56756085477778];
var point = ee.Geometry.Point(cor);// 加载FAO GAUL数据集并筛选研究区域
var feature = ee.FeatureCollection("FAO/GAUL/2015/level0");
var roi = feature.filterBounds(point);
Map.centerObject(roi);
Map.addLayer(roi);// 定义时间范围
var time_start = '2001', time_end = '2003';// 加载MODIS NDVI数据集
var ndvi = ee.ImageCollection("MODIS/061/MOD13A2").select(['NDVI']).filterDate(time_start, time_end);// 计算VCI
var ndvi_min = ndvi.min().multiply(0.0001);
var ndvi_max = ndvi.max().multiply(0.0001);var vci = ndvi.map(function (img) {var band = img.multiply(0.0001);var index = band.expression('((ndvi - min)/(max - min))*100.0', {'ndvi': band,'min': ndvi_min,'max': ndvi_max}).rename('vci');return index.copyProperties(img, ['system:time_start', 'system:time_end']);
});// 计算VCI中值
var vci_median = vci.median();
Map.addLayer(vci_median.clip(roi), [], 'vci_median', false);// 打印VCI直方图
print(ui.Chart.image.histogram(vci_median, roi, 1000)
);// VCI分类
var cons = ee.Image.constant(0);var extreme = cons.where(vci_median.gte(0).and(vci_median.lt(10)), 1);
var severe = extreme.where(vci_median.gte(10).and(vci_median.lt(20)), 2);
var moderate = severe.where(vci_median.gte(20).and(vci_median.lt(30)), 3);
var light = moderate.where(vci_median.gte(30).gte(vci_median.lt(40)), 4);
var no1 = light.where(vci_median.gte(40).and(vci_median.lt(60)), 5);
var no2 = no1.where(vci_median.gte(60).and(vci_median.lt(80)), 6);
var no3 = no2.where(vci_median.gte(80), 7);Map.addLayer(moderate.clip(roi), {min: 1, max: 7}, 'drought_map', false);// VCI时间序列分类
var time_start = '2001', time_end = '2024';
var ndvi2 = ee.ImageCollection("MODIS/061/MOD13A2").select(['NDVI']).filterDate(time_start, time_end);var ndvi_min2 = ndvi2.min().multiply(0.0001);
var ndvi_max2 = ndvi2.max().multiply(0.0001);var vci2 = ndvi2.map(function (img) {var band = img.multiply(0.0001);var index = band.expression('((ndvi - min)/(max - min))*100.0', {'ndvi': band,'min': ndvi_min2,'max': ndvi_max2}).rename('vci');return index.copyProperties(img, ['system:time_start', 'system:time_end']);
});// 修正:vci_class 应使用 vci2 而不是 vci_median
var vci_class = vci2.map(function (img) {var vci_value = img.select('vci');return img.expression('extreme + severe + moderate + light + no1 + no2 + no3',{'extreme': vci_value.gte(0).and(vci_value.lt(10)).multiply(1),'severe': vci_value.gte(10).and(vci_value.lt(20)).multiply(2),'moderate': vci_value.gte(20).and(vci_value.lt(30)).multiply(3),'light': vci_value.gte(30).and(vci_value.lt(40)).multiply(4),'no1': vci_value.gte(40).and(vci_value.lt(60)).multiply(5),'no2': vci_value.gte(60).and(vci_value.lt(80)).multiply(6),'no3': vci_value.gte(80).multiply(7)}).rename('class');
});var vci_map = vci_class.mode();Map.addLayer(vci_map.clip(roi), {palette: ['black', 'brown', 'red', 'orange', 'yellow', 'lightgreen', 'darkgreen'],min: 1,max: 7
}, 'vci_mode', false);// 导出VCI分类图
Export.image.toDrive({image: vci_map.clip(roi),description: 'vci_map',region: roi,maxPixels: 1e13,crs: 'EPSG:4326',folder: 'drought',scale: 1000
});// 计算干旱面积
var drought_area = (ee.Image.pixelArea().divide(1e6)).addBands(vci_map);print(ui.Chart.image.byClass(drought_area, 'constant',roi, ee.Reducer.sum(), 1000, ['nan', 'extreme drought', 'severe drought', 'moderate drought', 'light drought', 'no drought1', 'nodrought2', 'no drought3'])
);

代码详解

1. 定义研究点

创建一个点对象point,用于确定研究区域。

2. 加载FAO GAUL数据集

加载并筛选与研究点相交的区域roi

3. 加载MODIS NDVI数据集

加载指定时间范围内的MODIS NDVI数据。

4. 计算VCI

基于NDVI的最小值和最大值计算VCI。

5. VCI分类

根据VCI值将图像分类为不同的干旱等级。

6. 绘制VCI中值图层

将VCI中值图层添加到地图上。

7. 打印VCI直方图

打印VCI中值的直方图,以了解VCI值的分布。

8. VCI时间序列分类

对整个时间序列的VCI进行分类,并计算每个干旱等级的频率。

9. 导出VCI分类图

将VCI分类图导出到Google Drive。

10. 计算干旱面积

计算每个干旱等级的面积。

结论

本教程展示了如何使用GEE对MODIS数据进行VCI计算和干旱监测。通过VCI,我们可以评估植被状况并识别干旱区域。

进一步探索

GEE提供了多种工具和方法来进行植被和干旱分析。在后续的教程中,我们将继续探索GEE在不同领域的应用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++初阶:从C过渡到C++的入门基础

✨✨所属专栏:C✨✨ ✨✨作者主页:嶔某✨✨ C发展历史 C的起源可以追溯到1979年,当时BjarneStroustrup(本贾尼斯特劳斯特卢普,这个翻译的名字不同的地⽅可能有差异)在⻉尔实验室从事计算机科学和软件⼯程的研究⼯作。⾯对项⽬中复…

第4章 Vite模块化与插件系统(二)

4.3 常用插件介绍 4.3.1 官方插件 vitejs/plugin-vue 用于支持 Vue.js 开发: npm install vitejs/plugin-vue --save-devimport vue from vitejs/plugin-vueexport default defineConfig({plugins: [vue()] })vitejs/plugin-react 用于支持 React 开发&#xf…

JavaDS —— 顺序表ArrayList

顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。在物理和逻辑上都是连续的。 模拟实现 下面是我们要自己模拟实现的方法: 首先我们要创建一个顺序表,顺序表…

关于Mars3d的入门

关于Mars3d的入门 一. 创建地球,加载瓦片图层二 矢量图层2.1 常用矢量图层2.1.1 GraphicLayer2.1.2 GeoJsonLayer 2.2 矢量图层的点击事件 三 矢量数据四 事件机制 一. 创建地球,加载瓦片图层 // 1. 创建地球let map new mars3d.Map("mars3dContai…

基于openStreetMap的路径规划ROS功能包

文章目录 概要OSM是什么主要特点主要组成部分使用场景如何获取OSM常规参数配置笛卡尔坐标系原点经纬度设置编译和运行如何规划演示效果概要 由于https://github.com/MichalDobis/osm_planner存在一些使用问题,不是那么方便,我对其进行了一些修改,便于进行起点到终点进行路径…

数据如何查询

分组查询 分组查询(Group By)是在关系型数据库中用来对数据进行分组并对每个组应用聚合函数的一种操作。这种查询通常结合聚合函数(如 COUNT、SUM、AVG、MAX、MIN 等)使用,用于在查询结果中生成汇总信息 特点(聚合)&am…

从零开始做题:My_lllp

题目 给出一张png图片 解题 ┌──(holyeyes㉿kali2023)-[~/Misc/题目/zulu/My_lllp] └─$ python2 lsb.py extract my_lllp.png out.txt my_lllp [] Image size: 1080x1079 pixels. [] Written extracted data to out.txt. ┌──(holyeyes㉿kali2023)-[~/Misc/题目/zul…

python的线程池和进程池

Python 3.2 就已经引入了 concurrent.futures 模块,提供了线程池(ThreadPoolExecutor)和进程池(ProcessPoolExecutor),用于简化并发编程的管理和调度。 ThreadPoolExecutor 在ThreadPoolExecutor 是 conc…

简易Qt串口助手

界面显示如下 关于串口类 初始化 设置串口号 设置波特率 打开串口 发送按钮功能实现 接收数据显示在控件中 关闭串口

使用 MFA 保护对企业应用程序的访问

多因素身份验证(MFA)是在授予用户访问特定资源的权限之前,使用多重身份验证来验证用户身份的过程,仅使用单一因素(传统上是用户名和密码)来保护资源,使它们容易受到破坏,添加其他身份…

springboot非物质文化遗产管理系统-计算机毕业设计源码16087

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

前端开发过程中经常遇到的问题以及对应解决方法 (持续更新)

我的朋友已经工作了 3 年,他过去一直担任前端工程师。 不幸的是,他被老板批评了,因为他在工作中犯了一个错误,这是一个非常简单但容易忽视的问题,我想也是很多朋友容易忽视的一个问题。 今天我把它分享出来&#xff…

Linux三剑客(grep、awk和sed)操作及与管道结合使用

1. 总览 grep、sed和awk被称为Linux三剑客,是因为它们在文本处理和数据操作方面极其强大且常用。 Linux三剑客在文件处理中的作用: grep(数据查找定位):文本搜索工具,在文件中搜索符合正则表达式的文本内容…

Redis原理-数据结构

Redis原理篇 1、原理篇-Redis数据结构 1.1 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存…

【大模型LLM面试合集】大语言模型架构_attention

1.attention 1.Attention 1.1 讲讲对Attention的理解? Attention机制是一种在处理时序相关问题的时候常用的技术,主要用于处理序列数据。 核心思想是在处理序列数据时,网络应该更关注输入中的重要部分,而忽略不重要的部分&…

BJT的结构(晶体管电压/电流+β+晶体管特性曲线/截止与饱和+直流负载线(Q点))+单片机数码管基础

2024-7-8,星期一,20:23,天气:晴,心情:晴。今天没有什么特殊的事情发生,周末休息了两天,周一回来继续学习啦,加油加油!!! 今日完成模电…

视频号矩阵管理系统:短视频内容营销的智能助手

随着短视频行业的蓬勃发展,视频号矩阵管理系统应运而生,为内容创作者和品牌提供了一站式的短视频管理和营销解决方案。本文将深入探讨视频号矩阵管理系统的核心功能,以及它如何助力用户在短视频营销领域取得成功。 视频号矩阵管理系统概述 …

在PyTorch中使用TensorBoard

文章目录 在PyTorch中使用TensorBoard1.安装2.TensorBoard使用2.1创建SummaryWriter实例2.2利用add_scalar()记录metrics2.3关闭Writer2.4启动TensorBoard 3.本地连接服务器使用TensorBoard3.1方法一:使用SSH命令进行本地端口转发3.2方法二:启动TensorBo…

Python 全栈体系【三阶】(二)

第一章 Django 五、模板 1. 概述 Django中的模板是指可以动态生成任何基于文本格式文件的技术(如HTML、CSS等)。 Django中内置了自己的模板系统,称为DTL(Django Template Language), Django模板语言。 2. 配置 settings.py中关于模板的…

如何将资源前端通过 Docker 部署到远程服务器

作为一个程序员,在开发过程中,经常会遇到项目部署的问题,在现在本就不稳定的大环境下,前端开发也需要掌握部署技能,来提高自己的生存力,今天就详细说一下如何把一个前端资源放到远程服务器上面通过docker部…