Google Earth Engine谷歌地球引擎提取多波段长期反射率数据后绘制折线图并导出为Excel

news2024/10/7 20:34:23

  本文介绍在谷歌地球引擎GEE中,提取多年遥感影像多个不同波段反射率数据,在GEE内绘制各波段的长时间序列走势曲线图,并将各波段的反射率数据与其对应的成像日期一起导出为.csv文件的方法。

  本文是谷歌地球引擎(Google Earth Engine,GEE)系列教学文章的第十六篇,更多GEE文章请参考专栏:GEE学习与应用(https://blog.csdn.net/zhebushibiaoshifu/category_11081040.html)。

  首先,我们来看一下本文需要实现的需求。我们现在希望获取某一个点位置上,Landsat 7遥感影像数据的可见光近红外4个波段的反射率数据,时间跨度是从2013年到2022年。其中,我们在提取出来指定波段、指定空间区域、指定时间范围的数据后,为了保证数据大致无误,因此希望首先可以在GEE内绘制一张包含了上述各波段在这一段时间内反射率数据的走势图,随后将反射率数据导出为.csv文件。

  知道了需求,我们即可开始代码的撰写。本文需要用到的代码如下。

var point = ee.Geometry.Point([-95.363271, 38.640067]);
var startDate = "2013-01-01";
var endDate = "2022-12-31";

var rCollection = ee.ImageCollection("LANDSAT/LE07/C02/T1_L2")
  .select(["SR_B1", "SR_B2", "SR_B3", "SR_B4"])
  .filterBounds(point)
  .filterDate(startDate, endDate);
print(rCollection)
  
var trueCollection = rCollection.map(function(image) {
  var trueImage = image.multiply(0.0000275).subtract(0.2);
  var trueImageP = image.addBands(trueImage, null, true)
  return trueImageP;
});
  
print(ui.Chart.image.series({
  imageCollection: trueCollection,
  region: point,
  reducer: ee.Reducer.mean(),
  scale: 250,
}));

var rTable = ee.FeatureCollection(trueCollection.map(function(image) {
  var date = image.date().format("yyyy-MM-dd");
  var BValue = image.reduceRegion(ee.Reducer.mean(), point, 500).get("SR_B1");
  var GValue = image.reduceRegion(ee.Reducer.mean(), point, 500).get("SR_B2");
  var RValue = image.reduceRegion(ee.Reducer.mean(), point, 500).get("SR_B3");
  var NValue = image.reduceRegion(ee.Reducer.mean(), point, 500).get("SR_B4");
  return ee.Feature(null, {date: date, Blue: BValue, Green: GValue, Red: RValue, NIR: NValue});
}));

Export.table.toDrive({
  collection: rTable,
  description: "data_table_5",
  folder: "GEE_Export",
  fileFormat: "CSV"
});

  上述代码的具体含义如下。

  首先,我们通过var point = ee.Geometry.Point([-95.363271, 38.640067]);定义一个点位point,也就是我们希望提取数据的点。随后,通过var startDate = "2013-01-01";定义起始日期startDate,表示数据获取的起始日期;var endDate = "2022-12-31";则是定义结束日期endDate,表示数据获取的结束日期。紧接着,我这里是选择通过var rCollection = ee.ImageCollection("LANDSAT/LE07/C02/T1_L2"),获取LANDSAT 7Level-2表面反射率数据集LANDSAT/LE07/C02/T1_L2

  随后,基于.select(["SR_B1", "SR_B2", "SR_B3", "SR_B4"])选择感兴趣的波段,我们这里是选择了BlueGreenRed3个可见光波段,和NIR这一近红外波段;这里我们需要用4个波段在遥感影像数据产品中的名称(也就是上述"SR_B1"这种),来获取对应的数据。接下来,我们对数据集进行空间、时间过滤,保留包含指定点位、处于指定时间范围的数据。

  其次,我们在var trueCollection = rCollection.map(function(image) { ... });这里,使用map函数对rCollection中的每个图像应用函数,并将结果保存在trueCollection中。这里的函数就是对原始的遥感影像加以辐射定标,将每个像素值乘以0.0000275,并减去0.2,得到新的图像trueImage。随后,注意需要将原始图像image和处理后的图像trueImage连接起来,形成新的图像trueImageP——这样使得我们定标后的遥感影像数据集包含有原始图像的各项属性信息(例如开始、结束时间等),才可以进行后续的绘图、导出工作。在这里,我选择通过设置image.addBands(trueImage, null, true)中第3个参数为true,直接将辐射定标的图像覆盖原有的图像,避免不必要的数据冗余。

  接下来,我们ui.Chart.image.series函数绘制时间序列图;随后使用map函数对trueCollection中的每个图像应用函数,并将结果保存在rTable中。这个函数计算了每个图像的日期和各个波段的具体数值,并将这些值作为属性添加到rTable中的每个要素。

  最后,我们即可将rTable导出为.csv文件,保存在Google Drive的指定文件夹中。

  运行上述代码,首先我们可以在GEE中看到具体的长时间序列曲线走势图;如下图所示。可以看到,走势图中的数据都已经是做过了辐射定标之后的了。

  随后,我们打开导出的.csv文件,可以看到其中具体的数据信息如下——包括了我们需要导出的4个波段与日期信息,以及其他2个系统默认导出的图像信息。

  至此,大功告成。

欢迎关注:疯狂学习GIS

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

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

相关文章

Python图像处理【13】使用PIL执行图像降噪

使用PIL执行图像降噪 0. 前言1. 均值滤波器1.1 均值滤波器原理1.2 使用均值滤波器去除椒盐噪声 2. 高斯滤波器2.1 高斯滤波器原理2.2 使用高斯模糊滤波器去除椒盐噪声 3. 中值滤波器3.1 中值滤波器原理3.2 使用中值滤波器去除椒盐噪声 小结系列链接 0. 前言 在本节中&#xff…

MAXENT模型的生物多样性教程

详情点击链接:基于MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化及未来气候变化下评估中的应用及论文写作 一:生物多样性保护格局与自然保护区格局优化 1.我国生物多样性格局与分布; 2.我国自然保护区格局与分布&…

Emacs之改造搜索文件fd-dired(基于fd命令)(一百二十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【【51单片机AD转换模块】】

代码是简单的&#xff0c;板子是坏的&#xff0c;电阻是识别不出来的 main.c #include <REGX52.H> #include "delay.h" #include "LCD1602.h" #include "XPT2046.h"unsigned int ADValue;void main(void) {LCD_Init();LCD_ShowString(1,1…

format格式化输出语法详解

hello&#xff0c;这里是Token_w的文章&#xff0c;主要讲解python的基础学习&#xff0c;希望对大家有所帮助 整理不易&#xff0c;感觉还不错的可以点赞收藏评论支持&#xff0c;感谢&#xff01; 使用 % 操作符对各种类型的数据进行格式化输出&#xff0c;这是早期 Python提…

文档、视频、图片上传(点击、拖拽、批量导入)要‍‍‍‍怎么实现?!

文章目录 Excel上传和图片视频上传Excel上传页面中的使用图片和视频上传的错误提醒以及逻辑处理上传进度处理 Excel上传和图片视频上传 Excel上传 excel的上传其实分为两步&#xff1a; 1、下载excel模板 2、上传excel模板 在项目中涉及到excel的业务&#xff0c;基本上都…

Neo4j

存储结构 参考&#xff1a; 《图数据库&#xff08;第二版&#xff09;》 https://www.jianshu.com/p/94c1166eb400 https://blog.csdn.net/sinat_32336967/article/details/103348528 更新日期&#xff1a;2022-8-18 Neo4j版本&#xff1a;4.4 类型ID长度&#xff08;bit&…

使用Ensp配置DHCP协议

如何使用Ensp配置DHCP协议&#xff0c;为PC自动分配IP地址 什么是DHCP&#xff1f; Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议&#xff0c;简单理解为自动分配IP地址&#xff0c;有了这个协议就不用手动配置IP地址了&#xff0c;如图 思路 给路由…

Monkey日志分析

1. Monkey日志详解 Monkey日志由以下几部分组成&#xff1a; 测试命令信息 随机种子seed、运行次数、可运行应用列表、各事件百分比。 App切换和Activity跳转 可以看到切换到了哪个App&#xff0c;从哪个Activity跳转到了哪个Activity&#xff0c;如果发生了异常&#xff0c…

JVM详解(超详细)

目录 JVM 的简介 JVM 执行流程 JVM 运行时数据区 由五部分组成 JVM 的类加载机制 类加载的过程(五个) 双亲委派模型 类加载器 双亲委派模型的优点 JVM 中的垃圾回收策略 GC GC 中主要分成两个阶段 死亡对象的判断算法 引用计数算法 可达性分析算法 垃圾回收算…

Mac m1 下eclipse下载及jdk环境变量配置

一、安装eclipse 1、下载eclipse Eclipse downloads - Select a mirror | The Eclipse Foundation 此版本为m1芯片适用版本 2、下载后下一步安装即可 安装成功后&#xff0c;可以看到图标&#xff1a; 二、安装jdk 1、下载jdk 下载此版本即可&#xff0c;下载完成之后一直…

Linux系统中的SQL语句

本节主要学习&#xff0c;SQL语句的语句类型&#xff0c;数据库操作&#xff0c;数据表操作&#xff0c;和数据操作等。 文章目录 一、SQL语句类型 DDL DML DCL DQL 二、数据库操作 1.查看 2.创建 默认字符集 指定字符集 3.进入 4.删除 5.更改 库名称 字符集 6…

(十三)定时任务

以下内容来自 尚硅谷&#xff0c;写这一系列的文章&#xff0c;主要是为了方便后续自己的查看&#xff0c;不用带着个PDF找来找去的&#xff0c;太麻烦&#xff01; 第 13 章 定时任务 13.1 什么是定时任务 1、InfluxDB任务是一个定时执行的FLUX脚本&#xff0c;它先查询数据…

小程序创建

1&#xff0c;下载HBuilder X ;(3.8.7) HBuilderX-高效极客技巧 2,下载模板&#xff08;不选云服务的&#xff09;&#xff1b; 3&#xff0c;运行-运行到小程序模拟器&#xff1b; 4&#xff0c;安装小程序开发工具&#xff1b; 5&#xff0c;选择稳定版-windows64版&…

骆驼祥子思维导图

《骆驼祥子》简单介绍 《骆驼祥子》小说&#xff0c;以20世纪20年代的旧北京为背景。祥子所处的时代是北洋军阀统治的时代。今天我们就用ProcessOn 思维导图 来给大家解析这本名著。所有文章中的思维导图都可以到ProcessOn 模板社区获得。 1936年&#xff0c;老舍的一位山东大…

【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏模块5

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

Wonderful Sql

Wonderful Sql 一. 初识数据库 练习题 1.1 编写一条 CREATE TABLE 语句&#xff0c;用来创建一个包含表 1-A 中所列各项的表 Addressbook &#xff08;地址簿&#xff09;&#xff0c;并为 regist_no &#xff08;注册编号&#xff09;列设置主键约束 表1-A 表 Addressbook…

LeetCode64.Minimum-Path-Sum<最小路径和>

题目&#xff1a; 思路&#xff1a; 一开始使用的深度优先搜索,结果果然是超时了.好吧 是需要动态规划的. 和上次有一题有点像.(12条消息) LeetCode62.Unique-Paths&#xff1c;不同路径&#xff1e;_Eminste的博客-CSDN博客 将边缘初始化为数组原本的数.然后每次只能向下或…

#P1108. [NOIP2008提高组] 双栈排序

题目描述 Tom 最近在研究一个有趣的排序问题。如图所示&#xff0c;通过 22 个栈 S_1S1​ 和 S_2S2​&#xff0c;Tom 希望借助以下 44 种操作实现将输入序列升序排序。 操作 aa&#xff1a;将第一个元素压入栈 S_1S1​。 操作 bb&#xff1a;将 S_1S1​ 栈顶元素弹出至输出序…