Wie staple ich Bänder in Google Earth Engine?

10

Ich habe eine Bildersammlung in GEE erstellt und mithilfe einer Funktion den NDVI-Index berechnet und zugeordnet, um eine weitere Sammlung mit NDVI als Band zu erstellen.

Jetzt möchte ich ein gestapeltes Bild mit NDVI-Bändern der gesamten Bildersammlung in einem Bild erstellen. Also sollte es wie NDVI_1, NDVI_2 und so weiter sein ...

Wie kann ich das machen? Ich füge den Code ein, der die NDVI-Sammlung zeigt, die ich bisher habe

// 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
quelle

Antworten:

5

Beachten Sie, dass der neue, bessere Weg, dies zu tun, mit ist imageCollection.toBands().

Nicholas Clinton
quelle
Das hat lange gedauert. Danke für das Update.
JepsonNomad
11

Hier ist ein Beispiel für die Erstellung eines gestapelten Bildes mit der Methode ee.ImageCollection.iterate () .

Ich habe auch Code zum Definieren eines Beispielbereichs und einer Bildersammlung eingefügt, damit es sich um ein funktionierendes Beispiel handelt.

// 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
quelle