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

相关文章

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-