Я пытаюсь загрузить ежедневные данные о минимальной температуре ERA-5 за 10 лет (2010-2020) для определенного месяца (в настоящее время за ноябрь) и изучаемой области (импортированный шейп-файл как WH). Я извлек дневную минимальную температуру для изучаемой области, но не смог загрузить изображения за каждый день.

var era5_2mt = ee.ImageCollection('ECMWF/ERA5/DAILY')
                   .select('minimum_2m_air_temperature')
                   .filter(ee.Filter.calendarRange(1990,2020,'year'))
                   .filter(ee.Filter.calendarRange(11,11,'month'));

var era5_2mt_list = era5_2mt.toList(era5_2mt.size());

print(era5_2mt_list);

var study_area = era5_2mt_list.map(function(img){
  
  var date = ee.Date(ee.Image(img).get('system:time_start')).format().slice(0, 10);
  img = ee.Image(img).subtract(273.15);
  
  // Reducing region and getting value
  var value_temp = ee.Image(img)
    .reduceRegion(ee.Reducer.mean(), table)
    .get('minimum_2m_air_temperature');
  
  return [date, value_temp];
  
});

var vis2mt = {
  min: -20,
  max: -10,
  palette: [
    '#000080', '#0000D9', '#4000FF', '#8000FF', '#0080FF', '#00FFFF', '#00FF80',
    '#80FF00', '#DAFF00', '#FFFF00', '#FFF500', '#FFDA00', '#FFB000', '#FFA400',
    '#FF4F00', '#FF2500', '#FF0A00', '#FF00FF'
  ]
};

var image = ee.Image(era5_2mt_list.get(0))
  .subtract(273.15)
  .clip(table);

print(image);

Map.centerObject(image);
Map.addLayer(image, vis2mt);

print(study_area);

Я получаю среднее значение для всей области, но я хочу загружать каждый день данные, то есть 900 элементов, которые перечислены в разделе задач в формате .tiff.

Ссылка GEE на мой код приведена ниже: - КОДЕКС GEE

0
xunilk 10 Янв 2022 в 18:22

1 ответ

Чтобы экспортировать коллекцию изображений, вам нужно будет импортировать пользовательскую функцию. Однако вам не нужно преобразовывать коллекцию изображений в список.

// include batch download function
var batch = require('users/fitoprincipe/geetools:batch')

var era5_2mt = ee.ImageCollection('ECMWF/ERA5/DAILY')
                   .select('minimum_2m_air_temperature')
                   .filter(ee.Filter.calendarRange(1990,2020,'year'))
                   .filter(ee.Filter.calendarRange(11,11,'month'))
                   // clip to your study area
                   .map(function(image) {return image.clip(table)});


// if you actually need to subtract 273.15, you can map over the image collection, rather than a list of images
// uncomment the following block

// var study_area = era5_2mt.map(function(img){
//   var s_ts = img.get('system:time_start')    // get the 'system:time start' property from the image
//   img = ee.Image(img).subtract(273.15)
//                      .set({'system:time_start': s_ts});   // set the 'system:time_start' property from the output image
//   return(img);
  
// });


var vis2mt = {
  min: -20,
  max: -10,
  palette: [
    '#000080', '#0000D9', '#4000FF', '#8000FF', '#0080FF', '#00FFFF', '#00FF80',
    '#80FF00', '#DAFF00', '#FFFF00', '#FFF500', '#FFDA00', '#FFB000', '#FFA400',
    '#FF4F00', '#FF2500', '#FF0A00', '#FF00FF'
  ]
};

// get first image from collection for visualisation
var image = ee.Image(era5_2mt.first())
  .subtract(273.15);

// print image to console
print(image);

// visualise image
Map.centerObject(image);
Map.addLayer(image, vis2mt);


// export collection to Google Drive
var collection = era5_2mt;    // change to study_area if you want to use the collection that has had 273.15 subtracted from it
var folder = 'ERA-5 min daily temp'
var scale = 20000 // meters (based on an estimate, change to whatever is the true scale if needed)


batch.Download.ImageCollection.toDrive(collection, folder, 
                {scale: scale, 
                region: table, 
                type: 'float'});

Предупреждение. Экспорт будет отображаться как 900 отдельных элементов на вкладке «Задачи». Если вы хотите автоматизировать запуск всех задач, вы можете см. этот вопрос и ответы

0
Matt 10 Янв 2022 в 20:18