使用javascript计算哨兵2的NDVI

问题描述

我是 GEE 和 Javascript 的新手。我正在尝试执行一个简单的任务:从 2015 年到 2021 年计算并导出 Sentinel 2 的 ndvi,。这是我的代码

var s2 = ee.ImageCollection("copERNICUS/S2_SR"),s2_cloud = ee.ImageCollection("copERNICUS/S2_CLOUD_PROBABILITY"),point = /* color: #98ff00 */ee.Geometry.Point([117.34081098192927,23.95611396961109]); 


/** 
* 
* remove cloud by probability bands 
* 
* */ 
function rmCloudByProbability(image,thread) { 
  var prob = image.select("probability"); 
  return image.updateMask(prob.lte(thread)); 
} 


/** 
* 
* scale image 
* 
* */ 
function scaleImage(image) { 
  var time_start = image.get("system:time_start"); 
  image = image.divide(10000); 
  image = image.set("system:time_start",time_start); 
  return image; 
} 


function getMergeImages(primary,secondary) { 
  var join = ee.Join.inner(); 
  var filter = ee.Filter.equals({ 
    leftField: 'system:index',rightField: 'system:index' 
  }); 
  var joinCol = join.apply(primary,secondary,filter); 
  joinCol = joinCol.map(function(image) { 
    var img1 = ee.Image(image.get("primary")); 
    var img2 = ee.Image(image.get("secondary")); 
    return img1.addBands(img2); 
  }); 
  return ee.ImageCollection(joinCol); 
} 


function main() { 
  var startDate = "2017-03-28"; 
  var endDate = "2021-04-08"; 
  Map.centerObject(point,8); 
  var s2Imgs1 = s2.filterDate(startDate,endDate)
                  .filterBounds(point)
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',80))
               
                  .map(scaleImage); 
  var s2Imgs2 = s2_cloud.filterDate(startDate,endDate) 
                        .filterBounds(point); 
  var s2Imgs = getMergeImages(s2Imgs1,s2Imgs2); 
  s2Imgs = s2Imgs.map(function(image) { 
    
    return rmCloudByProbability(image,50); 
    
  }); 
  print("s2Imgs",s2Imgs);
  Map.addLayer(s2Imgs.first(),{min:0,max:0.3,bands:["B4","B3","B2"]},"cloud"); 
} 
main(); (The prevIoUs code here is correct)


function NDVI_V1(s2Imgs) {
 var nir =s2Imgs.select("B8");
 var red =s2Imgs.select("B4");
 var ndvi = nir.subtract(red).divide(nir.add(red));
 return ndvi;
}

 print(" ndvi",ndvi);

错误消息显示“NDVI 未在此范围内定义。在,第 58 行,第 34 行”。 另外,我有一个小问题,我应该如何在右侧的任务栏上显示所需的数据?这是我之前说的正确代码。 有人可以向我解释我做错了什么吗?提前致谢! 另外,我有一个小问题,我应该如何在右侧的任务栏上显示所需的数据?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...