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

相关文章

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使