出现的问题:
我是GEE的刚开始接触 拜读您的“Google Earth Engine——Landsat 1985-2020年生态遥感指数RESI计算”一文并引用您分享的代码,在运行过程中提示“RSEI2004: Layer error: Image.rename: The number of names (1) must match the number of bands (5)”,想跟您请教一下。因为是刚接触,好多代码运行中的问题看不懂 ,还请您赐教!同时也想跟您请教一下有没有小白自学合适的课程推荐,这里大家去看我的专栏此星光明_GEE数据集专栏,GEE教程训练,Google Earth Engine-CSDN博客,《GEE教程训练》\《Google earth engine》和《gee 案例分析》以及《gee python》大家可以根据自己的情况去选择
后续会进行相关教程视频的上传,以及相应新书的出版,所以这里希望大家持续关注。
RSEI2004: Layer error: Image.rename: The number of names (1) must match the number of bands (5)”,
以上这个问题主要原因是来源于我之前写的这篇博客,关于计算逐年RSEI的代码,原始的博客地址:
Google Earth Engine——Landsat 1985-2020年生态遥感指数RESI计算_此星光明的博客-CSDN博客
RSEI生态遥感指数是一种用于评估生态质量的遥感指标。该指数主要从遥感图像中提取出土地利用类型、植被覆盖度、土地形态、地表覆盖和土地利用方式等信息,通过对这些信息进行综合分析和计算,得出反映生态环境质量的指数值,以评估某一区域的生态环境质量。该指数可用于生态环境监测、生态保护和生态修复等领域。
原始代码代码:
// var roi = // /* color: #d63000 */ // /* displayProperties: [ // { // "type": "rectangle" // } // ] */ // ee.Geometry.Polygon( // [[[105.55104505173978, 34.27794089351641], // [105.55104505173978, 33.54856067523731], // [106.51784192673978, 33.54856067523731], // [106.51784192673978, 34.27794089351641]]], null, false); function Interpol(imgcoll, timeBandName) { // length var colsize = imgcoll.size(); var bandNames = imgcoll.first().bandNames(); // make sure first and last NonNull var firstImg = imgcoll.reduce(ee.Reducer.firstNonNull()).rename(bandNames); // yuan var lastImg = imgcoll.reduce(ee.Reducer.lastNonNull()).rename(bandNames); // jin var imgList = imgcoll.toList(colsize); // reset imglist var B = imgList.slice(1,-1); var A = ee.Image(imgList.get(0)); var C = ee.Image(imgList.get(-1)); firstImg = firstImg.set({'system:time_start':A.get('system:time_start')}); // .set({'user:index':A.get('user:index')}); lastImg = lastImg.set({'system:time_start':C.get('system:time_start')}); // .set({'user:index':C.get('user:index')}); var D = B.insert(0, firstImg).add(lastImg); var D_imgcol = ee.ImageCollection(D); // mask imgcol var imgcollmask = imgcoll.map(function(img) { img = img.updateMask(img.select(0).mask()); return img; }); var D_mask = imgcollmask.toList(colsize); var maskBandNames = imgcollmask.first().bandNames(); // interpol var imgcoll_List_Interpol = ee.List.sequence(1, colsize.subtract(2)).map(function(i) { i = ee.Number(i); var pre= ee.ImageCollection(D_mask.slice(0,i.add(1))).reduce(ee.Reducer.lastNonNull()); var cur= D.get(i); var next=ee.ImageCollection(D_mask.slice(i,-1)).reduce(ee.Reducer.firstNonNull()); pre=ee.Image(pre).rename(