GEE - "NDVI" 未在此范围内定义
GEE - "NDVI" is not defined in this scope
我是 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 行
我只有大约 20 行代码,并确保删除所有空白 space...
我尝试的一个修复是使用 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,
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');
有人可以向我解释我做错了什么吗?提前致谢!
var NDVI_January = comp_January.select('NDVI');
...
Map.addLayer(NDVI, ndviVis, 'NDVI');
您的代码的第一个版本不起作用,因为您没有定义名为 NDVI
的 变量。可能您想改写 NDVI_January
。
Map.addLayer(NDVI_January, ndviVis, 'NDVI');
变量名与波段名不同。变量名从不出现在引号中——它们仅由 var
、函数参数列表或导入定义。
您的第二个脚本正在生成全白输出,因为您的可视化 max
太高了,所以只使用了第一个调色板条目。我通过使用代码编辑器中的 Inspector 选项卡确定了这一点:单击它,然后单击地图上的某个位置,您可以找出该像素下的波段的数值是多少.
将max: 8000.0,
更改为max: 1.0,
,您将能够看到一些数据。然后进一步调整它以适合您正在寻找的调色板用法。
我是 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 行
我只有大约 20 行代码,并确保删除所有空白 space...
我尝试的一个修复是使用 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,
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');
有人可以向我解释我做错了什么吗?提前致谢!
var NDVI_January = comp_January.select('NDVI');
...
Map.addLayer(NDVI, ndviVis, 'NDVI');
您的代码的第一个版本不起作用,因为您没有定义名为 NDVI
的 变量。可能您想改写 NDVI_January
。
Map.addLayer(NDVI_January, ndviVis, 'NDVI');
变量名与波段名不同。变量名从不出现在引号中——它们仅由 var
、函数参数列表或导入定义。
您的第二个脚本正在生成全白输出,因为您的可视化 max
太高了,所以只使用了第一个调色板条目。我通过使用代码编辑器中的 Inspector 选项卡确定了这一点:单击它,然后单击地图上的某个位置,您可以找出该像素下的波段的数值是多少.
将max: 8000.0,
更改为max: 1.0,
,您将能够看到一些数据。然后进一步调整它以适合您正在寻找的调色板用法。