3 votos

¿Cómo eliminar propiedades de una imagen ee.Image?

Estoy tratando de eliminar algunas propiedades de una imagen en Google Earth Engine, pero simplemente no logro entenderlo.

Lo que he intentado:

var palsarForest = ee.ImageCollection('JAXA/ALOS/PALSAR/YEARLY/FNF').aside(print,"original palsar")
                  .filterDate('2007-01-01', '2007-12-31')
                  .map(function(image){return image}) // Sé que no hace nada, pero esperaba que eliminara todas las propiedades
                  .first()
                  .remap([1], [1]) // mantener 1 = bosque
                  .select(["remapped"],["forest"]).aside(print,"final palsar")
                  .set('system:index',null).aside(print,"después de establecer")
palsarForest = palsarForest
  .copyProperties({'source':palsarForest, 'exclude':['system:index']})
  .aside(print,"después de copiar propiedades")

Ninguno de mis intentos anteriores funcionó, aunque el último debería haber funcionado según la documentación:

La lista de propiedades a excluir al copiar todas las propiedades. No debe especificarse si se especifican propiedades.

Sé que podría simplemente ignorar esas propiedades, pero la imagen anterior se incluirá en una colección de imágenes y simplemente no parece correcto que cada imagen tenga sus propias propiedades que no están disponibles para el resto de las imágenes en la colección.

3voto

Daniel Puntos 9

Alguien más puede corregirme, pero hasta donde yo sé, no puedes eliminar propiedades. Solo agregarlas o establecerlas en null. He notado que las propiedades null tienden a desaparecer después de ciertos tipos de operaciones. Si realmente quieres deshacerte de las propiedades, puedes crear una nueva imagen, luego añadir de nuevo las bandas originales de la imagen y finalmente añadir las propiedades en las que estás interesado. Aquí hay algunas formas de hacerlo:

var image = ee.ImageCollection('JAXA/ALOS/PALSAR/YEARLY/FNF')
  .filterDate('2007-01-01', '2007-12-31')
  .first()
var withoutSomeProps = ee.Image([]) // Imagen sin bandas ni propiedades
  .addBands(image) // En este punto tienes tu imagen sin propiedades
  // .copyProperties(image) // Incluir todas menos las propiedades del sistema
  // .copyProperties({source: image, properties: ['fnf_class_names']}) // Incluir propiedades específicas
  // .copyProperties({source: image, exclude: ['system:index']}) // Excluir propiedades específicas  
  // .copyProperties({ // Incluir propiedades que cumplan con el filtro
  //   source: image,
  //   properties: image.propertyNames().filter(
  //     ee.Filter.stringStartsWith('item', 'system:')
  //   )
  // })
  // .copyProperties({ // Excluir propiedades que cumplan con el filtro
  //   source: image,
  //   exclude: image.propertyNames().filter(
  //     ee.Filter.or(
  //       ee.Filter.stringStartsWith('item', 'system:'),
  //       ee.Filter.stringEndsWith('item', '_palette')
  //     )
  //   )
  // })
print(withoutSomeProps)

https://code.earthengine.google.com/947d2cd4d50ee8802037cad100a154e1

0voto

Linh Lam Puntos 3

Nada desaparece con copyProperties porque es aditivo; estás copiando propiedades de una imagen a sí misma, y ya tiene esas propiedades.

Solo establecerlas como nulas debería hacer que desaparezcan cuando exportes el resultado.

0voto

Cin316 Puntos 339

.map(function(image){return image}) // Sé que no hace nada, pero esperaba que eliminaría todas las propiedades

Una simple operación matemática o booleana puede ayudarte a eliminar todas las propiedades, por ejemplo, .map(function(image){return image.multiply(1)}).

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