Google Earth Engine API:Image Collection時間聚合
大家好!本次分享將Image Collection按不同時間尺度進行聚合的API,用一行程式碼就能實現任意影像集按年、季度、月、日尺度以均值、中值、最值等多種方法進行聚合,輸入引數簡單且功能十分強大!
首先舉個簡單的例子,輸入下面的程式碼:
var
lib
=
require
(
‘users/zhangby/library:data’
);
var
lib2
=
require
(
‘users/zhangby/library:general’
);
var
lib3
=
require
(
‘users/zhangby/library:timeSeries’
);
var
roi
=
ee
。
Geometry
。
Rectangle
([
108。46
,
18。12
,
111。13
,
20。23
]);
var
imgColl
=
lib
。
getLandsatRoi
(
‘2021-01-01’
,
‘2021-12-31’
,
roi
,
30
,
true
,
true
);
// 呼叫方法詳見我的另一篇文章《Google Earth Engine API:搜尋Landsat、MODIS和Sentinel2資料產品》
imgColl
=
imgColl
。
map
(
lib2
。
addNdvi
)。
select
(
‘NDVI’
);
// 呼叫方法詳見我的另一篇文章《Google Earth Engine API:像元值線性放縮和波段運算》
imgColl
=
lib3
。
temporalAggregate
(
imgColl
,
‘YM’
,
‘mean’
);
(
‘>> Aggregated NDVI collection’
,
imgColl
);
執行後可以看到如下結果:
Landsat反射率計算NDVI並按“年-月”平均值聚合成新的Image Collection
返回的Image Collection中每一幅影像帶有一個名為 ‘user:index’ 的新property(datetime格式),表示新生成影像的時間屬性。
詳細教程
在呼叫API前首先要匯入公共庫,ID為
'users/zhangby/library:timeSeries'
,然後對該API進行呼叫:
temporalAggregate(imageCollection, timeScale, method)
功能:根據給定的時間尺度和合成方法對Image Collection進行聚合生成新的Image Collection
Arguments:
- imageCollection: 待聚合的影像集(Image Collection;每一幅影像要帶有 ‘time_start’ 時間屬性)
- timeScale: 聚合時間尺度(String: ‘Y’, ‘YM’, ‘YMD’, ‘M’, ‘MD’, ‘D’;不可預設,含義見後注)
- method: 聚合方法(String: ‘first’, ‘last’, ‘max’, ‘min’, ‘mean’, ‘median’, ‘sum’, ‘stdDev’, variance‘, ’count‘;預設為’median‘,請參考 ee。ImageCollection。reduce() 中所用到的reducer)
Returns: Image Collection
注:關於引數 timeScale 的一些說明如下,
① 如果傳入 ’Y‘,則每年聚合成一幅影像,輸出結果中 ’user:index‘ 為年,datetime格式為yyyy,如 ’1989‘;
② 如果傳入 ’YM‘,則每月聚合成一幅影像,輸出結果中 ’user:index‘ 為年+月,datetime格式為yyyyMM,如 ’198907‘;
③ 如果傳入 ’YMD‘,則每日(只要有影像就)聚合成一幅影像,輸出結果中 ’user:index‘ 為年+月+日,datetime格式為yyyyMMdd,如 ’19890725‘;
④ 如果傳入’M‘,則將所有影像按相同月份進行聚合,只要影像日期處於同一月份,不管其屬於哪一年,均聚合為一幅影像,即輸出結果至多12幅影像,’user:index‘ 為月,datetime格式為MM,如 ’07‘;
⑤ 如果傳入 ’MD‘,則將所有影像按相同月-日進行聚合,只要影像日期是相同的月-日,不管其屬於哪一年,均聚合為一幅影像,輸出結果最多有366幅影像,’user:index‘ 為月-日,datetime格式為MMdd,如 ’0725‘;
⑥ 如果傳入 ’D‘,則將所有影像按相同日進行聚合,只要影像日期是相同的日,不管其屬於哪一年哪一月,均聚合為一幅影像,輸出結果最多有31幅影像,’user:index‘ 為日,datetime格式為dd,如 ’25‘。
PS。 目前程式碼基本上處於一個比較穩定的版本,但也不排除將來會做調整,如果出現報錯請回到此處檢視更新。歡迎大家呼叫!如有錯誤也懇請及時指出,謝謝!
上一篇:光學工程的就業前景如何?