Итерации по набору данных Imagecollection - PullRequest
0 голосов
/ 13 июля 2020

Я бы хотел перебирать набор данных Imagecollection и обрабатывать каждое изображение. Я хотел бы извлечь каждое изображение, вычислить NDVI, используя это:

var image2 = Filtered_Free_image.clip(geometry);
Map.addLayer(image2, {bands:['B4','B3','B2'], min:0, max:1});
var NDVI = image2.expression(
        "(NIR - RED) / (NIR + RED)",
        {
          RED: image2.select("B4"),    //  RED
          NIR: image2.select("B8"),    // NIR
          BLUE: image2.select("B2")    // BLUE
        });

, а затем распечатать это, используя :

Map.addLayer(NDVI, {min: 0.1, max: 0.8}, "NDVI");

Используя этот код:

var Filtered_Region = imageCollection.filterBounds(geometry); //Load the dataset
var Filtered_Free_image = Filtered_Region.first();//Take the first image

Я могу взять первое изображение из набора данных, но не знаю, как действовать дальше. Как я могу взять 2-е, 3-е… эт c изображение, используя что-то вроде этого: Filtered_Free_image[2],Filtered_Free_image[3]?

Должен ли я сначала преобразовать его в список? Если да, то как?

1 Ответ

1 голос
/ 14 июля 2020

Вы можете преобразовать в список, да, но лучший способ продолжить, чтобы получить эффективный сценарий Earth Engine, как правило, - это вообще избегать использования числовых c индексов. По возможности, работа с изображениями в коллекции изображений должна выполняться с .map(...). Вы берете каждую операцию, которую хотите выполнить с изображением, оборачиваете ее в функцию и передаете эту функцию в .map(...):

var Filtered_Region = imageCollection.filterBounds(geometry);

// Clip each image in the collection.
var Clipped_Collection = Filtered_Region.map(function (image) {
  return image.clip(geometry);
});

// Display the composite (mosaic) of all images in the collection.
Map.addLayer(Clipped_Collection, {bands:['B4','B3','B2'], min:0, max:1});

// Compute NDVI of each image in the collection.
var NDVI_Collection = Clipped_Collection.map(function(image) {
  return image.expression(
        "(NIR - RED) / (NIR + RED)",
        {
          RED: image2.select("B4"),    //  RED
          NIR: image2.select("B8"),    // NIR
          BLUE: image2.select("B2")    // BLUE
        });
});

// Display the composite (mosaic) of all NDVIs.
Map.addLayer(NDVI_Collection, {min: 0.1, max: 0.8}, "NDVI");

Обратите внимание, что когда вы даете addLayer коллекцию, она отображает последний пикселей в каждой точке. Если вместо этого вам нужно какое-то среднее значение, вы можете указать это:

Map.addLayer(NDVI_Collection.median(), {min: 0.1, max: 0.8}, "NDVI");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...