GEE15:获取不同遥感指数的时间序列及不同指数间的关系

news2025/1/12 16:13:50

GEE

    • 1. 不同遥感指数间的时间序列分析
    • 2. 不同指数之间的关系

1. 不同遥感指数间的时间序列分析

  GPP数据在一定程度上和植被指数(如NDVI和EVI)有着显著的相关性,那么其相关性如何?如何从时间序列的角度来思考呢?下面我将用GEE代码解答这个问题。

数据:

  • GPP MOD17A2H.006 Terra Gross Primary Productivity 8-Day Global 500m
  • NDVI & EVI MOD13Q1.006 Terra Vegetation Indices 16-Day Global 250m
  • DEM Copernicus DEM GLO-30 Global 30m Digital Elevation Model
// 不同数据源的时间序列分析(GPP,NDVI and EVI)
// 研究区设置
var ROI = ee.FeatureCollection('projects/ee-*******736/assets/Sichuan_province')
var styling = {color:"red",fillColor:"00000000"}
Map.centerObject(ROI,5)
Map.addLayer(ROI.style(styling),{},"geometry")

// 数据预处理
// 选择数据集并进行波段比例换算
var years = ee.List.sequence(2000, 2022);
var collectYear = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    var GPP = ee.ImageCollection('MODIS/006/MOD17A2H')
                  .select('Gpp')
                  .filterDate(start, end)
                  .map(function(image){
                    return image.multiply(0.001).set(image.toDictionary(image.propertyNames()));// 此处将GPP扩大了10倍
                  }).mean().rename('GPP')
    var NDVI = ee.ImageCollection("MODIS/006/MOD13Q1")
                  .filterDate(start, end)
                  .select("NDVI")
                  .map(function(image){
                    return image.multiply(0.0001).set(image.toDictionary(image.propertyNames()))
                  }).mean().rename('NDVI');
    var EVI = ee.ImageCollection("MODIS/006/MOD13Q1")
                  .filterDate(start, end)
                  .select("EVI")
                  .map(function(image){
                    return image.multiply(0.0001).set(image.toDictionary(image.propertyNames()))
                  }).mean().rename('EVI');
    return GPP.addBands(NDVI).addBands(EVI).set('year',y)
	}
  )
);
print (collectYear);


// 计算研究区域内的波段时间序列
var Yearlychart = ui.Chart.image.series({
  imageCollection : collectYear.select('NDVI','EVI','GPP'),
  region : ROI,
  reducer:ee.Reducer.mean(),
  scale:500,
  xProperty: 'year',})
  .setChartType('LineChart').setOptions({
  interpolateNulls: true,
  title: 'GPP & NDVI time series',
  hAxis: {title: 'Date'},
  vAxis: {title: 'GPP & NDVI & EVI',viewWindowMode: 'explicit'}
  });
print('GPP & NDVI & EVI 时间序列',Yearlychart);

  结果:
在这里插入图片描述
  可见GPP在一定程度上和植被指数有着显著的相关性,其中EVI的变化趋势与GPP变化趋势更相近。

2. 不同指数之间的关系

  为了了解不同指数之间的关系,如线性,我在这里使用GPP与EVI进行分析:

// 不同数据源的时间序列分析(GPP,NDVI and EVI)
// 研究区设置
var ROI = ee.FeatureCollection('projects/ee-******736/assets/Sichuan_province')
var styling = {color:"red",fillColor:"00000000"}
Map.centerObject(ROI,5)
Map.addLayer(ROI.style(styling),{},"geometry")

//数据选择Gpp和EVI(EVI与Gpp的时间序列更加契合)
var start = ee.Date.fromYMD(2022, 3, 1);
var end = start.advance(6, 'month');    // 选择生长季
var GPP = ee.ImageCollection('MODIS/006/MOD17A2H') // 空间分辨率为500m
                  .select('Gpp')
                  .filterDate(start, end)
                  .map(function(image){
                    return image.multiply(0.0005).set(image.toDictionary(image.propertyNames()));
					         //此处将GPP扩大了5倍
                  }).mean().rename('GPP')
                  .clip(ROI);
var EVI = ee.ImageCollection("MODIS/006/MOD13Q1")  // 空间分辨率为250m
                  .filterDate(start, end)
                  .select("EVI")
                  .map(function(image){
                    return image.multiply(0.0001).set(image.toDictionary(image.propertyNames()));
                  }).mean().reproject('EPSG:4326',null,500)
                  .clip(ROI);
				  


// 建立EVI与Gpp两个数组,需要保持两个数据的空间分辨率一致,500m即可
var merge = EVI.addBands(GPP).clip(ROI);
var array = merge.reduceRegion({reducer: ee.Reducer.toList(), geometry: ROI, scale: 1000});
var x = ee.List(array.get('GPP')).slice(0, 5000);//注意:此处的切片范围不能超过数据向量本身的范围,否则会报错
var y = ee.List(array.get('EVI')).slice(0, 5000);


// 数据可视化
var chart = ui.Chart.array.values({array: y, axis: 0, xLabels: x}).setOptions({
  title: 'Relationship between the EVI and GPP',
  colors: ['green'],
  hAxis: {
    title: 'GPP(kg*C/m^2)',
    titleTextStyle: {italic: false, bold: true},
    viewWindow: {min: 0, max: 0.3}
  },
  vAxis: {
    title: 'EVI values',
    titleTextStyle: {italic: false, bold: true},
    viewWindow: {min: -0.1, max: 0.7}
  },
  pointSize: 2, //调整点的大小
  legend: {position: 'none'},
});

print('Relationship between the EVI and GPP',chart);

结果:在这里插入图片描述

可以看出GPP与EVI存在着一定的线性相关性。

  EVI与地形 (海拔高度) 之间的变化关系:

// 研究区设置
var ROI = ee.FeatureCollection('projects/ee-yipeizhao736/assets/Sichuan_province')
var styling = {color:"red",fillColor:"00000000"}
Map.centerObject(ROI,5)
Map.addLayer(ROI.style(styling),{},"geometry")

//数据选择DEM和EVI
var start = ee.Date.fromYMD(2022, 3, 1);
var end = start.advance(6, 'month');    // 选择生长季
var DEM = ee.ImageCollection('COPERNICUS/DEM/GLO30') // 空间分辨率为30m
                  .select('DEM')
                  .map(function(image){
                    return image.set(image.toDictionary(image.propertyNames()));
                  }).mean().rename('DEM')
                  .clip(ROI);
var EVI = ee.ImageCollection("MODIS/006/MOD13Q1")  // 空间分辨率为250m
                  .filterDate(start, end)
                  .select("EVI")
                  .map(function(image){
                    return image.multiply(0.0001).set(image.toDictionary(image.propertyNames()));
                  }).mean().rename('EVI')
                  .clip(ROI);
				  


var merge = EVI.addBands(DEM).clip(ROI);
var array = merge.reduceRegion({reducer: ee.Reducer.toList(), geometry: ROI, scale: 250}); //
var x = ee.List(array.get('DEM')).slice(0, 5000);
var y = ee.List(array.get('EVI')).slice(0, 5000);


// 数据可视化
var DEM_EVIchart = ui.Chart.array.values({array: y, axis: 0, xLabels: x}).setOptions({
  title: 'Relationship between the EVI and DEM',
  colors: ['green'],
  hAxis: {
    title: 'DEM(m)',
    titleTextStyle: {italic: false, bold: true},
    viewWindow: {min: 2000, max: 5500}
  },
  vAxis: {
    title: 'EVI values',
    titleTextStyle: {italic: false, bold: true},
    viewWindow: {min: -0.1, max: 0.9}
  },
  pointSize: 2, //调整点的大小
  legend: {position: 'none'},
});
print('Relationship between the EVI and DEM', DEM_EVIchart);

  结果:

在这里插入图片描述

  修改数据集,考虑NDVI与海拔之间的关系,结果如下:

在这里插入图片描述

  可见,随着海拔上升,植被复杂存在着复杂且不均匀的变化,值得注意的是在3250 ~ 3500之间的植被分布较为集中,且包含了各种类型或者密度的植被;植被分布峰值位于3500 ~ 4000m海拔之间;通过这种方法,我们可以了解植被丰富度随海拔的变化情况。

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

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

相关文章

【Spring Cloud】深入探索统一网关 Gateway 的搭建,断言工厂,过滤器工厂,全局过滤器以及跨域问题

文章目录 前言为什么需要网关以及网关的作用网关的技术实现 一、Gateway 网关的搭建1.1 创建 Gateway 模块1.2 引入依赖1.3 配置网关1.4 验证网关是否搭建成功1.5 微服务结构分析 二、Gateway 断言工厂2.1 Spring 提供的断言工厂2.2 示例:设置断言工厂 三、Gateway …

【算法训练-字符串 三】字符串相加

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【字符串相加】,使用【字符串】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

visual studio禁用qt-vsaddin插件更新

visual studio里qt-vsaddin插件默认是自动更新的,由于qt-vsaddin插件新版本的操作方式与老版本相差较大,且新版本不稳定,容易出Bug,所以需要禁用其自动更新,步骤如下:     点击VS2019菜单栏上的【扩展】–…

制作pcb流畅

首先选择一款好用的软件。嘉立创,对新手友好,上手快,每个月还有免费的pcb打样卷。有官方的一对一客服服务。 作为一个新手我在绘制pcb时常进行如下几步。 1、绘制原理图 根据实际情况找到芯片对应的原理图,并添加自己需要的外设。…

Linux系统编程系列之互斥锁和读写锁

一、什么是互斥锁和读写锁 互斥锁是一种并发机制,用于控制多个线程对共享资源的访问。 读写锁是一种并发机制,用于控制多个线程对共享资源的访问。 二、特性 1、互斥锁 当一个线程获得了互斥锁并进入临界区(对共享资源进行访问)时…

鱼眼相机去畸变(图像拉直/展开/矫正)算法及实战总结

本文介绍两种方法 1、经纬度矫正法 2、棋盘格矫正法 一、经纬度矫正法 1、算法说明 经纬度矫正法, 可以把鱼眼图想象成半个地球, 然后将地球展开成地图,经纬度矫正法主要是利用几何原理, 对图像进行展开矫正。 经过P点的入射光线…

操作系统-《王道 操作系统》

概念、功能和目标 概念 什么是操作系统 功能和目标 作为系统的管理者向上提供方便简易的服务作为最接近底层硬件的层次 特征 并发 共享 并发与共享的关系—互为存在条件 虚拟 异步 发展与分类 单道批处理系统多道批处理系统 优点:多道程序并发执行&#xff0c…

Java笔记六(面向对象:类与对象)

面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据 抽象 三大特征:封装 继承 多态 从认识角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽…

【JVM】 类加载机制、类加载器、双亲委派模型详解

文章目录 前言一、类加载机制二、类加载器三、双亲委派模型总结 前言 📕各位读者好, 我是小陈, 这是我的个人主页 📗小陈还在持续努力学习编程, 努力通过博客输出所学知识 📘如果本篇对你有帮助, 烦请点赞关注支持一波, 感激不尽 &#x1f4d…

Foxit PDF

Foxit PDF 福昕PDF 软件,可以很好的编辑PDF文档。 调整PDF页面大小 PDF文档中,一个页面大,一个页面小 面对这种情况,打开Foxit PDF 右键单击需要调整的页面,然后选择"调整页面大小". 可以选择…

【网络安全-sql注入(5)】sqlmap以及几款自动化sql注入工具的详细使用过程

一,sqlmap 工具的详细使用 kali系统自带这个工具,无需安装直接sqlmap 后面接参数使用 Windows上参照以下方法安装即可 1-1 工具下载 1-1-1 sqlmap下载 sqlmap 工具下载地址: GitHub - sqlmapproject/sqlmap: Automatic SQL injection a…

【C语言】【动态内存管理】malloc,free,calloc,realloc

1.malloc函数 void* malloc(size_t size)功能&#xff1a;向内存申请字节为 size大小的空间 使用时要包含头文件&#xff1a;<stdlib.h> 开辟成功&#xff1a;返回开辟好的空间初始地址的指针 开辟失败&#xff1a;返回空指针 NULL 使用举例&#xff1a; (malloc和free…

Win10系统中GPU深度学习环境配置记录

运行环境 系统&#xff1a;Win10 处理器 Intel(R) Core(TM) i7-9700K CPU 3.60GHz 3.60 GHz 机带 RAM 16.0 GB 设备 ID A18D4ED3-8CA1-4DC6-A6EF-04A33043A5EF 产品 ID 00342-35285-64508-AAOEM 系统类型 64 位操作系统, 基于 x64 的处理器 显卡&#xff1a;NVIDIA GeF…

快速上手Apache POI

哈喽~大家好&#xff0c;这篇我们来看看快速上手Apache POI。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【日常学习上的分享】 &#x1f949;与这篇相关的文章&#xff1a; Red…

你写过的最蠢的代码是?——一起探讨编程的奇葩时刻

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

常见web信息泄露

一、源码(备份文件)泄露 1、git泄露 Git是一个开源的分布式版本控制系统&#xff0c;在执行git init初始化目录的时候&#xff0c;会在当前目录下自动创建一个.git目录&#xff0c;用来记录代码的变更记录等。发布代码的时候&#xff0c;如果没有把.git这个目录删除&#xff…

CCF CSP认证 历年题目自练 Day20

题目一 试题编号&#xff1a; 201903-1 试题名称&#xff1a; 小中大 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 题目分析&#xff08;个人理解&#xff09; 常规题目&#xff0c;先看输入&#xff0c;第一行输入n表示有多少数字&am…

Rabbitmq安装-docker版

1.简介 2.安装消息队列 下载地址https://www.rabbitmq.com/download.html 使用docker方式安装 需要先下载docker&#xff0c;参考文章https://blog.csdn.net/weixin_43917045/article/details/104747341?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22arti…

基于SSM在线医疗服务系统+jsp【附开题|万字文档(LW)和搭建文档】

主要功能 前台登录&#xff1a; 注册用户&#xff1a;用户名、密码、姓名、联系电话 注册医生&#xff1a;医生工号、密码、医生姓名、职称、联系电话、邮箱 用户&#xff1a; ①首页、药品推荐、新闻资讯、健康资讯展示 ②医生坐诊、个人介绍、评价、预约挂号、点我收藏、药品…

实现map和set

map和set的底层就是红黑树&#xff0c;所以只要实现了红黑树&#xff0c;就可以考虑封装出map和set。所以本文会重点介绍我是如何一步步封装map和set&#xff0c;就不会再介绍红黑树的实现&#xff0c;实现可看我上篇博客&#xff0c;个人觉得封装中最麻烦的就是模板参数和迭代…