Google Earth Engine (GEE) 提取某一位置时间序列值

2024-04-12 17:58

本文主要是介绍Google Earth Engine (GEE) 提取某一位置时间序列值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

做时间序列相关算法的同学,经常需要下载年际的数据来进行试验。而且算法研究的比较重要的步骤就是利用实测站点数据进行验证。本文讲述如何使用GEE下载指定卫星遥感/再分析数据集指定位置(实测站点位置)的时间序列值。

提取指定点年序列值-imageCollection

整个过程可以在imageCollection上进行操作,并且中间处理过程的返回对象都是image,这种情景非常简单直接。配合上篇博客,也可以进行QC过滤。
首先定义点的经纬度坐标。然后过滤数据集合,这里以MODIS的NDVI产品MOD13A2为例。由于MOD13A2在GEE中原始分辨率为900+m并且原始投影为正弦投影,而我需要在WGS84坐标系上1 km左右尺度的值,所以这里还包括了一个平均聚合和重投影的过程(非常重要)。如果需要从低分辨率向高分辨率采样,则将聚合过程替换为.resample(method)即可。最后就是生成指定点的时间序列图表。

var gwn = ee.Geometry.Point([-89.8729, 34.2574], 'EPSG: 4326');var mod13a2Collection = ee.ImageCollection("MODIS/006/MOD13A2").filterBounds(gwn).filterDate('2010-01-01', '2011-01-01').select('NDVI');print(mod13a2Collection); var mod13a2Collection = mod13a2Collection.map(function(image){return image.reduceResolution({reducer: ee.Reducer.mean(),}).reproject({crs: 'EPSG: 4326',scale: 1000});
}); var chart = ui.Chart.image.series({imageCollection: mod13a2Collection,region: gwn,reducer: ee.Reducer.first(),scale: 1000
}).setOptions({title: 'NDVI'});print(chart);

生成图表如下,右上角按钮可以在新标签页中打开并下载。
在这里插入图片描述

提取指定点年序列值-List

可以看出上边的情形是在最后一步使用ui.Chart.image.series时指定了提取位置。如果在中间过程中就对提取位置进行指定,即对image使用.reduceRegion,那么它的返回对象就是一个由指定位置值组成的年序列列表,无法再构成原始的imageCollection。这时候就需要额外的步骤进行提取。这里以GLDAS的10cm土壤水分为例:

var gwn = ee.Geometry.Point([-89.8729, 34.2574], 'EPSG: 4326');var gldasSoilMoisture = ee.ImageCollection("NASA/GLDAS/V021/NOAH/G025/T3H").filterDate('2010-01-01', '2011-01-01') .filter(ee.Filter.eq('start_hour', 15)).select('SoilMoi0_10cm_inst');//  
var gldasSoilMoisture = gldasSoilMoisture.toList(365).map(function(image){var soilMoisture = ee.Image(image).resample('bicubic').reduceRegion({geometry: gwn,reducer: ee.Reducer.first(),scale: 1000});return soilMoisture;
});
print(gldasSoilMoisture);

上述代码中,由于.reduceRegion返回的并不再是image,所以无法直接对原始imageCollection应用map,需要首先将其转换为List。此外,由于GLDAS原始影像分辨率为0.25°,我需要1 km尺度值,所以需要对它指定重采样方法(如果不指定,GEE默认为最邻近法,误差很大)。上述代码,print的结果为:
在这里插入图片描述
可以看出返回对象还是List,其中每个元素都是字典的形式,SoilMoi0_10cm_inst的值就是我们所需要的值。
所以,接下来需要把值单独提取出来构成一个``List`。

// the calculate result is a list with some dictionary
var gldasSoilMoisture = gldasSoilMoisture.map(function(object){return ee.Dictionary(object).get('SoilMoi0_10cm_inst');
});
print(gldasSoilMoisture);var chart = ui.Chart.array.values({array: gldasSoilMoisture,axis: 0
});
print(chart);

上述代码即将列表中每个字典的值提取出来构成了新的列表,并进行绘图。
这种情况的代码其实写的麻烦了,不进行.reduceRegion,就可以和第一种情景的代码一致了。但是,掌握这种情景,以后也能更灵活的进行实现。
在这里插入图片描述
后续会更新一篇如何将GLDAS的3小时气温数据求均值转为日均值,并提取指定点年序列值的博客。

这篇关于Google Earth Engine (GEE) 提取某一位置时间序列值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/897846

相关文章

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更