在Google Earth Engine中用MODIS计算SAVI报错:找不到B2波段
问题原因及解决方法
错误提示Image.select: Pattern 'B2' did not match any bands的核心原因是:你用错了MODIS/061/MOD09A1数据集的波段名称。这个数据集的波段不是以B1、B2命名的,而是采用sur_refl_b01、sur_refl_b02这类格式。
具体对应关系:
- 红波段(RED)对应
sur_refl_b01 - 近红外波段(NIR)对应
sur_refl_b02
修正后的代码如下:
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('sur_refl_b02'), 'RED':image.select('sur_refl_b01') }).rename('savi') saviVis = {'min':0.0, 'max':1, 'palette':['yellow', 'green']} Map = geemap.Map() Map.addLayer(savi, saviVis, 'SAVI') Map
另外,以后遇到类似波段匹配错误,可以在代码里加一行print(image.bandNames().getInfo()),直接查看当前影像的所有波段名称,快速定位问题。
内容的提问来源于stack exchange,提问作者user14
相关产品推荐
相关产品推荐

