1 votos

Google Earth Engine datos en tiempo real

Soy nuevo en Google Earth Engine.

Tengo un programa para monitoreo de la atmósfera. He logrado obtener datos para datos históricos. Sin embargo, no puedo obtener datos recientes, por ejemplo (hace un par de días, hoy, ayer, etc.), obtengo el error:

Collection.toList: El valor de 'count' debe ser positivo. Obtenido: 0.

Como dice 'Tiempo Real', ¿significa que los datos deben actualizarse varias veces al día? Mi objetivo final es poder obtener datos en (casi) tiempo real para poder visualizar estos datos a través de algún otro programa. ¿Es posible?

var pt = ee.Geometry.Point(23.72801716860135,37.984115295446216);

Map.centerObject(pt,14);
Map.addLayer(pt);

var starDate = '2023-02-20';
var endDate = '2023-02-21';

var Monthly = ee.ImageCollection('ECMWF/CAMS/NRT').select('total_aerosol_optical_depth_at_550nm_surface')
  .filterDate(starDate, endDate);

print(Monthly);

var allDates = ee.List(Monthly.aggregate_array('system:time_start'));

var allDatesSimple = allDates.map(function(date){
  return ee.Date(date).format().slice(0,10);
  });

//print(allDatesSimple);

var getTemp = function(image) {

  // Reducing region and getting value
  var value_tmmx = ee.Image(image)
    .reduceRegion(ee.Reducer.first(), pt)
    .get('total_aerosol_optical_depth_at_550nm_surface');
  return ee.Number(value_tmmx).multiply(0.1);

};

var count = Monthly.size();

var tmmx_list = Monthly.toList(count).map(getTemp);

print("tmmn_list", tmmx_list);

var paired = allDatesSimple.zip(tmmx_list);

print ("paired", paired);

var myFeatures = ee.FeatureCollection(paired.map(function(el){
  el = ee.List(el); // cast every element of the list
  return ee.Feature(null, {
    'date': ee.String(el.get(0)),
    'aerosol':ee.Number(el.get(1)),

  });
}));

print(myFeatures);

// Export features, specifying corresponding names.
Export.table.toDrive(myFeatures,
"export_aerosol", //mi tarea
"GEE_Folder", //mi carpeta de exportación
"aerosol2",  //nombre del archivo
"csv");

0voto

Daniel Puntos 9

No tenías ningún dato para tu rango de fechas, por lo que count era 0, lo que causó que Monthly.toList(count) fallara.

Una práctica recomendada en EE es evitar convertir colecciones en listas. En este caso, hacer eso en realidad resolvería directamente tu problema. Puedes convertir tu colección de imágenes a una colección de features directamente de esta manera:

var myFeatures = ee.ImageCollection('ECMWF/CAMS/NRT')
  .select('total_aerosol_optical_depth_at_550nm_surface')
  .filterDate(starDate, endDate)
  .map(function(image) {
    var value_tmmx = ee.Image(image)
      .reduceRegion(ee.Reducer.first(), pt)
      .get('total_aerosol_optical_depth_at_550nm_surface')
    return ee.Feature(null, {
      date: image.date().format('yyyy-MM-dd'),
      aerosol: ee.Number(value_tmmx).multiply(0.1)
    })
})

https://code.earthengine.google.com/29601f5a822d3b956482e1209aff9b38

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X