1 votos

Google Earth Engine - filtrar landsat por cobertura de nubes en múltiples polígonos

Quiero hacer una colección de imágenes Landsat que esté totalmente libre de nubes sobre un conjunto de polígonos. Tengo alrededor de 300 polígonos (todos dentro de una sola baldosa Landsat). He encontrado este que está haciendo exactamente lo que quiero sobre un solo polígono, pero no puedo averiguar cómo conseguir que funcione sobre un conjunto de polígonos (que se cargan como una clase de característica).

Esto es lo que he intentado hacer para modificar la solución de la pregunta publicada anteriormente, donde imgcollection es mi Landsat TOA Image Collection y fc es mi feature class de polígonos. Yo estaba tratando de usar el mapa y el clip juntos para seleccionar todos los polígonos en la clase de características para cada imagen (basado en las respuestas en este pregunta relacionada).

  var combine = imgcollection.map(function(imgcollection) { return 
    imgcollection.clip(fc); });

Después de esta línea, he intentado continuar con la solución de la primera pregunta, pero no funciona. El error que obtengo es el siguiente, que me confunde. Estoy tratando de utilizar la variable "combinar" como la geometría - ¿Estoy entendiendo mal esto y en realidad el uso de otra cosa?

  ImageCollection (Error)
  Image.reduceRegion, argument 'geometry': Invalid type. Expected: 
  Geometry. Actual: ImageCollection.

EDIT: código completo

  var fc = ee.FeatureCollection('ft:omit');

  var imgcollection = ee.ImageCollection("LANDSAT/LC08/C01/T1_RT_TOA");

  var combine = imgcollection.map(function(img) { return img.clip(fc); });

  var withCloudiness = combine.map(function(image) {
    var cloud =       ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');
    var cloudiness = cloud.reduceRegion({
      reducer: 'mean', 
      geometry: combine, 
      scale: 30,
    });
    return image.set(cloudiness);
  });

  var filteredCollection = withCloudiness.filter(ee.Filter.lt('cloud', 10));
  print(filteredCollection);

1voto

hibbelig Puntos 176

El error es bastante claro. Parámetro geometry de la función reduceRegion debe ser un Geometry . En la documentación dice:

geometry (Geometría, por defecto: null): La región sobre la que reducir los datos. Por defecto, la huella de la primera banda de la imagen.

Por lo tanto, si quiere reducir sobre fc :

var fc = ee.FeatureCollection('ft:omit');

  var imgcollection = ee.ImageCollection("LANDSAT/LC08/C01/T1_RT_TOA");

  var combine = imgcollection.map(function(img) { return img.clip(fc); });

  var withCloudiness = combine.map(function(image) {
    var cloud =       ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');
    var cloudiness = cloud.reduceRegion({
      reducer: 'mean', 
      geometry: fc.geometry(), 
      scale: 30,
      maxPixels: 1e13,
    });
    return image.set(cloudiness);
  });

  var filteredCollection = withCloudiness.filter(ee.Filter.lt('cloud', 10));
  print(filteredCollection);

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