Estoy tratando de filtrar las imágenes Landsat en función del porcentaje de nubosidad para mi ROI. He intentado adaptar el código en enlace uno y enlace dos pero no puedo conseguir lo que quiero. Mi ROI se ha importado como una feaureCollection y cubre 8 mosaicos de Landsat.
Este es mi código
//select images from image collection
var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1')
//LT05, LE07, LC08
.filterDate('1980-01-01', '2018-12-31')
.filter(ee.Filter.or(
ee.Filter.and(ee.Filter.eq('WRS_PATH', 208),
ee.Filter.eq('WRS_ROW', 22)),
ee.Filter.and(ee.Filter.eq('WRS_PATH', 208),
ee.Filter.eq('WRS_ROW', 23)),
ee.Filter.and(ee.Filter.eq('WRS_PATH', 208),
ee.Filter.eq('WRS_ROW', 24)),
ee.Filter.and(ee.Filter.eq('WRS_PATH', 207),
ee.Filter.eq('WRS_ROW', 22)),
ee.Filter.and(ee.Filter.eq('WRS_PATH', 207),
ee.Filter.eq('WRS_ROW', 23)),
ee.Filter.and(ee.Filter.eq('WRS_PATH', 207),
ee.Filter.eq('WRS_ROW', 24)),
ee.Filter.and(ee.Filter.eq('WRS_PATH', 206),
ee.Filter.eq('WRS_ROW', 23)),
ee.Filter.and(ee.Filter.eq('WRS_PATH', 206),
ee.Filter.eq('WRS_ROW', 24))));
var c = l8.map(function(img) { return img.clip(my_geom); });
var withCloudiness = c.map(function(image) {
var cloud = ee.Algorithms.Landsat.simpleCloudScore(image).select('cloud');
var cloudiness = cloud.reduceRegion({
reducer: 'mean',
geometry: my_geom,
scale: 30,
});
return image.set(cloudiness);
});
var filteredCollection = withCloudiness.filter(ee.Filter.lt('cloud', 20));
print(filteredCollection);
Así que tengo dos problemas:
1: Al utilizar Landsat 8, el código se ejecuta, pero no filtra en base a un umbral, el 20% en este caso. Cuando escribo la salida en un archivo, se obtienen dos columnas, cloud_cover y cloud_cover_land, ambas con observaciones de nubes superiores al 20%.
2: Cuando intento usar Landsat 5 o 7 mi archivo está vacío... pero sé que hay escenas que están por debajo del 20% de nubosidad para Landsat 5.
¿Qué estoy haciendo mal?