主要思路
当我们要提取国外影像的长时间序列、或大尺度地理信息时,可以考虑利用GEE快速实现,免去数据下载和本地存储、运算的麻烦。本次以再分析资料ERA5为例,使用GEE的ImageCollection对象搜集2015-2020年的数据,在map函数中循环计算可可西里流域的日均温度,然后为每幅影像设置日均温度(mt)属性,最后利用ImageCollection的aggregate_array函数提取mt与日期()属性转为List,最后生成一个字典并复制粘贴到本地excel表格。
代码
// Daily mean 2m air temperature
var dict1 = {reducer: ee.Reducer.mean(),geometry: kkbasin,bestEffort: true}
var era5_2mt = ee.ImageCollection('ECMWF/ERA5/DAILY')
.select('mean_2m_air_temperature')
.filter(ee.Filter.date('2015-01-01', '2020-12-31'))
.filterBounds(kkbasin)
.map(function(image){var mt = image.reduceRegion(dict1);
var mt_cel = ee.Number(mt.get('mean_2m_air_temperature')).subtract(273.15);
image = image.set({'mt':mt_cel});//add a property of mt
return image;
});
var mt = era5_2mt.aggregate_array('mt')
print('mt:',mt)
var dates = era5_2mt.reduceColumns(ee.Reducer.toList(), ["system:index"])
.get("list");
print('dates',dates);
var mt_dict = ee.Dictionary.fromLists(dates, mt)
print('mt_dict:', mt_dict)
注意:kkbasin 是我的本地要素数据。
结果
实验最后得到一个拥有2017个元素的字典,也是一个JSON。GEE本身不支持代码导出JSON格式(反正我不会,),此时需要一个小技巧复制这么长的一个字典:如下图,点击mt_dict右边的JSON字样,出现红圈中的大括号,再点击之即可选中整个字典。
致谢
感谢尹院的指导!