I have written a script in the Google Earth Engine to extract values from 5 images (all climate data) to a list of points which I have imported from a csv to a feature collection. In principle it works fine. However, it takes a lot of time not only to export the updated table (the points with the extracted values) but also just to print them. Even if it just a list of 6 points, it takes almost half an hour.
Can anyone explain me if I can resolve this and if not, why this is? I am a big fan of the Earth Engine, however I did not expect a problem like to occur.
Thanks in advance!
// Script to load set of points and extract data from global raster data Map.addLayer(Coords)
///////////////////////////////////////////////////////////////////////////
/// Call Image Collections ////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// Modis Dataset Air Surface temperature
var ST_img_modis = ee.ImageCollection('MODIS/006/MOD11A1')
.filter(ee.Filter.date('2000-03-05', '2020-01-01'))
.reduce(ee.Reducer.mean())
.select(['LST_Day_1km_mean'])
.multiply(0.02);
// ERA 5 Daily aggregates image collection
var img_era = ee.ImageCollection("ECMWF/ERA5/DAILY")
.filter(ee.Filter.date('1980-01-01', '2020-01-01'))
.reduce(ee.Reducer.mean());
// get air temperature and total daily precipitation
var AT_img_era = img_era.select(['mean_2m_air_temperature_mean']);
var P_img_era = img_era.select(['total_precipitation_mean']);
// FLDAS, Famine Land Data Assimilation System (by NASA) image collection
var img_fldas = ee.ImageCollection("NASA/FLDAS/NOAH01/C/GL/M/V001")
.filter(ee.Filter.date('1982-01-01', '2020-01-01'))
.reduce(ee.Reducer.mean());
// get soil (upper 10 cm) and air temperature
var SoilT_img_fldas = img_fldas.select(['SoilTemp00_10cm_tavg_mean']);
var Tair_img_fldas = img_fldas.select(['Tair_f_tavg_mean']);
print('MODIS:',ST_img_modis)
print('ERA Air Temperature:',AT_img_era)
print('ERA Precipitation:',P_img_era)
print('FLDAS Soil Temperature:',SoilT_img_fldas)
print('FLDAS Air Temperature:',Tair_img_fldas)
///////////////////////////////////////////////////////////////////////////
/// Define Functions //////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
var getData = function(feature){
var modis_T = ST_img_modis.reduceRegions(feature, ee.Reducer.first(), null, 'EPSG:4326',[1,0,0,0,1,0]);
modis_T = ee.Number(modis_T.first().get('first'));
feature = feature.set('modis_T', modis_T);
var era_AT = AT_img_era.reduceRegions(feature, ee.Reducer.first(), null, 'EPSG:4326',[1,0,0,0,1,0]);
era_AT = ee.Number(era_AT.first().get('first'));
feature = feature.set('era_AT', era_AT);
var era_P = P_img_era.reduceRegions(feature, ee.Reducer.first(), null, 'EPSG:4326',[1,0,0,0,1,0]);
era_P = ee.Number(era_P.first().get('first'));
feature = feature.set('era_P', era_P);
var fldas_SoilT = SoilT_img_fldas.reduceRegions(feature, ee.Reducer.first(), null, 'EPSG:4326',[1,0,0,0,1,0]);
fldas_SoilT = ee.Number(fldas_SoilT.first().get('first'));
feature = feature.set('fldas_SoilT', fldas_SoilT);
var fldas_AirT = Tair_img_fldas.reduceRegions(feature, ee.Reducer.first(), null, 'EPSG:4326',[1,0,0,0,1,0]);
fldas_AirT = ee.Number(fldas_AirT.first().get('first'));
feature = feature.set('fldas_AirT', fldas_AirT);
return feature
}
///////////////////////////////////////////////////////////////////////////
/// Map Function over Feature Collection //////////////////////////////////
///////////////////////////////////////////////////////////////////////////
var Coor_upd = Coords.map(getData);
print(Coor_upd);
// Export
Export.table.toDrive(Coor_upd,
"GPM",
"GEE",
"Lotte_Table_GPM")
The Coords file looks like this:
ID,latitude,longitude
0,30.368761,-88.430695
1,30.397732,-88.415586
2,29.629889,-81.215858
3,29.771040,-81.287803
4,29.977078,-81.322863
5,30.087484,-81.368262
6,29.822598,-81.283967
Coords
, which you didn't include in the script.