在 GEE 中与 Javascript 交互的问题

时间:2021-03-25 14:39:50

标签: javascript gee

我在 Javascript 中迭代时遇到问题,希望有人能帮助我。

我在 Google Earth Engine 上编写了一个代码,将 NDWI 水面罩应用于 Landsat 集合。该代码过滤 landsat 集合,估计 de NDWI,并根据平均 NDWI 掩码剪辑集合。虽然,我想对我的图像集合应用动态水蒙版,所以我必须为每个图像使用不同的 NDWI 蒙版,而不是平均 NDWI 蒙版。

问题:我不知道如何创建一个循环来通过其各自的 NDWI 水面罩而不是平均 NDWI 水面罩来掩盖集合的每个图像。

提前致谢:)

var geometry = general geometry

var start_date = ee.Date.fromYMD(2010, 10, 1);
var end_date = ee.Date.fromYMD(2015, 10, 31);

// LANDSAT 8
var col_landsat_8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR")
  .filterDate(start_date, end_date)
  .select([1,2,3,4,5,6,7,10], ['BB','BG','BR','BNIR','BSWIR_1','BSWIR_2','BT','pixel_qa'])
  .filterMetadata('CLOUD_COVER', 'less_than', 10)
  .filterBounds(geometry);
  
var f_cloudMask_SR = function(image) {
  // If the cloud bit (5) is set and the cloud confidence (7)  // is high or the cloud shadow bit is set (3), then it's a bad pixel.
  var cloudShadowBitMask = (1 << 3);
  var cloudsBitMask = (1 << 5);
  var cloudConfidence = (1 << 7);
  // Get the pixel QA band.
  var qa = image.select('pixel_qa');
  // Both flags should be set to zero, indicating clear conditions.
  var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0).and(qa.bitwiseAnd(cloudsBitMask).eq(0)).and(qa.bitwiseAnd(cloudConfidence).eq(0));
  return image.updateMask(mask);
};
//
col_landsat_8 = col_landsat_8.map(f_cloudMask_SR);

var col_landsat_tot = col_landsat_8
//
print('Imagens selecionadas:', col_landsat_tot);

var makeNDWI = function(image)
{
  var ndwi = image.expression(
    '(GREEN - NIR) / (GREEN + NIR)',
    {
      'NIR': image.select('BNIR'),
      'GREEN': image.select('BG')
    }).rename('NDWI');
  return image.addBands(ndwi);
};

var ndwi = col_landsat_tot.map(makeNDWI);
// reduce the image collection to one image by summing the rasters
var ndwi = ndwi.select(['NDWI']);
var ndwi_mean = ndwi.reduce(ee.Reducer.mean());

//var vis_indveg = {min: 0, max: 1, palette: ['SandyBrown', 'Blue']};
//Map.addLayer(ndwi, vis_indveg , 'NDWI');

var waterMask = ndwi_mean
//Define function
var f_waterMask_SR_G1 = function(image) {
  var mask2 = waterMask.select(0); 
  return image.updateMask(mask2);};
//  

var col_landsat_tot_water_mask = col_landsat_tot.map(f_waterMask_SR_G1);

//LANDSAT 8 TRUE COLOR COMPOSITION
var img_mean = col_landsat_tot_water_mask.mean();
var vis_composition = {min: 0,max:2000,bands: ['BR', 'BG', 'BB'],gamma: 2};
Map.addLayer(img_mean, vis_composition, 'Landsat');   

https://code.earthengine.google.com/80fa1eca029e02f169f385f30820dba1

0 个答案:

没有答案
相关问题