问题描述
我是 GEE 和 Javascript 的新手。我正在尝试执行一个简单的任务:从 Landsat 7 计算和可视化 2010 年 1 月的 NDVI。这是我的代码:
//Load January 2010 Data
var January = ee.ImageCollection("LANDSAT/LE07/C01/T1_RT")
.filterDate('2010-01-01','2010-01-31');
var ls_January = ee.Algorithms.Landsat.simpleComposite(January);
var comp_January = ls_January.normalizedDifference(['B4','B3']).rename('NDVI');
var NDVI_January = comp_January.select('NDVI');
var ndviVis = {
min: 0.0,max: 8000.0,palette: [
'FFFFFF','CE7E45','DF923D','F1B555','FCD163','99B718','74A901','66A000','529400','3E8601','207401','056201','004C00','023B01','012E01','011D01','011301'
],};
Map.setCenter(6.746,46.529,2);
Map.addLayer(NDVI,ndviVis,'NDVI');
错误消息显示“NDVI 未在此范围内定义。 在,第 32 行 在,第 34 行"
我尝试过的一种解决方法是使用 GEE 自己的示例更改 NDVI 的计算方式。虽然这似乎解决了之前的错误消息“NDVI 未在此范围内定义”,但我怀疑它是否正确,因为我的最终地图是空白的。这是修改后的代码。
var January = ee.ImageCollection("LANDSAT/LE07/C01/T1_RT")
.filterDate('2010-01-01','2010-01-31');
var ls_January = ee.Algorithms.Landsat.simpleComposite(January);
var addNDVI = function(image) {
var ndvi = image.normalizedDifference(['B4','B3']).rename('NDVI');
return image.addBands(ndvi);
};
var NDVI = addNDVI(ls_January).select('NDVI')
var ndviVis = {
min: 0.0,'NDVI');
有人可以向我解释我做错了什么吗?提前致谢!
解决方法
var NDVI_January = comp_January.select('NDVI');
...
Map.addLayer(NDVI,ndviVis,'NDVI');
您的代码的第一个版本不起作用,因为您尚未定义名为 NDVI
的变量。可能您想改写 NDVI_January
。
Map.addLayer(NDVI_January,'NDVI');
变量名与带名不同。变量名永远不会出现在引号中——它们仅由 var
、函数参数列表或导入定义。
您的第二个脚本正在生成全白输出,因为您的可视化 max
太高了,所以只使用了第一个调色板条目。我通过使用代码编辑器中的 Inspector 选项卡确定了这一点:单击它,然后单击地图上的某处,您可以找出该像素下带的数值。 >
将 max: 8000.0,
更改为 max: 1.0,
,您将能够看到一些数据。然后进一步调整它以适合您正在寻找的调色板使用。