人菜且爱玩,分享一些常见的GEE报错现象以及解决方案,希望对大家能够有所帮助。
本文以ERA5-land数据集为例介绍The source parameter is require应该如何解决。
GEE平台提供了影像在线处理,在完成对数据集处理后,想要对数据进行筛选展示或下载至本地时出现报错Tile error: Error in map(ID=198101T02): Element.copyProperties: The source parameter is required。这是由于缺少源数据的系统属性,在老版的GEE中只需要copy源数据的‘system’属性,但是在最新的gee中,仅仅是copy源数据的‘system’并不能解决问题。
例:在老版的GEE中只需要copyProperties(img,['system:footprint','system:time_start'])即可,但是最近不知道是什么原因,copy完系统属性并没有很好的解决问题,虽然pet的影像被筛选出来,但是在展示和下载的时候仍会报错。
var ear5_hour = ee.ImageCollection("ECMWF/ERA5_LAND/MONTHLY_BY_HOUR")
Map.centerObject(geometry,5)
Map.addLayer(geometry)
ear5_hour = ear5_hour.select('potential_evaporation').map(function(img){
return img.multiply(1000).multiply(-1).copyProperties(img,['system:footprint','system:time_start'])
})
var pet_list = []
for(var year=1981;year<2022;year++){
for(var i=0;i<12;i++){
var start = ee.Date(year+'-01-01').advance(i, 'month');
var end = start.advance(1, 'month');
var name = start.format('YYYY-MM-dd').cat(ee.String('pet'))
pet_list.push(ear5_hour.filterDate(start, end).sum().clip(geometry).rename(name))
}
}
print('pet',ee.Image(pet_list))
Map.addLayer(ee.Image(pet_list))
解决方案:我们在处理数据的时候,将目标结果作为新的波段添加进源数据,最后根据情况再进行选择即可,好处(保留了源数据所有属性)
Map.centerObject(geometry,5)
Map.addLayer(geometry)
ear5_hour = ear5_hour.map(function(img){
return img.addBands(img.select('potential_evaporation').multiply(ee.Image(-1000)).rename('temp')).select('temp')
})
var pet_list = []
for(var year=1981;year<2022;year++){
for(var i=0;i<12;i++){
var start = ee.Date(year+'-01-01').advance(i, 'month');
var end = start.advance(1, 'month');
var name = start.format('YYYY-MM-dd').cat(ee.String('pet'))
pet_list.push(ear5_hour.filterDate(start, end).sum().clip(geometry).rename(name))
}
}
print('pet',ee.Image(pet_list))
Map.addLayer(ee.Image(pet_list))