基于 GEE 的 Landsat 8 数据构建遥感生态指数(RSEI)并进行生态质量评估

目录

一、前言

[二、基础参数定义(第 1-2 步)](#二、基础参数定义(第 1-2 步))

(一)研究区定义

(二)时间范围与可视化参数

[三、Landsat 8 影像加载与预处理(第 3 步)](#三、Landsat 8 影像加载与预处理(第 3 步))

(一)核心目标

(二)云掩膜函数(去云处理)

(三)影像集加载与预处理链

(四)辐射定标(反射率与温度缩放)

[四、生态核心指数计算(第 4 步)](#四、生态核心指数计算(第 4 步))

(一)归一化植被指数(NDVI)

[(二)NDVI 极值统计(用于植被覆盖度计算)](#(二)NDVI 极值统计(用于植被覆盖度计算))

(三)植被覆盖度(FV)

(四)地表比辐射率(EM)

(五)地表温度(LST)

(六)湿度指数(Wetness,缨帽变换湿度分量)

(七)归一化建筑裸土指数(NDBSI,干燥度指数)

[五、指数标准化(第 5 步)](#五、指数标准化(第 5 步))

(一)标准化的目的

(二)标准化函数

(三)标准化指数整合

[六、主成分分析(PCA,第 6 步)](#六、主成分分析(PCA,第 6 步))

[(一)PCA 的核心作用](#(一)PCA 的核心作用)

[(二)PCA 实现步骤](#(二)PCA 实现步骤)

[1. 生成主成分波段名称](#1. 生成主成分波段名称)

[2. 数组转换与协方差矩阵计算](#2. 数组转换与协方差矩阵计算)

[3. 特征值与特征向量分解](#3. 特征值与特征向量分解)

[4. PCA 投影与第一主成分提取](#4. PCA 投影与第一主成分提取)

[七、RSEI 构建与归一化(第 7 步)](#七、RSEI 构建与归一化(第 7 步))

[(一)RSEI 的定义](#(一)RSEI 的定义)

(二)归一化计算

[八、RSEI 五分类(LSES 等级划分,第 8 步)](#八、RSEI 五分类(LSES 等级划分,第 8 步))

(一)分类目的

(二)分类实现

[九、统计分析与图例添加(第 9-10 步)](#九、统计分析与图例添加(第 9-10 步))

[(一)RSEI 直方图统计](#(一)RSEI 直方图统计)

[(二)LSES 等级图例添加](#(二)LSES 等级图例添加)

十、核心技术亮点与关键说明

十一、应用场景与扩展方向

十二、运行结果


若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

本代码基于 Google Earth Engine(GEE)平台,以 Landsat 8 卫星影像为数据源,通过一系列数据预处理、指数计算、标准化、主成分分析(PCA)等步骤,最终构建遥感生态指数(RSEI),并将其划分为 5 个土地生态状况等级(LSES),同时实现结果可视化与统计分析。核心应用场景包括区域生态环境质量评价、生态变化监测等。

一、前言

代码按 "数据准备→指数计算→数据标准化→PCA 分析→RSEI 构建→等级划分→可视化与统计" 的逻辑分步执行,各步骤环环相扣,前序结果为后序输入,具体流程如下:

  • 定义研究区与基础参数(时间范围、可视化规则)
  • 加载 Landsat 8 影像并完成预处理(去云、辐射定标)
  • 计算生态评价核心指数(植被、温度、湿度、干燥度相关)
  • 指数标准化(消除量纲影响)
  • 主成分分析(提取核心生态信息)
  • 构建 RSEI 并归一化
  • RSEI 五分类与可视化
  • 统计分析(直方图)与图例添加
等级 RSEI 范围 生态状况
1 0.0-0.2 极低
2 0.2-0.4 较低
3 0.4-0.6 中等
4 0.6-0.8 较高
5 0.8-1.0 极高
[按照 RSEI 阈值进行生态分级 LSES(五等级)]

二、基础参数定义(第 1-2 步)

(一)研究区定义

javascript 复制代码
var aoi = geometry; // 研究区边界(需提前通过绘制或加载矢量文件定义)
Map.centerObject(aoi, 10); // GEE地图居中显示研究区,缩放级别10(0-20,数值越大越清晰)
  • **核心作用:**确定分析的空间范围,所有后续数据处理与计算均限定在该区域内。
  • 关键说明: geometry是 GEE 内置的空间几何对象,需用户提前通过 GEE 地图界面绘制多边形,或加载 Shapefile 等矢量数据获取。

(二)时间范围与可视化参数

javascript 复制代码
var year = 2015;
var startDate = year + '-08-01'; // 分析起始时间:2015年8月1日
var endDate = year + '-11-30';   // 分析结束时间:2015年11月30日
var visParams = {min: -1, max: 1, palette: ['red', 'yellow', 'green']};
  • **时间范围设计逻辑:**选择 8-11 月(北半球夏末至秋初),该时段植被覆盖稳定、云量相对较少,能减少季节因素对生态指数的干扰,适合生态质量评价。
  • 可视化参数: minmax限定数据显示范围,palette定义颜色映射规则(红色→黄色→绿色,通常用于表示 "差→中→好" 的梯度)。

三、Landsat 8 影像加载与预处理(第 3 步)

(一)核心目标

获取研究区范围内、指定时间内的高质量 Landsat 8 影像,消除云及云阴影干扰,并完成反射率与地表温度的辐射定标(将原始 DN 值转换为具有物理意义的地表参数)。

(二)云掩膜函数(去云处理)

javascript 复制代码
function maskL8sr(image) {
  var cloudShadowBitMask = (1 << 3); // 云阴影对应的位掩码(基于Landsat 8 QA_PIXEL波段编码规则)
  var cloudsBitMask = (1 << 5);      // 云对应的位掩码
  var qa = image.select('QA_PIXEL'); // 选择质量控制波段(QA_PIXEL记录影像质量信息)
  var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
    .and(qa.bitwiseAnd(cloudsBitMask).eq(0));
  return image.updateMask(mask); // 应用掩膜,保留非云、非云阴影像素
}
  • 技术原理: Landsat 8 的 QA_PIXEL 波段为 16 位整数,每一位(bit)代表特定的质量信息(如是否为云、云阴影、水体等)。通过 "按位与(bitwiseAnd)" 运算筛选出非云、非云阴影的像素,再通过updateMask函数屏蔽无效像素。
  • 关键说明: 1 << 3表示将二进制数1左移 3 位(结果为1000),对应 QA_PIXEL 波段中云阴影的标志位;eq(0)表示筛选该位为 0 的像素(即非云阴影 / 云像素)。

(三)影像集加载与预处理链

javascript 复制代码
var landsat8Image = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
  .filterBounds(aoi)                // 筛选研究区范围内的影像
  .filterDate(startDate, endDate)   // 筛选指定时间范围内的影像
  .filter(ee.Filter.lt('CLOUD_COVER', 1)) // 筛选云量<1%的影像(进一步保证数据质量)
  .map(maskL8sr)                    // 应用云掩膜函数
  .median()                         // 中值合成(将多景影像融合为单景,减少噪声)
  .clip(aoi);                       // 裁剪影像至研究区范围
  • 数据源说明: LANDSAT/LC08/C02/T1_L2是 Landsat 8 的 Level-2 级产品(经过大气校正),包含反射率(SR_B1-SR_B7)和地表温度(ST_B10)等波段,可直接用于生态指数计算。
  • **中值合成优势:**相比均值合成,更能抑制极端值(如残留云像素、传感器噪声)的影响,保留影像的真实信息。

(四)辐射定标(反射率与温度缩放)

javascript 复制代码
var scaledLandsat8 = landsat8Image
  .select(['SR_B.*'])               // 选择所有反射率波段(SR_B1-SR_B7)
  .multiply(0.0000275)              // 反射率缩放系数(Landsat 8官方提供)
  .add(-0.2)                        // 反射率偏移量(官方系数,用于还原真实反射率)
  .addBands(                        // 添加缩放后的地表温度波段
    landsat8Image.select('ST_B10')
      .multiply(0.00341802)         // 温度缩放系数(官方提供)
      .add(149.0)                   // 温度偏移量(官方系数)
  );
  • **核心目的:**Level-2 级影像的原始值为量化值(DN),需通过官方提供的系数转换为真实的地表反射率(0-1 范围)和亮温(单位:K)。
  • **关键依据:**缩放系数和偏移量来自 USGS(美国地质调查局)发布的 Landsat 8 数据使用手册,确保数据的准确性。

四、生态核心指数计算(第 4 步)

这一步是构建 RSEI 的核心,共计算 7 个指数 / 参数,涵盖植被状况、地表温度、湿度条件、地表覆盖类型四大生态评价维度,各指数的计算逻辑与生态意义如下:

(一)归一化植被指数(NDVI)

javascript 复制代码
var ndvi = scaledLandsat8.normalizedDifference(['SR_B5', 'SR_B4']).rename('NDVI');
  • 计算原理: 归一化差异指数,公式为(NIR - RED)/(NIR + RED),其中SR_B5是近红外波段(植被强反射),SR_B4是红波段(植被强吸收)。
  • **生态意义:**NDVI 是反映植被覆盖度和生长状况的核心指标,取值范围 [-1,1],值越大表示植被覆盖越好、生态状况越优(负值通常为水体、裸地等)。

(二)NDVI 极值统计(用于植被覆盖度计算)

javascript 复制代码
var ndviStats = ndvi.reduceRegion({
  reducer: ee.Reducer.minMax(),      // 统计研究区内NDVI的最小值和最大值
  geometry: aoi,
  scale: 30,                         // 空间分辨率(Landsat 8影像原生分辨率)
  maxPixels: 1e13                    // 最大计算像素数(避免因研究区过大导致溢出)
});
var ndviMin = ee.Number(ndviStats.get('NDVI_min')); // 提取NDVI最小值
var ndviMax = ee.Number(ndviStats.get('NDVI_max')); // 提取NDVI最大值

**核心作用:**为后续计算植被覆盖度(FV)提供基础参数,NDVI 极值反映研究区内植被覆盖的极端情况(裸地 / 水体的 NDVI 最小值、茂密植被的 NDVI 最大值)。

(三)植被覆盖度(FV)

javascript 复制代码
var fv = ndvi.subtract(ndviMin)
  .divide(ndviMax.subtract(ndviMin))
  .pow(2)                            // 二次函数模型(相比线性模型,更贴合植被覆盖的实际情况)
  .rename('FV');
  • 计算原理: 基于 NDVI 的植被覆盖度估算模型,公式为FV = ((NDVI - NDVI_min)/(NDVI_max - NDVI_min))²,取值范围 [0,1]。
  • **生态意义:**表示某一像素中植被所占的比例,值越大植被覆盖越密集,是反映地表生态状况的重要参数。

(四)地表比辐射率(EM)

javascript 复制代码
var em = fv.multiply(0.004).add(0.986).rename('EM');
  • **计算原理:**基于植被覆盖度的经验公式(适用于中低纬度地区),EM 是地表向外辐射能量的效率,取值范围接近 [0.986, 0.990]。
  • **核心作用:**是后续反演地表温度(LST)的关键参数,不同地表类型(植被、裸地、建筑)的比辐射率存在差异,需通过植被覆盖度校正。

(五)地表温度(LST)

javascript 复制代码
var thermal = scaledLandsat8.select('ST_B10').rename('thermal');
var lst = thermal.expression(
  '(TB / (1 + (0.00115 * (TB / 1.438)) * log(em))) - 273.15',
  {
    'TB': thermal.select('thermal'), // 亮温(从影像中获取的原始温度值,单位K)
    'em': em.max(0.001)              // 比辐射率(避免0值导致计算错误)
  }
).rename('LST');
  • **反演原理:**基于普朗克定律的地表温度反演公式,通过亮温(TB)和比辐射率(EM)校正,将亮温转换为真实的地表温度,并减去 273.15 转换为摄氏度(℃)。
  • **生态意义:**地表温度是反映区域热环境的核心指标,与城市热岛效应、生态舒适度密切相关,温度越低通常生态状况越优。

(六)湿度指数(Wetness,缨帽变换湿度分量)

javascript 复制代码
var wetness = scaledLandsat8.expression(
  '0.1511*B2 + 0.1973*B3 + 0.3283*B4 + 0.3407*B5 - 0.7117*B6 - 0.4559*B7',
  {
    'B2': scaledLandsat8.select('SR_B2'), // 蓝波段
    'B3': scaledLandsat8.select('SR_B3'), // 绿波段
    'B4': scaledLandsat8.select('SR_B4'), // 红波段
    'B5': scaledLandsat8.select('SR_B5'), // 近红外波段
    'B6': scaledLandsat8.select('SR_B6'), // 短波红外1
    'B7': scaledLandsat8.select('SR_B7')  // 短波红外2
  }
).rename('Wetness');
  • **计算原理:**缨帽变换(Tasseled Cap Transformation)的湿度分量,通过各波段的线性组合,提取地表的湿度信息,系数来自学者针对 Landsat 8 的验证结果。
  • **生态意义:**湿度指数值越大,表明地表含水量越高(如湿地、植被覆盖好的区域),生态状况越优;值越小则地表越干燥(如裸地、建筑用地)。

(七)归一化建筑裸土指数(NDBSI,干燥度指数)

javascript 复制代码
var ndbsi = scaledLandsat8.expression(
  '((RED + SWIR1) - (NIR + BLUE)) / ((RED + SWIR1) + (NIR + BLUE))',
  {
    'RED': scaledLandsat8.select('SR_B4'),  // 红波段
    'SWIR1': scaledLandsat8.select('SR_B6'),// 短波红外1
    'NIR': scaledLandsat8.select('SR_B5'),  // 近红外波段
    'BLUE': scaledLandsat8.select('SR_B2')  // 蓝波段
  }
).rename('NDBSI');
  • **计算原理:**类似 NDVI 的归一化差异指数,通过红波段、短波红外 1 波段(建筑、裸土强反射)与近红外、蓝波段(建筑、裸土弱反射)的组合,突出建筑和裸土信息。
  • **生态意义:**NDBSI 值越大,表明建筑或裸土覆盖比例越高,地表越干燥,生态状况越差;值越小则植被或水体覆盖比例越高,生态状况越优。

五、指数标准化(第 5 步)

(一)标准化的目的

不同生态指数的量纲和取值范围差异较大(如 NDVI:[-1,1],LST:[0,40]℃,Wetness:[-0.5,0.5]),直接进行 PCA 分析会受量纲影响,导致结果偏向取值范围大的指数。通过 Z-Score 标准化将所有指数转换为均值为 0、标准差为 1 的标准化数据,消除量纲干扰,使各指数在 PCA 中权重平等。

(二)标准化函数

javascript 复制代码
function standardize(band, name) {
  var stats = band.reduceRegion({
    reducer: ee.Reducer.mean().combine({ // 同时计算波段的均值和标准差
      reducer2: ee.Reducer.stdDev(),
      sharedInputs: true
    }),
    geometry: aoi,
    scale: 30,
    maxPixels: 1e13
  });
  var mean = ee.Number(stats.get(name + '_mean'));   // 提取均值
  var std = ee.Number(stats.get(name + '_stdDev')); // 提取标准差
  return band.subtract(mean).divide(std).rename(name + '_std'); // Z-Score标准化:(x-mean)/std
}

核心逻辑: Z-Score 标准化公式为标准化值 = (原始值 - 该指数均值) / 该指数标准差,使标准化后的数据集中在 [-3,3] 范围内,且均值为 0、标准差为 1。

(三)标准化指数整合

javascript 复制代码
var standardizedComponents = ndvi.rename('NDVI')
  .addBands(standardize(wetness, 'Wetness')) // 湿度指数标准化
  .addBands(standardize(lst, 'LST'))         // 地表温度标准化
  .addBands(standardize(ndbsi, 'NDBSI'))     // 干燥度指数标准化
  .clip(aoi);

结果说明: 整合后的standardizedComponents影像包含 4 个波段(NDVI、Wetness_std、LST_std、NDBSI_std),其中后 3 个为标准化后的指数,NDVI 因原始取值范围已相对统一,未进行额外标准化(也可根据需求统一标准化)。

六、主成分分析(PCA,第 6 步)

(一)PCA 的核心作用

PCA 是一种降维算法,通过线性变换将多个相关的变量(此处为 4 个生态指数)转换为少数几个不相关的主成分(PC),其中第一主成分(PC1)包含原始变量的大部分信息(通常 > 60%)。在 RSEI 构建中,PC1 综合了植被、温度、湿度、干燥度四大生态维度的核心信息,可作为生态质量评价的综合指标。

(二)PCA 实现步骤

1. 生成主成分波段名称

javascript 复制代码
function getNewBandNames(prefix) {
  return ee.List.sequence(1, 4).map(function(i) {
    return ee.String(prefix).cat(ee.Number(i).int());
  });
}

**功能:**生成 4 个主成分的波段名称(pc1、pc2、pc3、pc4),用于后续 PCA 结果的波段命名。

2. 数组转换与协方差矩阵计算

javascript 复制代码
var arrayImage = standardizedComponents.toArray(); // 将影像转换为数组格式(用于矩阵运算)
var covariance = arrayImage.reduceRegion({
  reducer: ee.Reducer.centeredCovariance(), // 计算中心化协方差矩阵(PCA的核心输入)
  geometry: aoi,
  scale: 30,
  maxPixels: 1e9
});
var covarianceArray = ee.Array(covariance.get('array')); // 提取协方差矩阵数组

**协方差矩阵意义:**协方差矩阵中的元素表示两个指数之间的相关性,如 NDVI 与 LST 的协方差为负(植被覆盖越好,温度越低),通过协方差矩阵可反映各指数的相关结构。

3. 特征值与特征向量分解

javascript 复制代码
var eigens = covarianceArray.eigen();                   // 对协方差矩阵进行特征分解
var eigenValues = eigens.slice(1, 0, 1);  // 提取特征值(第一列)
var eigenVectors = eigens.slice(1, 1);   // 提取特征向量(其余列)
print('特征值(Eigenvalues):', eigenValues); // 在GEE控制台打印特征值
  • **特征值意义:**特征值的大小表示对应主成分的方差贡献度,特征值越大,该主成分包含的原始信息越多。通常 PC1 的特征值最大,贡献度最高。
  • **特征向量意义:**特征向量决定了主成分的构成的权重,如 PC1 的特征向量中,NDVI 和 Wetness 的权重为正(正向贡献生态质量),LST 和 NDBSI 的权重为负(负向贡献生态质量),与生态评价逻辑一致。

4. PCA 投影与第一主成分提取

javascript 复制代码
var principalComponents = ee.Image(eigenVectors)
  .matrixMultiply(arrayImage.toArray(1)) // 矩阵乘法:将标准化指数投影到特征向量空间
  .arrayProject([0])                     // 投影到第一维(主成分维度)
  .arrayFlatten([getNewBandNames('pc')]);// 将数组展平为影像波段(pc1-pc4)
var principalComponents1 = principalComponents.select('pc1').clamp(-4, 4); // 提取PC1,限制取值范围[-4,4]

核心逻辑: 通过矩阵乘法将标准化后的 4 个指数转换为 4 个主成分,其中 PC1 包含原始数据的最大方差,是生态质量的综合体现。clamp(-4,4)用于剔除极端异常值,保证后续计算的稳定性。

七、RSEI 构建与归一化(第 7 步)

(一)RSEI 的定义

遥感生态指数(RSEI)以 PCA 的第一主成分(PC1)为基础,通过归一化将其转换为 [0,1] 范围的指数,用于量化生态环境质量。RSEI 值越接近 1,生态质量越好;越接近 0,生态质量越差。

(二)归一化计算

javascript 复制代码
var pc1Stats = principalComponents1.reduceRegion({
  reducer: ee.Reducer.minMax(),
  geometry: aoi,
  scale: 30,
  maxPixels: 1e9
});
var pc1Min = ee.Number(pc1Stats.get('pc1_min')); // 提取PC1的最小值
var pc1Max = ee.Number(pc1Stats.get('pc1_max')); // 提取PC1的最大值
var RSEI = principalComponents1
  .subtract(pc1Min)
  .divide(pc1Max.subtract(pc1Min))
  .rename('RSEI'); // 归一化公式:(PC1 - PC1_min)/(PC1_max - PC1_min),转换为[0,1]范围
Map.addLayer(RSEI, {palette: ['red', 'yellow', 'green']}, 'RSEI'); // 在GEE地图中添加RSEI图层

**归一化意义:**将 PC1 的取值范围统一到 [0,1],便于直观理解和比较不同区域的生态质量,同时符合指数评价的常规标准。

八、RSEI 五分类(LSES 等级划分,第 8 步)

(一)分类目的

将连续的 RSEI 值划分为离散的等级,便于快速识别生态质量的空间差异(如 "极低""中等""极高" 区域),为生态保护和规划提供更直观的决策依据。

(二)分类实现

javascript 复制代码
var thresholds = [0.2, 0.4, 0.6, 0.8]; // 分类阈值(基于生态评价常规标准设定)
var LSES = RSEI.expression(
  '(b(0) <= thresholds[0]) ? 1 : ' + // RSEI≤0.2 → 1级(极低)
  '(b(0) <= thresholds[1]) ? 2 : ' + // 0.2<RSEI≤0.4 → 2级(较低)
  '(b(0) <= thresholds[2]) ? 3 : ' + // 0.4<RSEI≤0.6 → 3级(中等)
  '(b(0) <= thresholds[3]) ? 4 : 5', // 0.6<RSEI≤0.8 →4级(较高);RSEI>0.8→5级(极高)
  {thresholds: thresholds}
).clip(aoi).rename('LSES_Class');
// 添加分类图层到地图
Map.addLayer(LSES, {
  min: 1,
  max: 5,
  palette: ['#B2182B', '#EF6548', '#FEE08B', '#66BD63', '#006837']
}, 'LSES 五等级分类');
  • **阈值设定逻辑:**采用等间隔阈值(0.2 为间隔),是生态指数分类的常用方法,兼顾科学性和直观性;也可根据研究区实际情况(如生态背景、评价目标)调整阈值(如采用自然断点法)。
  • **颜色设计:**采用 "红→橙→黄→绿→深绿" 的渐变,符合人类对 "差→好" 的视觉认知习惯,其中:
    • 1 级(极低):#B2182B(深红色)
    • 2 级(较低):#EF6548(橙红色)
    • 3 级(中等):#FEE08B(黄色)
    • 4 级(较高):#66BD63(浅绿色)
    • 5 级(极高):#006837(深绿色)

九、统计分析与图例添加(第 9-10 步)

(一)RSEI 直方图统计

javascript 复制代码
var RSEIHistogram = RSEI.reduceRegion({
  reducer: ee.Reducer.histogram(255), // 统计255个区间的直方图
  geometry: aoi,
  scale: 30,
  maxPixels: 1e9
});
var histogram = ee.Dictionary(RSEIHistogram.get('RSEI'));
var bucketMeans = ee.List(histogram.get('bucketMeans')); // 区间均值(RSEI值)
var histogramValues = ee.List(histogram.get('histogram')); // 区间频数(像素个数)
// 绘制直方图并在控制台显示
var chart = ui.Chart.array.values({
  array: ee.Array(histogramValues),
  axis: 0,
  xLabels: bucketMeans
})
.setChartType('ColumnChart')
.setOptions({
  title: 'RSEI 直方图',
  hAxis: {title: 'RSEI'},
  vAxis: {title: '频数'},
  legend: {position: 'none'}
});
print(chart);

**核心作用:**通过直方图可直观了解研究区 RSEI 的分布特征,如:

  • 若频数峰值集中在高 RSEI 区间(0.6-1.0),说明研究区整体生态质量较好;
  • 若峰值集中在低 RSEI 区间(0-0.4),说明生态质量较差,需重点关注。

(二)LSES 等级图例添加

javascript 复制代码
var legend = ui.Panel({style: {position: 'bottom-left', padding: '8px 15px'}});
// 图例标题
legend.add(ui.Label({value: 'LSES 等级图例', style: {fontWeight: 'bold', fontSize: '14px'}}));
// 图例分类与颜色对应
var classNames = ['极低', '较低', '中等', '较高', '极高'];
var classColors = ['#B2182B', '#EF6548', '#FEE08B', '#66BD63', '#006837'];
// 循环添加图例项(颜色块+分类名称)
for (var i = 0; i < classNames.length; i++) {
  legend.add(ui.Panel({
    widgets: [
      ui.Label({style: {backgroundColor: classColors[i], padding: '8px', margin: '0 8px 4px 0'}}),
      ui.Label({value: classNames[i]})
    ],
    layout: ui.Panel.Layout.Flow('horizontal')
  }));
}
Map.add(legend); // 将图例添加到GEE地图左下角

**核心作用:**为地图中的 LSES 分类图层添加图例,便于用户快速识别不同颜色对应的生态等级,提升结果的可读性。

十、核心技术亮点与关键说明

技术亮点:

  • **多维度生态指数融合:**综合植被(NDVI、FV)、热环境(LST)、湿度(Wetness)、地表覆盖(NDBSI)四大维度,全面反映生态质量;
  • **数据质量控制严格:**通过 "云量筛选 + 云掩膜" 双重处理,保证影像数据质量,减少噪声干扰;
  • **标准化 + PCA 降维:**消除量纲影响,提取核心生态信息,避免信息冗余;
  • **结果可视化丰富:**包含 RSEI 连续值图层、LSES 分类图层、直方图统计、图例,便于多视角分析。

关键注意事项:

  • 研究区定义: geometry需提前定义,否则代码会报错;
  • 影像可用性: 若研究区在指定时间范围内无云量 < 1% 的影像,会导致landsat8Image为空,需调整时间范围或云量阈值;
  • **阈值调整:**LSES 分类阈值(0.2、0.4、0.6、0.8)为通用标准,可根据研究区实际生态状况(如干旱区、湿润区)调整;
  • 计算资源限制: maxPixels参数需根据研究区大小调整,避免因像素过多导致 GEE 计算超时。

十一、应用场景与扩展方向

主要应用场景:

  • 区域生态环境质量评价(如城市、流域、自然保护区);
  • 生态变化监测(如对比不同年份的 RSEI,分析生态质量改善或退化趋势);
  • 生态保护红线划定、生态修复效果评估等。

扩展方向:

  • **时间序列分析:**增加多年份数据,构建 RSEI 时间序列,分析生态变化趋势及驱动因素;
  • **优化指数体系:**根据研究区特点添加特色指数(如水体指数、土壤侵蚀指数);
  • **空间格局分析:**结合景观生态学指标(如斑块密度、连通性),分析生态质量的空间格局特征;
  • **驱动因素探究:**结合 GDP、人口密度、土地利用类型等数据,分析人类活动对生态质量的影响。

十二、运行结果

研究区遥感生态指数(RSEI)反演结果可视化
生态分级 LSES(五等级)结果可视化
控制台输出的相关信息
遥感生态指数(RSEI)直方图

若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

相关推荐
骚团长5 小时前
阿里云99元一年的云服务器部署Centos7.9通过MobaXterm安装RustDesk(图文并茂)
阿里云·云计算
屋外雨大,惊蛰出没6 小时前
如何在spring boot项目中利用腾讯云上传存储文件
云计算·腾讯云
风为你而吹7 小时前
【传统自建idc和云计算的比较】
云计算
风为你而吹7 小时前
【超融合架构和传统云计算架构】
架构·云计算
风为你而吹8 小时前
【云计算和云原生】
云原生·云计算
是开心的栗子呀16 小时前
阿里云天池:预测二手车交易价格的机器学习项目-高效实现MAE低于500分
人工智能·机器学习·阿里云·ai·云计算
徐徐图之!1 天前
二、开始我们的运维之路&运维学习路线
linux·运维·云计算
Ydwlcloud1 天前
2025年腾讯云支付宝充值教程:步骤详解与支付渠道新思路
服务器·人工智能·云计算·腾讯云
@HNUSTer1 天前
基于 GEE 批量下载 NASA GDDP-CMIP6 气候数据:历史 + 未来情景(SSP245、SSP585)年度产品自动化生成与导出
云计算·数据集·遥感大数据·gee·气候·云平台·nasa