1 votos

Cómo encontrar la banda mínima para varias Características i

Dispongo de un conjunto de datos extraídos del conjunto de datos diarios de cobertura de nieve MODIS, combinados con un DEM. Consta de siete bandas con diferentes clases de altura (nombre de las bandas). Estas bandas consisten en unos y ceros, y necesito encontrar la banda con la mínima cantidad de unos, y guardar la altura (nombre) de esa banda. Tengo que hacer esto para varias celdas de la cuadrícula y varios días. Eventualmente me gustaría tener una tabla con los días en un eje, y la celda de la cuadrícula en el otro, y dentro de ella la altura (banda mínima) en ese día. Actualmente estoy intentando encontrar la banda mínima pero no lo he conseguido. El código se puede encontrar aquí .

¿Hay alguna forma de extraer el nombre de la banda con el valor mínimo y guardarlo en alguna estructura de datos, para un día y una celda de cuadrícula determinados?

Fragmento de código:

var snow = function(img){
  var e500 = img.expression('E + S',{'E':img.select(1),'S':img.select(0)}).remap([0,1,2],[0,1,0]).rename('0500');
  var e1000 = img.expression('E + S',{'E':img.select(2),'S':img.select(0)}).remap([0,1,2],[0,1,0]).rename('1000');
  var e1500 = img.expression('E + S',{'E':img.select(3),'S':img.select(0)}).remap([0,1,2],[0,1,0]).rename('1500');
  var e2000 = img.expression('E + S',{'E':img.select(4),'S':img.select(0)}).remap([0,1,2],[0,1,0]).rename('2000');
  var e2500 = img.expression('E + S',{'E':img.select(5),'S':img.select(0)}).remap([0,1,2],[0,1,0]).rename('2500');
  var e3000 = img.expression('E + S',{'E':img.select(6),'S':img.select(0)}).remap([0,1,2],[0,1,0]).rename('3000');
  var e3500 = img.expression('E + S',{'E':img.select(7),'S':img.select(0)}).remap([0,1,2],[0,1,0]).rename('3500');
return ee.Image.cat([e500,e1000,e1500,e2000,e2500,e3000,e3500])};
var B = A.map(snow);

// next a function is needed to sum and find the minimum

var unweighted = function(img){var uni = img.reduceRegions({
    reducer: ee.Reducer.sum().unweighted(),
    collection: grid,scale:500});
    var sum = ee.Feature(uni);
    return sum;
};

var sumA =B.map(unweighted);
var sumB = sumA.reduceColumns(ee.Reducer.min(7),['0500','1000','1500','2000','2500','3000','3500']);
print(sumB);

0voto

Peter Villar Puntos 11

Supongo que su objetivo es hacer que esto funcione para más de una imagen, por lo tanto una colección de imágenes. Por lo tanto, tiene que trabajar dentro de un mapa. Con una sola imagen la función podría omitirse.

Esta función debe hacer una featurecollection con una característica para cada cuadrícula. Añade el nombre de la banda de valor mínimo (como BandName) y el valor mínimo (como minValue). Como su entrada es una imagen, y la salida una featurecollection, necesitará aplanar() el resultado de la función.

// next a function is needed to sum and find the minimum
var unweighted = function(img){
  var uni = img.reduceRegions({
    reducer: ee.Reducer.sum().unweighted(),
    collection: grid,
    scale:500}).map(function(feat){
      var id = ee.String(feat.get('system:index')).cat('-').cat(ee.String(img.get('system:index')));
      var values = ee.Feature(feat).toDictionary(img.bandNames()).values();
      var bandNames = img.bandNames().map(function(name){return ee.Number.parse(name)});
      var array = ee.Array.cat([values, bandNames], 1);
      var min = array.reduce(ee.Reducer.min(2), [0], 1);
      var key = ee.String(min.get([0,1]).toInt());
      var value = min.get([0,0]);
      return ee.Feature(feat.setMulti(ee.Dictionary.fromLists(['BandName', 'minValue', 'id'], [key, value, id])));
    });
    return uni; 
};

var featureCollection = B.map(unweighted).flatten();
print('featureCollection output as the Grid', 'prop BandName is the band corresponding to', 
          '(first) minimum value "minValue"',featureCollection);

Guión de enlace

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