GEE必须会教程——基于Landsat影像构建NDVI时间序列

news2024/11/14 13:58:22

很久很久以前,小编写了一篇基于MODIS影像构建归一化植被指数的文章,不知道大家还有没有印象,有一段时间没有更新时间序列分析相关的文章了。

今天,我们来看看基于Lansat影像,我们来看看在GEE上如何构建NDVI的时间序列。今天写起来有点手痛,小编就只能水一篇代码了。

//导入研究区域
var roi = ee.FeatureCollection('users/hesuixinya511/Province')
                            .filterMetadata("NAME","equals","重庆");
Map.centerObject(roi,6);
Map.addLayer(roi,{"color":"red"},"重庆");
//还原缩放
function applyScaleFactors(image) {
  var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
  return image.addBands(opticalBands, null, true)
              .addBands(thermalBands, null, true);
}
//定义去云掩膜函数
function Mask(image){
  var cloudMask = (1<<3);
  var cloudshadowMask = (1<<4);
  var QA = image.select("QA_PIXEL");
  var mask = QA.bitwiseAnd(cloudMask).eq(0).and(QA.bitwiseAnd(cloudshadowMask).eq(0));
  return image.updateMask(mask);
}
//对L5/L7/L8影像进行处理
var years = ee.List.sequence(2000, 2011);
var L5_COL = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    var ndvi = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2')
                  .filterDate(start, end)
                  .map(applyScaleFactors)
                  .map(Mask)
                  .map(function(image){
                    var ndvi = image.normalizedDifference(['SR_B4', 'SR_B3']).rename('NDVI');
                    return image.addBands(ndvi);
                  });
    return ndvi.reduce(ee.Reducer.median()).clip(roi)
                  .set('Year',y);
}));
print (L5_COL);

var years = ee.List.sequence(2012, 2012);
var L7_COL = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    var ndvi = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2')
                  .filterDate(start, end)
                  .map(applyScaleFactors)
                  .map(Mask)
                  .map(function(image){
                    var ndvi = image.normalizedDifference(['SR_B4', 'SR_B3']).rename('NDVI');
                    return image.addBands(ndvi);
                  });
    return ndvi.reduce(ee.Reducer.median()).clip(roi)
                  .set('Year',y);
}));
print (L7_COL);

var years = ee.List.sequence(2013, 2023);
var L8_COL = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    var ndvi = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
                  .filterDate(start, end)
                  .map(applyScaleFactors)
                  .map(Mask)
                  .map(function(image){
                    var ndvi = image.normalizedDifference(['SR_B5', 'SR_B4']).rename('NDVI');
                    return image.addBands(ndvi);
                  });
    return ndvi.reduce(ee.Reducer.median()).clip(roi)
                  .set('Year',y);
}));
print (L8_COL);

var data = ee.ImageCollection(L5_COL.merge(L7_COL).merge(L8_COL));
print(data);
//创建时间序列图表.
var yearlychart = ui.Chart.image.series({
    imageCollection: data.select('NDVI_median'),
    region: roi,
    reducer: ee.Reducer.mean(),
    scale: 500,
    xProperty:'Year'
    }).setOptions({
      interpolateNulls: true,
      lineWidth: 2,
      title: 'NDVI Daily Time Seires',
      vAxis: {title: 'NDVI', viewWindow: {max: 0.8,min: 0.4,}},
      hAxis: {title: 'Date'},
      trendlines: { 0: {title: 'NDVI_trend',type:'linear', showR2: true,  color:'red', visibleInLegend: true}}
    });
print(yearlychart);

来看看结果:

今天的分享到这里就结束了,祝大家身体健康! 

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

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

相关文章

AI跟踪报道第50期-新加坡内哥谈技术-本周AI新闻: 听听没有Scarlett Johansson的GPT-4o更加震撼

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

shellcode加密免杀

通过加密shellcode方式过安全软件拦截 先说结论&#xff0c;笔者没成功 shellcode&#xff1a; Shellcode 是一段用于在目标系统上执行特定操作的机器码。它通常被用于利用软件漏洞&#xff0c;以获取对目标系统的控制权或执行特定的恶意行为。 Shellcode 可以执行诸如创建进程…

MySQL 预处理、如何在 [Node.js] 中使用 MySQL?

前面文章我们已经总结了mysql下载安装配置启动以及如何用 Navicat 连接&#xff0c;还有MySQL的入门基础知识 、Node.js的基本知识、Express框架基于Node.js基础知识、下面我们总结如何在Node.js中使用MySQL数据库以及MySQL预处理基本知识。 目录 一、MySQL预处理 二、如何在…

JavaFX布局-GridPane

JavaFX布局-GridPane 常用实行alignmenthgapvgappaddinggridLinesVisible 实现方式Java实现fxml实现 使用行和列来组织其子节点将节点放置在二维网格中的任何单元格&#xff0c;同时也可以设置跨越行、跨越列 常用实行 alignment 对齐方式&#xff0c;设置内容居中&#xff0…

032-GeoGebra中级篇-列表与集合(list and set)及常用操作大全

列表在 GeoGebra 中扮演着重要角色&#xff0c;使用户能够处理和管理一组数值、点或对象。这些列表可以用于执行多种操作&#xff0c;如计算平均值、排序、查找最大或最小值、绘制点的集合等。通过使用列表&#xff0c;用户可以简化复杂的计算步骤&#xff0c;增强图形的动态性…

《计算机组成原理》(第3版)第1章 计算机系统概论 复习笔记

第1章 计算机系统概论 一、计算机系统简介 &#xff08;一&#xff09;计算机的软硬件概念 1&#xff0e;计算机系统由“硬件”和“软件”两大部分组成 &#xff08;1&#xff09;所谓“硬件”&#xff0c;是指计算机的实体部分&#xff0c;如主机、外部设备等。 &#xff0…

phpMyAdmin 漏洞

一、日志文件拿shell 在sql语句执行界面执行命令 将日志功能打开 再次查看 更改日志保存路径 擦看是否更改成功 植入一句话木马 访问木马 使用工具连接 二、导⼊导出拿WebShell 判断网站位置 判断在www在Extensions同级 写shell 访问shell,使用工具连接 三、可视化界面getshe…

C++11特性(二)

系列文章目录 C11特性(一) 文章目录 系列文章目录前言一、可变模板参数1.1 什么是可变参数模板1.2 如何打印可变模板参数的内容递归函数方式展开参数包逗号表达式展开参数包 1.3 emplace_back的实现1.4 可变模板参数为何高效 二、lambda表达式2.1 C98中的一个例子2.2 lambda表…

基于JAVA的商品供应管理系统-JavaEE

点击下载源码 基于JAVA的商品供应管理系统-JavaEE 摘 要 当今社会己进入信息社会时代&#xff0c;信息己经受到社会的广泛关注&#xff0c;被看作社会和科学技术发展的三大支柱&#xff08;材料、能源、信息&#xff09;之一。信息是管理的基础&#xff0c;是进行决策的基本依…

vue3使用svg(无废话版)

1.去阿里云矢量图标库&#xff0c;复制svg代码 2.新建一个phone.svg文件(存放在assets/icons/phone.svg)&#xff0c;内容是刚刚复制的svg代码 <svg t"1722592653925" class"icon" viewBox"0 0 1024 1024" version"1.1" xmlns&quo…

数据失踪?这四款U盘数据恢复利器教你如何避免错误操作与保障安全性

当U盘上的数据不见了&#xff0c;数据恢复软件就像是你的救命稻草。一些好的数据恢复软件还会提供安全的恢复选项&#xff0c;确保在恢复的过程中不会对原来的数据造成损害。接下来&#xff0c;我们就来看看这些顶级的U盘数据恢复软件是怎么帮我们恢复U盘数据的&#xff0c;同时…

红旗E-QM5起火,一汽红旗否认车辆质量问题

近日&#xff0c;据媒体报道&#xff0c;7月31日下午&#xff0c;长春一辆一汽红旗E-QM5发生起火事故。 一汽红旗方面则表示&#xff1a;“现场勘查和初步调查表明&#xff0c;该事件并非因车辆自身质量问题导致自燃。疑似车辆在行驶过程中与路面井盖发生碰撞导致动力电池受损&…

专业130+总分430+浙大浙江大学842考研信号系统与数字电路经验电子信息与通信工程真题,大纲,参考书。

通过接近一年的备考&#xff0c;专业842信号和数电总结130&#xff08;专业课比预期低&#xff09;&#xff0c;总分430如愿上岸浙大&#xff0c;这一路复习走过弯路&#xff0c;淋过雨&#xff0c;也走过大路&#xff0c;风和日丽&#xff0c;总结一些自己的心得&#xff0c;希…

C语言 ——— 学习、使用 strcmp函数 并模拟实现

目录 strcmp函数的功能 学习strcmp函数​编辑 使用strcmp函数 模拟实现strcmp函数 strcmp函数的功能 strcmp函数的功能是字符串比较&#xff0c;两个字符串的对应位置的字符进行比较&#xff0c;直到字符不同或达到终止的 \0 字符为止 举例说明&#xff1a; 字符串1&am…

法制史学习笔记(个人向) Part.7

法制史学习笔记(个人向) Part.7 11. 清朝法律制度 11.1 立法概述 11.1.1 立法指导思想 简单来说是&#xff1a;详译明律&#xff0c;参以国制&#xff1b; 努尔哈赤时期&#xff0c;后金政权处于由习惯法到成文法的过渡过程中&#xff1b;皇太极统治时期&#xff0c;奉行“参…

Linux中vim的基本介绍和使用

善为理者&#xff0c;举其纲&#xff0c;疏其网。 vim 1、vim介绍2、命令模式详情3、底行模式详情4、困难问题5、历史存疑问题6、vim配置问题6、1、配置的原理6、2、一键式配置 1、vim介绍 如果我面想要在Linux上编写代码的话&#xff0c;我就需要vim来帮助我们编写代码。但是…

基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页--实现修改商品的名字与价格功能(万字爆更)增查改删,三端交互样样齐全

技术支持&#xff1a;JAVA、JSP 服务器&#xff1a;TOMCAT 7.0.86 编程软件&#xff1a;IntelliJ IDEA 2021.1.3 x64 前文几个功能的实现的博客 基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网&#xff08;1&#xff09;-项目搭建&#xff08;前期准备工作&am…

Pycharm2023.1安装及其破解(含安装包)

一、下载 安装包 pycharm-professional-2023.1.exe https://www.alipan.com/s/f9WgrwLRbVn 提取码: 0yow 二、安装 三、激活 激活码&#xff1a;pycharm专业版激活码,2025.1月结束_pycharm序列号-CSDN博客 四、汉化

2024年8月2日(安装MySQL,以及各种操作)

一、安装并配置MySQL 1、下载mysql软件包 [rootmysql ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 2、解压 [rootmysql ~]# tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar 3、检查是否具有mariadb/mysql&…