GEE代码实例教程详解:长时间序列NDVI分析

简介

本篇博客将介绍如何使用Google Earth Engine (GEE) 对长时间序列的Landsat数据进行归一化植被指数(NDVI)分析。通过此分析,可以监测和评估1982年至2024年间的植被变化趋势。

背景知识

Landsat数据集

Landsat是美国地质调查局和美国航天局联合发射的一系列卫星,提供地表的长时间序列、中等分辨率的遥感数据。

NDVI

归一化植被指数(NDVI)是一种常用的遥感指数,用于估算植被覆盖度和植被健康状态。

完整代码

// 定义研究区域的坐标点
var cor = [[48.62559911358055, 31.65418476680761],[48.91124364483055, 31.65418476680761],[48.91124364483055, 31.885355756064595],[48.62559911358055, 31.885355756064595],[48.62559911358055, 31.65418476680761]
];// 创建多边形区域
var roi = ee.Geometry.Polygon(cor);// 将地图中心设置为研究区域
Map.centerObject(roi);// 定义NDVI计算函数
function ndvi_tm_etm(img) {var bands = img.multiply(0.0000275).add(-0.2);var ndvi = bands.normalizedDifference(['SR_B4', 'SR_B3']).rename('ndvi');return ndvi.copyProperties(img, img.propertyNames());
}// 定义SLC偏移修正函数
function slc_off(img) {var bands = img.multiply(0.0000275).add(-0.2);var ndvi = bands.normalizedDifference(['SR_B4', 'SR_B3']).rename('ndvi');var filter = ndvi.focalMedian(1, 'square', 'pixels', 10);var filled = filter.blend(ndvi).rename('ndvi');return filled.copyProperties(img, img.propertyNames());
}// 定义OLI传感器NDVI计算函数
function ndvi_oli(img) {var bands = img.multiply(0.0000275).add(-0.2);var ndvi = bands.normalizedDifference(['SR_B5', 'SR_B4']).rename('ndvi');return ndvi.copyProperties(img, img.propertyNames());
}// 筛选Landsat 4-9数据集并计算NDVI
var landsat4 = ee.ImageCollection("LANDSAT/LT04/C02/T1_L2").select('SR_B.*').filterDate('1982', '1994')// ... 其他筛选条件 ....map(ndvi_tm_etm);var landsat5 = ee.ImageCollection("LANDSAT/LT05/C02/T1_L2").select('SR_B.*').filterDate('1984', '2013')// ... 其他筛选条件 ....map(ndvi_tm_etm);// ... Landsat 7 SLC正常和偏移后的数据 ...var landsat8 = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2").select('SR_B.*').filterDate('2013', '2024')// ... 其他筛选条件 ....map(ndvi_oli);var landsat9 = ee.ImageCollection("LANDSAT/LC09/C02/T1_L2").select('SR_B.*').filterDate('2021', '2024')// ... 其他筛选条件 ....map(ndvi_oli);// 合并所有Landsat数据集并排序
var landsat_collections = landsat4.merge(landsat5).merge(landsat7_slcon).merge(landsat7_slcoff).merge(landsat8).merge(landsat9).sort('system:time_start');// 打印NDVI时间序列图表
print(ui.Chart.image.series({imageCollection: landsat_collections,region: roi,reducer: ee.Reducer.mean(),scale: 100,xProperty: 'system:time_start'})
);// 导出2010年的NDVI图像到Google Drive
Export.image.toDrive({image: landsat_collections.filterDate('2010', '2011').toBands().clip(roi).float(),description: 'landsat2010',scale: 30,crs: 'EPSG:4326',maxPixels: 1e13,region: roi,folder: 'test'
});

代码详解

1. 定义研究区域

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

2. 定义NDVI计算函数

定义ndvi_tm_etm函数,用于计算Landsat 4-5和7(SLC正常)的NDVI。

3. 定义SLC偏移修正函数

定义slc_off函数,用于处理Landsat 7 SLC偏移后的数据。

4. 定义OLI传感器NDVI计算函数

定义ndvi_oli函数,用于计算Landsat 8-9的NDVI。

5. 筛选和处理Landsat数据集

分别筛选Landsat 4-9的数据集,应用相应的NDVI计算函数,并处理SLC偏移问题。

6. 合并和排序数据集

将所有处理过的Landsat数据集合并,并按时间排序。

7. 可视化NDVI时间序列

使用ui.Chart.image.series打印NDVI时间序列图表。

8. 导出数据

将2010年的NDVI图像导出到Google Drive。

结论

本教程展示了如何使用GEE对长时间序列的Landsat数据进行NDVI分析。通过此分析,可以监测植被覆盖度的变化,为生态研究和环境监测提供支持。

进一步探索

GEE提供了多种工具和方法来进行时间序列分析和环境监测。在后续的教程中,我们将继续探索GEE在不同领域的应用。

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

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

相关文章

Spring Security的Filter

Spring Security 是一个功能强大的、高度可定制的身份验证和访问控制框架,它为基于 Java 的应用程序提供了全面的安全解决方案。在 Spring Security 中,过滤器(Filter)扮演着非常重要的角色,它们被用来拦截请求并应用安…

React@16.x(52)Redux@4.x(1)- 核心概念

目录 1,MVC2,前端MVC的困难3,Flux4,Redux 1,MVC 是一个解决方案,用于降低 UI 和数据关联的复杂度。 在早期前后端未做分离时,服务端会响应一个完整的HTML,包含页面需要的所有数据。而…

Spring的AOP进阶。(AOP的通知类型、通知顺序、切入点表达式和连接点。)

3. AOP进阶 AOP的基础知识学习完之后,下面我们对AOP当中的各个细节进行详细的学习。主要分为4个部分: 通知类型通知顺序切入点表达式连接点 我们先来学习第一部分通知类型。 3.1 通知类型 在入门程序当中,我们已经使用了一种功能最为强大…

C++ this指针的作用

this指针的作用 隐式存在:在每个非静态成员函数中,this 指针隐式存在,无需声明。指向对象实例: this 指针指向调用成员函数的对象。成员访问:成员函数通过 t his 指针隐式访问对象的数据成员和函数成员。类型&#xf…

武汉免费 【FPGA实战训练】 Vivado入门与设计师资课程

一.背景介绍 当今高度数字化和智能化的工业领域,对高效、灵活且可靠的技术解决方案的需求日益迫切。随着工业 4.0 时代的到来,工业生产过程正经历着前所未有的变革,从传统的机械化、自动化逐步迈向智能化和信息化。在这一背景下&…

BP神经网络的实践经验

目录 一、BP神经网络基础知识 1.BP神经网络 2.隐含层选取 3.激活函数 4.正向传递 5.反向传播 6.不拟合与过拟合 二、BP神经网络设计流程 1.数据处理 2.网络搭建 3.网络运行过程 三、BP神经网络优缺点与改进方案 1.BP神经网络的优缺点 2.改进方案 一、BP神经网络基…

小山菌_代码随想录算法训练营第四十二天| 121. 买卖股票的最佳时机 、

121. 买卖股票的最佳时机 文档讲解&#xff1a;代码随想录. 买卖股票的最佳时机 视频讲解&#xff1a;动态规划之 LeetCode&#xff1a;121.买卖股票的最佳时机1 状态&#xff1a;已完成 代码实现 class Solution { public:int maxProfit(vector<int>& prices) {// …

windows obdc配置

进入控制面板&#xff1a; 进入管理工具&#xff1a;

java解析请求的字符串参数Content-Disposition: form-data;和拼接的键值对

项目场景&#xff1a; 获取到http请求的参数&#xff0c;已经被字符串接收了&#xff0c;需求是需要从字符串中解析出来。 一种情况是&#xff1a;Content-Disposition: form-data; name"userCode" 另一种是&#xff1a;key1value1&key2value2&key3value3…

代码随想录算法训练营第六十二天 | 108. 冗余连接、109. 冗余连接II、复习

108. 冗余连接 题目链接&#xff1a;https://kamacoder.com/problempage.php?pid1181 文档讲解&#xff1a;https://www.programmercarl.com/kamacoder/0108.%E5%86%97%E4%BD%99%E8%BF… 思路 从前向后遍历每一条边&#xff08;因为优先让前面的边连上&#xff09;&#xff0…

Simple_ReAct_Agent

参考自https://www.deeplearning.ai/short-courses/ai-agents-in-langgraph&#xff0c;以下为代码的实现。 Basic ReAct Agent(manual action) import openai import re import httpx import os from dotenv import load_dotenv, find_dotenvOPENAI_API_KEY os.getenv(OPEN…

java 实现人脸特征提取

1. 安装必要的库 确保你已经安装了JPEG库、BLAS和LAPACK库。在Ubuntu或Debian系统上&#xff0c;可以使用以下命令安装&#xff1a; sudo apt-get update sudo apt-get install libjpeg-dev libblas-dev liblapack-dev 在CentOS或Fedora系统上&#xff0c;可以使用以下命令安…

Numpy数组基础操作

1.创建数组 import numpy as np # ————创建数组———— np.array([1,2,3,4]) np.array(range(10))# 迭代对象 np.array([i for i in range(10) if i%20]) #列表&#xff0c;[]列表推导式返回列表 np.array([i for i in range(10) if i%20]) #()# 生成器&#xff0c;列表推…

Pytorch框架权重文件转onnx格式

Pytorch框架权重文件转onnx格式 代码案例 import torch import torchvision.models as modelsmodel models.resnet50() model.load_state_dict(torch.load("./model/pytorch-resnet50.pth"))model.eval() example_input torch.randn(32, 3, 224, 224) # 根据模型…

transformer网络学习

Transformer encoder-decoder模型之间共享的是Encoder最后一层输出的hidden-state。 GitHub - huggingface/transformers: &#x1f917; Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX. Bert2Bert中&#xff0c;Encoder的hidden-state同…

昇思25天学习打卡营第10天|ShuffleNet图像分类

ShuffleNet网络结构 ShuffleNet是一种专为移动设备设计的、计算效率极高的卷积神经网络&#xff08;CNN&#xff09;架构。其网络结构的设计主要围绕减少计算复杂度和提高模型效率展开&#xff0c;通过引入逐点分组卷积&#xff08;Pointwise Group Convolution&#xff09;和…

AutoX.js从某音分享链接解析出视频ID

背景 从某音分享的链接中解析出数字的videoID&#xff0c;用来做评论Intent跳转 思路 基本所有的短链接都是302跳转或者js跳转&#xff0c;熟悉http协议都知道&#xff0c;当状态码为302&#xff0c;从headers中提取Location即刻获得视频的原链接 链接中就带有videoId 要注意…

【大模型LLM面试合集】大语言模型基础_Word2Vec

Word2Vec 文章来源&#xff1a;Word2Vec详解 - 知乎 (zhihu.com) 1.Word2Vec概述 Word2Vec是google在2013年推出的一个NLP工具&#xff0c;它的特点是能够将单词转化为向量来表示&#xff0c;这样词与词之间就可以定量的去度量他们之间的关系&#xff0c;挖掘词之间的联系。 …

Java之父James Gosling宣布正式退休 创造无数人的饭碗

编程语言Java的创始人&#xff0c;被誉为“Java之父”的James Gosling&#xff0c;近日在社交媒体上宣布了自己正式退休的消息。Gosling表示&#xff1a;“我终于退休了。做了这么多年的软件工程师&#xff0c;现在是时候享受人生了。”他透露&#xff0c;在亚马逊的过去7年是非…

提高LabVIEW软件通用性的方法

提高LabVIEW软件通用性的方法 在使用LabVIEW开发软件时&#xff0c;提高软件的通用性非常重要。通用性意味着软件可以在不同的应用场景中使用&#xff0c;具备高度的适应性和灵活性&#xff0c;从而提高软件的价值和用户满意度。以下从多个角度详细探讨如何提高LabVIEW软件的通…