Cómo “mapear” una lista con una función en GEE

La documentación de Google Earth Engine sugiere que los usuarios de su plataforma eviten el uso de los “for loop”, en favor de las funciones, porque son muy ineficientes a la hora del procesamiento del lado del servidor. Sin embargo, como no están prohibidos y son un recurso intuitivo para recorrer un array, los que están aprendiendo a programar en Java Script (como yo en mis comienzos) los usan.

Para ilustrar la ineficiencia de los “for loop” les puedo señalar que cuando procesaba series de tiempo largas (más de 80.000 elementos) con este recurso, tardaba días. Cuando comencé a comprender el uso de funciones y a usarlas, el proceso se redujo a apenas minutos.

En este post se va a considerar el uso del método ‘map’ para recorrer un array y generar una lista con los nombres de los assets almacenados en un repositorio. El código es el siguiente:

var folder = ee.String('users/joseguerreroa/indice_severidad').getInfo();

var len_string = ee.String(folder).length();

print(len_string);

var assetList = ee.List(ee.data.getList({'id': folder}));

var count = assetList.size();

var seq = ee.List.sequence(0,count.subtract(1),1);

var asset_list = seq.map(function(l) {
  var iter = ee.Number(l).int();
  var ele = ee.List([]);
  var value = ee.Dictionary(assetList.get(iter));
  var myID = value.get('id');
  var ls = ee.String(myID).length();
  var new_str = ee.String(myID).slice(len_string.add(1), ls);
  ele = ele.add(new_str);
  
  return ele;

}).flatten();

print(asset_list);

Después de ejecutado el código en GEE, el resultado impreso en la pestaña Console es el esperado:

["esquel","huiliches","lacar","rucachoroi_32719"]
Esta entrada fue publicada en Google Earth Engine. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s