Фильтрация изображений из коллекции изображений с высоким процентом облаков (sentinel-2). Это возвращает 0 элементов?
Я запускаю коллекцию изображений через NDWI
функция. Я пытаюсь отфильтровать изображения с большим количеством облаков. Страж-2 имеет метаданные CLOUD_PIXEL_PERCENTAGE
и я надеялся, что смогу отфильтровать изображения менее определенного процента пикселя в облаке (скажем, 10-20%). По какой-то причине это возвращает ноль изображений, независимо от того, какое значение я использую, поэтому я должен использовать функцию неправильно.
var bands = ['B11','B8','B3'];
var collection = ee.ImageCollection('COPERNICUS/S2').select(bands);
var filtered = collection.
filterBounds(geometry4).
filterDate('2017-05-01','2017-12-01');
var filterClouds
=filtered.filter(ee.Filter.lt('CLOUD_PIXEL_PERCENTAGE',100));
print(filterClouds);
Я использую ee.Filter.lt
объект, который должен возвращать изображения со значениями, которые меньше указанного значения (100) для указанных метаданных (Cloud Pixel Percentage
). Я должен вернуть практически все изображения? но я ничего не возвращаю...
могу ли я не бежать ee.Filter.lt
на ImageCollection
? если да, то используется ли подобная функция для коллекций?
1 ответ
Необходимое свойство метаданных называется CLOUDY_PIXEL_PERCENTAGE
Таким образом, вы фильтруете несуществующую запись, которая не возвращает ошибку, но также не дает результатов.
Также, ImageCollection
у них есть встроенный метод, называемый filterMetadata
который достигает того же результата, который вы получаете, но без необходимости указывать ee.Filter
:
var geometry4 = ee.Geometry.Point(-107.42, 36.63)
var bands = ['B11','B8','B3'];
var collection = ee.ImageCollection('COPERNICUS/S2').select(bands);
var filtered = collection
.filterBounds(geometry4)
.filterDate('2017-05-01','2017-12-01');
var filterClouds = filtered
.filterMetadata('CLOUDY_PIXEL_PERCENTAGE','less_than',50);
// returns 21 results
print(filtered.size())