出现的问题:
我是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).r