Фильтрация Google Earth Engine

Я хочу отфильтровать и выбрать определенные изображения в коллекции в Google Earth Engine?

var l51990 = ee.ImageCollection('LANDSAT/LT5_L1T_TOA')
.filterBounds(table)   
.filterDate('1990-01-01','2013-01-01')  
.sort('CLOUD_COVER');

Я хотел бы выбрать изображение с наименьшей облачностью за год с 1990 по 2013 год.

Есть ли чистый способ сделать это, не повторяя этот блок кода снова и снова?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 477
3

Ответы 3

Вы можете использовать first() для получения изображения или mosaic() для получения пикселей.

Есть ли чистый способ сделать это, не повторяя этот блок кода снова и снова?

да - используйте цикл for или while для повторения одного и того же блока кода столько раз, сколько вам нужно. Используйте переменные внутри цикла, чтобы определить параметры границы, дата и Сортировать (возможно, также включая значения lat и long)

Я не буду писать для вас рабочий код, но я помогу вам, если вы разместите свой собственный.

Вы должны выполнять временную фильтрацию для каждого года в рамках отображаемой функции по списку лет, из которых вы хотите получить изображение с наименьшей облачностью. Сначала выполните пространственную фильтрацию вне функции сопоставления, а затем выполните фильтрацию и захватите первое изображение в функции. В результате вы получите коллекцию изображений с наименьшим количеством облачных изображений за каждый год над вашей изучаемой областью.

var years = ee.List.sequence(1990,2013)
var l5 = ee.ImageCollection('LANDSAT/LT5_L1T_TOA').filterBounds(table)

var leastCloudy = ee.ImageCollection(years.map(function(i){
    var t1 = ee.Date.fromYMD(i,1,1)
    var t2 = t1.advance(1,'year')
    return ee.Image(l5.filterDate(t1,t2).sort('CLOUD_COVER').first())
}))

print(leastCloudy)

После того, как у вас есть коллекция отфильтрованных изображений, вы можете выполнить любой анализ.

Другие вопросы по теме