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

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

  本文介绍在谷歌地球引擎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

相关文章
|
6月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2483 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
6月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
223 0
|
3月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
44 0
|
1月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
6月前
|
前端开发 Java
基于Java爬取微博数据(二) 正文长文本+导出数据Excel
【5月更文挑战第12天】基于Java爬取微博数据,正文长文本+导出数据Excel
|
1月前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
127 0
|
6月前
|
JSON JavaScript 前端开发
使用JavaScript和XLSX.js将数据导出为Excel文件
使用JavaScript和XLSX.js将数据导出为Excel文件
399 0
|
6月前
|
数据可视化 数据挖掘 数据建模
R语言指数平滑法holt-winters分析谷歌Google Analytics博客用户访问时间序列数据
R语言指数平滑法holt-winters分析谷歌Google Analytics博客用户访问时间序列数据
|
6月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
88 0
|
6月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
145 0