Jak układać pasma w Google Earth Engine?

10

Utworzyłem kolekcję obrazów w GEE i za pomocą funkcji obliczyłem indeks NDVI i zmapowałem go, aby utworzyć kolejną kolekcję z NDVI jako zespołem.

Teraz chcę utworzyć obraz w stosie z pasmami NDVI całej kolekcji obrazów w jednym obrazie. Tak powinno być jak NDVI_1, NDVI_2 i tak dalej ...

W jaki sposób mogę to zrobić? Wklejam kod, który pokazuje kolekcję NDVI, którą mam do tej pory

// Collection of Images 
var collection = ee.ImageCollection([feb1,feb2,Mar2,April1, April2, May1, May2, Jun1,Jun2,
July2, Aug2, Sep1, Sep2,Oct1, Oct2, Nov1, Nov2, Dec1, Dec2 ]);



//Using the following function,NDVI of the entire collection is computed
var indicesS2 = function(scene)
{ var ndvi = scene.normalizedDifference(['B8', 'B4']).rename('NDVI');
  var image = ee.Image()
                .set('system:time_start', ee.Date(scene.get('system:time_start')));
         return image.addBands([ndvi]).clip(Sheikhupura);
};
var NDVIcollection = collection.map(indicesS2);
print (NDVIcollection, 'NDVI');
Rawail Naeem
źródło

Odpowiedzi:

5

Zauważ, że nowy, lepszy sposób to zrobić imageCollection.toBands().

Nicholas Clinton
źródło
To był długi czas. Dziękuję za aktualizację.
JepsonNomad
11

Oto przykład tworzenia stosu obrazu przy użyciu metody ee.ImageCollection.iterate () .

Dołączyłem również kod do zdefiniowania, aby zdefiniować przykładowy region i kolekcję obrazów, tak aby był to działający przykład.

// Define a sample Region-of-Interest 
var roi = ee.Geometry.Polygon(
        [[[-109.1, 37.0],
          [-109.1, 36.9],
          [-108.9, 36.9],
          [-108.9, 37.0]]]);

// Define an example collection.
var collection = ee.ImageCollection('COPERNICUS/S2')
                   .filterDate('2016', '2017')
                   .filterBounds(roi);
print('collection', collection);
print('Number of images in collection:', collection.size());

// Calculate NDVI.
var calculateNDVI = function(scene) {
  // get a string representation of the date.
  var dateString = ee.Date(scene.get('system:time_start')).format('yyyy-MM-dd');
  var ndvi = scene.normalizedDifference(['B8', 'B4']);
  return ndvi.rename(dateString);
};
var NDVIcollection = collection.map(calculateNDVI);

var stackCollection = function(collection) {
  // Create an initial image.
  var first = ee.Image(collection.first()).select([]);

  // Write a function that appends a band to an image.
  var appendBands = function(image, previous) {
    return ee.Image(previous).addBands(image);
  };
  return ee.Image(collection.iterate(appendBands, first));
};
var stacked = stackCollection(NDVIcollection);
print('stacked image', stacked);

// Display the first band of the stacked image.
Map.addLayer(stacked.select(0).clip(roi), {min:0, max:0.3}, 'stacked');
Tyler Erickson
źródło