首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Google引擎中使用MODIS计算SAVI (获取错误: Image.select:模式'B2‘不匹配任何波段)。

如何在Google引擎中使用MODIS计算SAVI (获取错误: Image.select:模式'B2‘不匹配任何波段)。
EN

Stack Overflow用户
提问于 2022-11-27 17:39:18
回答 1查看 24关注 0票数 0

我试着用数据计算植被指数。但是我得到了一个错误,显示:

Image.select:模式'B2‘不匹配任何乐队。

代码:

代码语言:javascript
复制
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不被指定为RedB2 to NIR

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-27 18:25:00

当你遇到这类问题时,通常要做的事情是开始检查数据集中的实际内容--你匹配了多少幅图像,这些图像有哪些属性和波段,等等。我发现了两个问题:

  1. 您的筛选条件与零图像匹配。因此,集合是空的,因此该集合中的median()图像根本没有带。(您可以通过将集合放入变量并打印它的size()来检查它。)你需要调整标准。 它们不匹配的主要原因似乎是MODIS/061/MOD09A1中的图像没有CLOUDY_PIXEL_PERCENTAGE属性。
  2. MODIS/061/MOD09A1的乐队名称不是B1B2,但是sur_refl_b01sur_refl_b02等等。您可以在“地球引擎代码编辑器”或“数据集描述”页面中的“检查器”中看到这一点。

也许您是在处理有关不同数据集的信息?

对于上述两个问题,您的代码会产生一些结果。这是我在测试时生成的(JS)版本(代码编辑器链接):

代码语言:javascript
复制
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')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74592329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档