Проблема при экспорте значений точечных объектов из Sentinel 5 для длинных временных рядов в Google Earth Engine - PullRequest
0 голосов
/ 02 мая 2020

Я сталкиваюсь с незнакомой проблемой при экспорте данных NO2 в формате .csv из Sentinel 5 в GEE. С интервалом времени почти один месяц код возвращает мне именно то, что я действительно хочу. Однако, когда я увеличиваю время до года, код показывает проблему с памятью. Более того, хотя ограничение временного интервала составляет 4 месяца, кажется, что код работает нормально, но экспортированный CSV-файл не содержит данных для всех точечных объектов. Я добавляю код ниже. Будем весьма благодарны за любые предложения по устранению проблемы.

var regions = ee.FeatureCollection([
  ee.Feature(    // Leh.
    ee.Geometry.Point(77.5771,34.1526).buffer(10000), {label: 'Leh'}),
  ee.Feature(  // Beerwah.
    ee.Geometry.Point(74.5954,34.0126).buffer(10000), {label: 'Beerwah'}),
  ee.Feature(  // Nirmand.
    ee.Geometry.Point(77.5828,31.4148).buffer(10000), {label: 'Nirmand'})
]);

var temps2013 = ee.ImageCollection('COPERNICUS/S5P/NRTI/L3_NO2')
    .filterDate('2019-01-01', '2020-04-29')//
    .select('tropospheric_NO2_column_number_density');

var triplets = temps2013.map(function(image) {
  return image.select('tropospheric_NO2_column_number_density').reduceRegions({
    collection: regions.select(['label']), 
    reducer: ee.Reducer.mean(), 
    scale: 1000
  }).filter(ee.Filter.neq('mean', null))
    .map(function(f) { 
      return f.set('time', image.date()).setGeometry(null);
    });
}).flatten();
print(triplets.first());
var format = function(table, rowId, colId) {
  var rows = table.distinct(rowId);

  var joined = ee.Join.saveAll('matches').apply({
    primary: rows, 
    secondary: table, 
    condition: ee.Filter.equals({
      leftField: rowId, 
      rightField: rowId
    })
  });

  return joined.map(function(row) {
      var values = ee.List(row.get('matches'))

        .map(function(feature) {
          feature = ee.Feature(feature);
          return [feature.get(colId), feature.get('mean')];
        });
      return row.select([rowId]).set(ee.Dictionary(values.flatten()));
    });
};

var table1 = format(triplets, 'time','label');
print(table1,'table1');
var desc4 = 'table_demo_4'; 
//Exporting the data
Export.table.toDrive({
  collection: table1, 
  description: desc4, 
  fileNamePrefix: desc4,
  fileFormat: 'CSV'
});
...