我试着用数据计算植被指数。但是我得到了一个错误,显示:
Image.select:模式'B2‘不匹配任何乐队。
代码:
countries = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017")
canada = countries.filter(ee.Filter.eq("country_na", "Canada"))
image = ee.ImageCollection("MODIS/061/MOD09A1")\
.filterDate('2017-01-01','2017-12-31')\
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',10))\
.filterBounds(canada)\
.median()\
.clip(canada)
savi = image.expression(
'1.5*((NIR-RED)/(NIR+RED+0.5))',{
'NIR':image.select('B2'),
'RED':image.select('B1')
}).rename('savi')
saviVis = {'min':0.0, 'max':1, 'palette':['yellow', 'green']}
Map = geemap.Map()
Map.addLayer(savi, saviVis, 'SAVI')
Map我为什么要犯这个错误?B1不被指定为Red和B2 to NIR吗
发布于 2022-11-27 18:25:00
当你遇到这类问题时,通常要做的事情是开始检查数据集中的实际内容--你匹配了多少幅图像,这些图像有哪些属性和波段,等等。我发现了两个问题:
median()图像根本没有带。(您可以通过将集合放入变量并打印它的size()来检查它。)你需要调整标准。
它们不匹配的主要原因似乎是MODIS/061/MOD09A1中的图像没有CLOUDY_PIXEL_PERCENTAGE属性。MODIS/061/MOD09A1的乐队名称不是B1,B2,但是sur_refl_b01,sur_refl_b02等等。您可以在“地球引擎代码编辑器”或“数据集描述”页面中的“检查器”中看到这一点。也许您是在处理有关不同数据集的信息?
对于上述两个问题,您的代码会产生一些结果。这是我在测试时生成的(JS)版本(代码编辑器链接):
var countries = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017");
var canada = countries.filter(ee.Filter.eq("country_na", "Canada"));
var images = ee.ImageCollection("MODIS/061/MOD09A1")
.filterDate('2017-01-01','2017-12-31')
// .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',10))
.filterBounds(canada);
// print(images);
var image = images.median().clip(canada);
Map.addLayer(canada);
Map.addLayer(image);
var savi = image.expression(
'1.5*((NIR-RED)/(NIR+RED+0.5))',{
'NIR':image.select('sur_refl_b02'),
'RED':image.select('sur_refl_b01')
}).rename('savi');
var saviVis = {'min':0.0, 'max':1, 'palette':['yellow', 'green']};
Map.addLayer(savi, saviVis, 'SAVI')https://stackoverflow.com/questions/74592329
复制相似问题