Google 어스 엔진에 밴드를 쌓는 방법은 무엇입니까?


10

GEE에서 이미지 모음을 만들었으며 함수를 사용하여 NDVI 색인을 계산하고 NDVI를 밴드로 사용하여 다른 모음을 만들도록 매핑했습니다.

이제 전체 이미지 컬렉션의 NDVI 밴드를 사용하여 스택 이미지를 하나의 이미지로 만들고 싶습니다. NDVI_1, NDVI_2 등과 같아야합니다.

어떻게해야합니까? 지금까지 가지고있는 NDVI 컬렉션을 보여주는 코드를 붙여 넣습니다.

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

답변:


5

이 작업을 수행하는 새롭고 더 나은 방법은입니다 imageCollection.toBands().


오랜 시간이 걸렸습니다. 업데이트 해 주셔서 감사합니다.
JepsonNomad

11

다음은 ee.ImageCollection.iterate () 메서드를 사용하여 스택 이미지를 만드는 예입니다 .

또한 예제 영역 및 이미지 모음을 정의하여 작동하는 예제가되도록 정의하는 코드를 포함 시켰습니다.

// 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');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.