首页 > 其他分享 >GEE C14 Aggregating Images for Time Series 聚合时间序列图像

GEE C14 Aggregating Images for Time Series 聚合时间序列图像

时间:2024-03-15 11:15:15浏览次数:27  
标签:startDate endDate Aggregating ee Series Date print GEE var

一、CHIRPS数据

CHIRPS: the Climate Hazards Group InfraRed Precipitation with Station ,全称“气候危害群红外线降水与站点数据”,该数据可利用时间能够追溯到1981年,目前仍然在更新当中,主要用于研究人员分析特定空间在特定时间段内降雨量的变化趋势,从而广泛应用于干旱监测。CHIRPS数据由美国地质调查局(USGS)和地球资源观测与科学(EROS)联合创建,通过Google Earth Engine平台能够直接调用.

时间单位是Pentad,Pentad是一种时间单位,用于表示五天的时间段。它常用于气象学和农业领域,用于统计和分析天气模式、农作物生长等与时间相关的数据。Pentad的概念源自于希腊语中的"penta",意为五。在气象学中,Pentad通常用于观测和记录降水量、温度、风速等天气要素的变化。这种时间单位的使用可以帮助研究人员更好地理解和预测天气变化的规律。在CHIRPS数据中,PENTAD记录表示的是五天的总降雨量,而不是五天降雨量的平均值。

二、代码

2.1 过滤影像

1 var chirps = ee.ImageCollection('UCSB-CHG/CHIRPS/PENTAD');

    var yearFiltered = chirps.filterDate('2023-01-01', '2024-01-01');
    print('Date-filtered CHIRPS images', yearFiltered);

2.2 处理日期ee.Date

ee.Date.fromYMD

是 Google Earth Engine (GEE) 中用于创建日期对象的函数。这个函数允许你根据指定的年、月、日来创建一个日期对象,非常适合当你需要处理或分析特定日期的地理空间数据时使用。

  • year:年份,必须是一个整数。
  • month:月份,必须是一个整数,范围从1(一月)到12(十二月)。
  • day:日期,必须是一个整数,代表月份中的哪一天。

这个函数返回一个 ee.Date 对象,代表了指定的年、月、日。

startDate.advance(number, unit)

方法用于将一个 ee.Date 对象向前推进特定的时间量.

startDate.millis()

方法用于获取 ee.Date 对象表示的日期和时间距离1970年1月1日00:00:00 UTC的毫秒数。这是一个非常有用的方法,特别是当你需要将日期对象转换为数字格式以进行进一步的计算或比较时。

 

var chirps = ee.ImageCollection('UCSB-CHG/CHIRPS/PENTAD');
var year = 2023; 
var startDate = ee.Date.fromYMD(year, 1, 1); 
print('startDate', startDate);

var endDate = startDate.advance(1, 'year');
print('endDate', endDate);


var yearFiltered = chirps.filterDate(startDate, endDate); 
print('Date-filtered CHIRPS images', yearFiltered); 

print('Start date as timestamp', startDate.millis()); 
print('End date as timestamp', endDate.millis()); 

 

三、聚合图像 Aggregating Images

把5天一次的CHIRPS数据合成每月一次。

分两步:首先确定一个时间间隔(这里是一个月一次);第二步是对每个区间内的所有值求和。

筛选的2023年的CHIRPS数据是一个月6期(5天一期),一年共72期,要做的就是把每个月6期的数据合成一期。

 

 

 1 var chirps = ee.ImageCollection('UCSB-CHG/CHIRPS/PENTAD'); 
 2 // var yearFiltered = chirps.filterDate('2023-01-01', '2024-01-01'); 
 3 // print('Date-filtered CHIRPS images', yearFiltered); 
 4 var year = 2023; 
 5 var startDate = ee.Date.fromYMD(year, 1, 1); 
 6 print('startDate', startDate);
 7 
 8 var endDate = startDate.advance(1, 'year');
 9 print('endDate', endDate);
10 
11 
12 var yearFiltered = chirps.filterDate(startDate, endDate); 
13 print('Date-filtered CHIRPS images', yearFiltered); 
14 
15 // print('Start date as timestamp', startDate.millis()); 
16 // print('End date as timestamp', endDate.millis()); 
17 
18 //第一步定义时间间隔 
19 // Aggregate this time series to compute monthly images. 
20 // Create a list of months 
21 var months = ee.List.sequence(1, 12); 
22 print('months', months);
23 // Write a function that takes a month number 
24 // and returns a monthly image. 
25 var createMonthlyImage = function(beginningMonth) { 
26     var startDate = ee.Date.fromYMD(year, beginningMonth, 1); 
27     var endDate = startDate.advance(1, 'month'); 
28     var monthFiltered = yearFiltered.filter(ee.Filter.date(startDate, endDate)); 
29     // Calculate total precipitation. 
30     var total = monthFiltered.reduce(ee.Reducer.sum()); 
31     return total.set({ 
32         'system:time_start': startDate.millis(), 
33         'system:time_end': endDate.millis(), 
34         'year': year, 
35         'month': beginningMonth 
36     }); 
37 }; 
38 
39 //第二步求每个月的影像 
40 // map() the function on the list of months 
41 // This creates a list with images for each month in the list 
42 var monthlyImages = months.map(createMonthlyImage);
43 
44 // Create an ee.ImageCollection. 
45 var monthlyCollection = ee.ImageCollection.fromImages(monthlyImages); 
46 print(monthlyCollection);

结果:

 四、绘制时间序列

 1 var chirps = ee.ImageCollection('UCSB-CHG/CHIRPS/PENTAD'); 
 2 // var yearFiltered = chirps.filterDate('2023-01-01', '2024-01-01'); 
 3 // print('Date-filtered CHIRPS images', yearFiltered); 
 4 var year = 2023; 
 5 var startDate = ee.Date.fromYMD(year, 1, 1); 
 6 print('startDate', startDate);
 7 
 8 var endDate = startDate.advance(1, 'year');
 9 print('endDate', endDate);
10 
11 
12 var yearFiltered = chirps.filterDate(startDate, endDate); 
13 print('Date-filtered CHIRPS images', yearFiltered); 
14 
15 // print('Start date as timestamp', startDate.millis()); 
16 // print('End date as timestamp', endDate.millis()); 
17 
18 //第一步定义时间间隔 
19 // Aggregate this time series to compute monthly images. 
20 // Create a list of months 
21 var months = ee.List.sequence(1, 12); 
22 print('months', months);
23 // Write a function that takes a month number 
24 // and returns a monthly image. 
25 var createMonthlyImage = function(beginningMonth) { 
26     var startDate = ee.Date.fromYMD(year, beginningMonth, 1); 
27     var endDate = startDate.advance(1, 'month'); 
28     var monthFiltered = yearFiltered.filter(ee.Filter.date(startDate, endDate)); 
29     // Calculate total precipitation. 
30     var total = monthFiltered.reduce(ee.Reducer.sum()); 
31     return total.set({ 
32         'system:time_start': startDate.millis(), 
33         'system:time_end': endDate.millis(), 
34         'year': year, 
35         'month': beginningMonth 
36     }); 
37 }; 
38 
39 //第二步求每个月的影像 
40 // map() the function on the list of months 
41 // This creates a list with images for each month in the list 
42 var monthlyImages = months.map(createMonthlyImage);
43 
44 // Create an ee.ImageCollection. 
45 var monthlyCollection = 
46 ee.ImageCollection.fromImages(monthlyImages); 
47 print(monthlyCollection);
48 
49 //Plotting Time Series
50 // Create a point with coordinates for the city of haikou, hainan. 
51 var hkPoint = ee.Geometry.Point(110.3207, 20.04713);
52 //var hkPoint = geometry;
53 
54 // var chart = ui.Chart.image.series({ 
55 //     imageCollection: monthlyCollection, 
56 //     region: hkPoint, 
57 //     reducer: ee.Reducer.mean(), 
58 //     scale: 5566, 
59 // }); 
60 // print(chart); 
61 var chart = ui.Chart.image.series({ 
62     imageCollection: monthlyCollection, 
63     region: hkPoint, 
64     reducer: ee.Reducer.mean(), 
65     scale: 5566 
66 }).setOptions({ 
67     lineWidth: 1, 
68     pointSize: 3, 
69     title: 'Monthly Rainfall at Bengaluru', 
70     vAxis: { 
71         title: 'Rainfall (mm)' 
72     }, 
73     hAxis: { 
74         title: 'Month', 
75         gridlines: { 
76            count: 12 
77         } 
78     } 
79 }); 
80 print(chart);

结果:

 小作业:

实现近10年的月均降雨数据,代码该怎么写?

 

标签:startDate,endDate,Aggregating,ee,Series,Date,print,GEE,var
From: https://www.cnblogs.com/bltstop/p/18073607

相关文章

  • 远程办公、企业内网服务器的Code-Server上如何配置使用CodeGeeX插件
    很多小伙伴都会在工作中使用code-server,比如说远程办公,当你需要在家访问你的工作环境,亦或者是你们公司的Docker是放入服务器中。code-server无疑是最好的选择,它可以让你通过互联网安全地连接到远程服务器上的开发环境并且使用VSCode。这也符合code-server的初衷——能够在任何......
  • GEE C13 Exploring Image Collections 影像集详解
     一、筛选和检查影像集1.1代码1//Definearegionofinterestasapointinhaikou,hainan.2//varhkPoint=ee.Geometry.Point(110.3207,20.04713);定义一个点的时候,先经度后纬度。3varhkPoint=geometry2;4//Centerthemapatthatpoint.5Map......
  • GEE C12 Filter,Map,Reduce
    目录一、Filter二、Map三、Reduce一、Filter1.1 FilterDate 1.用法ImageCollection.filterDate('2010-01-01','2010-01-01')//varimgCol=ee.ImageCollection('LANDSAT/LT05/C02/T1_L2');//HowmanyTier1Landsat5imageshaveeverbeenc......
  • 自动生成单元测试、外挂开源代码库等新功能,上线JetBrains IDEs的CodeGeeX插件!
    CodeGeeX第三代模型发布后,多项基于第三代模型能力的新功能今天也同步上线JetBrainsIDEs全家桶。用户可以在IDEA、PyCharm等JetBrains系的IDE中,搜索下载CodeGeeXv2.5.0版本,深度使用最新功能。一、新模型加持的代码补全和智能问答以IDEA为例,在v2.5.0版本的CodeGeeX插件中,用户可......
  • GDCM:读取DICOM Series(附完整源码)
    GDCM:读取DICOMSeries以下是一个使用GDCM(GrassrootsDICOM)库读取DICOM系列的示例代码:#include<iostream>#include"gdcmReader.h"#include"gdcmFile.h"#include"gdcmFileHelper.h"#include"gdcmGlobal.h"#include"gdcmSyst......
  • GDCM:实现使用gdcm::Series类进行DICOM的序列化和反序列化操作(附完整源码)
    GDCM:实现使用gdcm::Series类进行DICOM的序列化和反序列化操作下面是一个使用GDCM库中的gdcm::Series类进行DICOM序列化和反序列化操作的示例代码:#include<iostream>#include"gdcmReader.h"#include"gdcmWriter.h"#include"gdcmGlobal.h"#include"gdcmSystem.......
  • 【论文阅读】Informer Beyond Efficient Transformer for Long Sequence Time-Series
    原始题目:Informer:BeyondEfficientTransformerforLongSequenceTime-SeriesForecasting中文翻译:Informer:超越有效变换器进行长序列时间序列预测发表时间:2021-05-18平台:ProceedingsoftheAAAIConferenceonArtificialIntelligence文章链接:https://ojs.aaai.org/i......
  • 【论文阅读】N-BEATS Neural basis expansion analysis for interpretable time serie
    原始题目:N-BEATS:Neuralbasisexpansionanalysisforinterpretabletimeseriesforecasting中文翻译:N-BEATS:可解释时间序列预测的神经基展开分析发表时间:2020-02-20平台:arXiv文章链接:http://arxiv.org/abs/1905.10437开源代码:https://github.com/servicenow/n-beats......
  • PostgreSQL的generate_series函数应用
    一、简介PostgreSQL中有一个很有用处的内置函数generate_series,可以按不同的规则产生一系列的填充数据。二、语法函数参数类型返回类型描述generate_series(start,stop)int或bigintsetofint或setofbigint(与参数类型相同)生成一个数值序列,从start到stop,步进......
  • Flink AggregatingState 实例
    FlinkAggregatingState实例AggregatingState介绍AggregatingState需要和AggregateFunction配合使用add()方法添加一个元素,触发AggregateFunction计算get()获取State的值需求:计算每个设备10秒内的平均温度importorg.apache.flink.api.common.eventtime.SerializableTimesta......