3 votos

Los TIFF exportados desde Earth Engine a mi disco parecen corruptos

Estoy tratando de exportar algunas imágenes desde el motor de la Tierra utilizando Export.image.toDrive pero parece que todos los archivos que genero parecen corruptos.

Cuando me refiero a corruptos, significa que si los abro con cualquier visor como Photoshop, Vista Previa, etc, se ven todos negros con líneas (imagen de ejemplo en la parte inferior). También intenté abrirlas con OpenCv en Python y las imágenes no tenían sentido (tienen tres canales, pero el número en los canales no tiene ningún sentido).

Busqué varios ejemplos en internet donde la gente exportaba imágenes y no encontré ninguna diferencia con mi código. Además, si trazo en el mapa del Motor de la Tierra los datos parecen estar bien. Así que supongo que estoy haciendo algo mal con la exportación, pero no puedo conseguirlo.

El procedimiento que sigo es el siguiente.

  1. Selecciono un área del mapa con la herramienta cuadrada.
  2. Ejecuto el script.
  3. Voy a la tarea y exporto algunas de las capas que aparecen allí.
  4. Voy a Drive y descargo el archivo para abrirlo.
  5. El archivo está corrupto :(.

fragmento de código

var s2 = ee.ImageCollection('COPERNICUS/S2') // Level-C1 (TOA), for Level-2A (BOA) use 'COPERNICUS/S2_SR'
  .filterBounds(geometry)
  .filter(ee.Filter.lessThanOrEquals('CLOUDY_PIXEL_PERCENTAGE', 50))
  .filter(ee.Filter.date('2020-01-01', '2020-01-10'))

var clip_all = function(img){
  return img.clip(geometry)
}

var s2_clip = s2.map(clip_all)

var s2_list = s2_clip.toList(s2_clip.size())

var n = s2_list.size().getInfo()

for (var i = 0; i < n; i++){
  var img = ee.Image(s2_list.get(i))

  var rgb = img.select('B2','B3', 'B4')//.float()
  var date = img.date().format('yyyyMMdd').getInfo()
  Map.addLayer(img, {bands: ['B4', 'B3', 'B2'], max: 5048}, 'Image_'+date)

  //export
  Export.image.toDrive({
  image: rgb,
  description: 'COPERNICUS_RGB'+ date,
  scale: 30,
  region: geometry, 
  maxPixels: 1e10,
  fileNamePrefix: 'exampleExport',
  folder: 'test_earthengine_2'
})
}

algunas variaciones que he probado:

  • usando otra escala 30-->10, lo mismo.
  • añadiendo float a la línea var rgb = img.select('B2','B3', 'B4').float() no hay cambios.

Me pregunto si el problema es que la exportación puede tardar mucho tiempo y las cosas que aparecen en mi disco todavía necesitan algo de procesamiento. (Ya esperé 8 horas y los archivos no parecían cambiar en mi disco).

Cuando me refiero a corrupto este es el tipo de imágenes que estoy obteniendo:

corrupted image

4voto

Suresh Puntos 11

Lo más probable es que las herramientas de edición de imágenes que está utilizando no esperen valores de canal de color (banda) de punto flotante, sino enteros. Los datos de color en coma flotante son inusuales fuera de la informática científica (y a veces de los juegos), y muchos programas de edición o visualización de imágenes no los soportan.

Puede utilizar Image.visualize para convertir la imagen a RGB, de la misma manera que Map.addLayer hace por ti implícitamente.

Sustituya su línea

  var rgb = img.select('B2','B3', 'B4')

con

  var rgb = img.visualize({bands: ['B4', 'B3', 'B2'], max: 5048});

Observe que estas son exactamente las mismas opciones que se pasan a Map.addLayer ¡!

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