Bagaimana cara menumpuk band di Google Earth Engine?


10

Saya telah membuat koleksi Gambar di GEE dan dengan bantuan fungsi saya telah menghitung indeks NDVI dan memetakannya untuk membuat koleksi lain dengan NDVI sebagai sebuah band.

Sekarang saya ingin membuat gambar bertumpuk dengan band-band NDVI dari seluruh koleksi gambar menjadi satu gambar. Jadi harus seperti NDVI_1, NDVI_2 dan seterusnya ...

Bagaimana saya bisa melakukan ini? Saya menempelkan kode yang menunjukkan koleksi NDVI yang saya miliki sejauh ini

// 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');

Jawaban:


5

Perhatikan bahwa cara baru dan lebih baik untuk melakukannya adalah dengan imageCollection.toBands().


Itu sudah lama datang. Terima kasih atas pembaruannya.
JepsonNomad

11

Berikut adalah contoh membuat gambar bertumpuk, menggunakan metode ee.ImageCollection.iterate () .

Saya juga menyertakan kode untuk didefinisikan untuk mendefinisikan contoh wilayah dan koleksi gambar, sehingga itu adalah contoh yang berfungsi.

// 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');
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.