Фильтрация изображений из коллекции изображений с высоким процентом облаков (sentinel-2).Это возвращает 0 элементов? - PullRequest
0 голосов
/ 01 февраля 2019

Я запускаю коллекцию изображений через функцию NDWI.Я пытаюсь отфильтровать изображения с большим количеством облаков.Sentinel-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 Ответ

0 голосов
/ 01 февраля 2019

Необходимое свойство метаданных называется CLOUDY_PIXEL_PERCENTAGE, поэтому вы фильтруете несуществующую запись, которая не возвращает ошибку, но и результатов тоже нет.

Кроме того, ImageCollection sиметь встроенный метод, называемый 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())
...