基于 GEE 的生态环境质量评价:遥感生态指数(RSEI)计算与空间分布可视化

目录

一、全局配置与基础设置

(一)核心参数定义

(二)波段映射配置

二、数据预处理函数

(一)云掩膜函数(maskclouds)

(二)比例因子应用(applyScaleFactors)

三、生态指标计算

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

(二)湿度分量(WET)

(三)归一化建筑裸土指数(NDBSI)

(四)地表温度(LST)

四、数据标准化与主成分分析

(一)影像归一化(img_norm)

(二)主成分分析(getPAC)

五、水体掩膜与影像合成

(一)水体掩膜

(二)影像合成

六、结果生成与可视化

[(一)最终 RSEI 计算](#(一)最终 RSEI 计算)

(二)结果可视化

[1. 直方图](#1. 直方图)

[2. 地图显示](#2. 地图显示)

七、核心逻辑总结

八、运行结果


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

本代码基于 Google Earth Engine(GEE)平台,利用 Landsat 8 卫星影像数据,通过遥感生态指数(RSEI) 实现对特定区域 2020 年生态环境质量的综合评价。核心逻辑是:筛选关键生态指标(植被、湿度、温度、建筑裸土),经数据预处理、主成分分析(PCA)提取核心评价维度,最终生成 0-1 区间的 RSEI 指数(值越高,生态质量越好)。

一、全局配置与基础设置

(一)核心参数定义

javascript 复制代码
var scale = 1000; // 分析尺度(单位:米)
var year = 2020; // 目标分析年份
var roi = table; // 研究区域(需提前导入矢量边界数据)
Map.centerObject(roi, 8); // 地图定位到研究区,缩放级别8
  • scale:空间分辨率,1000 米意味着影像将重采样到 1000 米网格,平衡计算效率与精度。
  • roi :研究区域边界,需在 GEE 中提前上传矢量文件(如 Shapefile)并命名为table
  • Map.centerObject:GEE 地图交互函数,自动定位到研究区并设置初始缩放级别。

(二)波段映射配置

javascript 复制代码
var srcBands = ["SR_B2", "SR_B3", "SR_B4", "SR_B5", "SR_B6", "SR_B7", "ST_B10"];
var toBands = ["Blue", "Green", "Red", "NIR", "SWIR1", "SWIR2", "LST"];

映射 Landsat 8 卫星原始波段到通用名称:

  • 光学波段:蓝(SR_B2)、绿(SR_B3)、红(SR_B4)、近红外(SR_B5)、短波红外 1(SR_B6)、短波红外 2(SR_B7)
  • 热红外波段:地表温度(ST_B10),后续将转换为摄氏度。

二、数据预处理函数

(一)云掩膜函数(maskclouds)

功能:去除影像中的云及云阴影,保证数据有效性。

javascript 复制代码
var maskclouds = function(img) {
  var cloudShadowBitMask = 1 << 4; // 云阴影位掩码(第4位)
  var cloudsBitMask = 1 << 3; // 云位掩码(第3位)
  var qa = img.select("QA_PIXEL"); // 质量评估波段(Landsat 8的QA_PIXEL波段记录像素质量)
  var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)
               .and(qa.bitwiseAnd(cloudsBitMask).eq(0)); // 无云且无云阴影的像素保留
  return img.addBands(img.updateMask(mask), null, true);
};
  • 原理:Landsat 8 的 QA_PIXEL 波段为 16 位整数,每一位代表特定质量信息(如是否为云、云阴影),通过位运算筛选出 "干净" 像素。
  • 效果:掩膜后影像仅保留无云、无云阴影的有效区域。

(二)比例因子应用(applyScaleFactors)

功能:将卫星原始 DN 值(数字量化值)转换为物理意义明确的地表参数。

javascript 复制代码
var applyScaleFactors = function(image) {
  // 光学波段:转换为地表反射率(范围0-1)
  var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  // 热红外波段:转换为地表温度(摄氏度)
  var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0).subtract(273.15);
  return image.addBands(opticalBands, null, true).addBands(thermalBands, null, true);
};
  • 光学波段:Landsat 8 的 SR(地表反射率)产品需通过官方比例因子(0.0000275)和偏移量(-0.2)转换为真实反射率。
  • 热红外波段:先转换为辐射亮度,再转换为开尔文温度,最后减去 273.15 得到摄氏度。

三、生态指标计算

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

功能:反映植被覆盖度和生长状况(值越高,植被越茂盛)。

javascript 复制代码
var NDVI = function(image) {
  return image.addBands(
    image.normalizedDifference(["NIR", "Red"]).rename("NDVI")
  );
};
  • 公式NDVI = (NIR - Red) / (NIR + Red)
  • 逻辑:近红外波段(NIR)对植被敏感(植被反射强),红光波段(Red)对植被吸收强,两者差值可突出植被信息。
  • 范围:-1~1,负值多为水体,0 左右为裸土 / 建筑,正值为植被(越接近 1 植被越好)。

(二)湿度分量(WET)

功能:反映地表湿度状况(值越高,湿度越大,生态条件越好)。

javascript 复制代码
var WET = function(image) {
  var WET = image.expression(
    'Blue*0.1511 + Green*0.1973 + Red*0.3283 + NIR*0.3407 + SWIR1*(-0.7117) + SWIR2*(-0.4559)',
    {
      'Blue': image.select('Blue'), 'Green': image.select('Green'),
      'Red': image.select('Red'), 'NIR': image.select('NIR'),
      'SWIR1': image.select('SWIR1'), 'SWIR2': image.select('SWIR2')
    }
  ).rename('WET');
  return image.addBands(WET);
};
  • 原理:基于缨帽变换(Tasseled Cap Transformation),通过多波段线性组合提取湿度信息。
  • 系数意义:蓝、绿、红、近红外波段系数为正(这些波段对水分敏感),短波红外波段系数为负(水分对短波红外吸收强)。

(三)归一化建筑裸土指数(NDBSI)

功能:反映建筑用地和裸土的占比(值越高,建筑 / 裸土越多,生态质量越差)。

javascript 复制代码
var NDBSI = function(image) {
  // 裸土指数(SI)
  var SI = image.expression(
    '((SWIR1 + Red) - (NIR + Blue)) / ((SWIR1 + Red) + (NIR + Blue))', {...});
  // 建筑指数(IBI)
  var IBI = image.expression(
    '(2*SWIR1/(SWIR1+NIR) - (NIR/(NIR+Red) + Green/(Green+SWIR1))) / ' +
    '(2*SWIR1/(SWIR1+NIR) + (NIR/(NIR+Red) + Green/(Green+SWIR1)))', {...});
  // NDBSI = (SI + IBI)/2
  var NDBSI = SI.add(IBI).divide(2).rename('NDBSI');
  return image.addBands(NDBSI);
};
  • 裸土指数(SI):通过短波红外 + 红光与近红外 + 蓝光的差值,突出裸土信息。
  • 建筑指数(IBI):结合短波红外与近红外、红光、绿光的比值,突出建筑用地信息。
  • 逻辑:SI 和 IBI 均为高值代表生态质量差,两者平均后得到综合指标 NDBSI。

(四)地表温度(LST)

  • 来源 :直接通过applyScaleFactors函数从 Landsat 8 的 ST_B10 波段转换得到,无需额外编写计算函数。
  • 意义:温度越高,热环境越差,生态质量越低(与 RSEI 呈负相关)。

四、数据标准化与主成分分析

(一)影像归一化(img_norm)

功能:将所有指标值统一到 0-1 区间,消除量纲差异(如 NDVI 为 - 1~1,LST 为 20~40℃),为 PCA 做准备。

javascript 复制代码
var img_norm = function(image) {
  var minMax = image.reduceRegion({
    reducer: ee.Reducer.minMax(), // 计算每个波段的最小值和最大值
    geometry: roi,
    scale: scale,
    maxPixels: 10e13 // 避免像素数量超限
  });
  // 对每个波段执行归一化:(原值 - 最小值) / (最大值 - 最小值)
  var image_norm = ee.ImageCollection.fromImages(
    image.bandNames().map(function(name) {
      var band = image.select(name);
      var min = ee.Number(minMax.get(name.cat('_min')));
      var max = ee.Number(minMax.get(name.cat('_max')));
      return band.subtract(min).divide(max.subtract(min));
    })
  ).toBands().rename(image.bandNames());
  return image_norm;
};

关键:基于研究区(roi)的全局最小值和最大值进行归一化,确保所有指标在同一尺度下可比。

(二)主成分分析(getPAC)

功能:将 4 个生态指标(NDVI、WET、LST、NDBSI)降维,提取第一主成分(PC1)作为初始 RSEI,实现生态质量的综合评价。核心步骤:

  • 数据中心化:每个指标减去其均值,消除量纲影响。
  • 协方差矩阵计算:反映指标间的相关性(如 NDVI 与 WET 可能正相关,NDVI 与 NDBSI 可能负相关)。
  • 特征值与特征向量分解
    • 特征值:反映主成分的方差贡献(特征值越大,该主成分包含的信息越多)。
    • 特征向量:反映各指标对主成分的贡献权重。
  • 主成分方向调整(RSEI 核心逻辑):
    • 理论依据:RSEI 要求 "生态正向指标(NDVI、WET)权重为正,生态负向指标(LST、NDBSI)权重为负"。
    • 调整方式:取 NDVI、WET 特征向量的绝对值(保证正向贡献),取 LST、NDBSI 特征向量绝对值的负值(保证负向贡献)。
  • 主成分计算:通过矩阵乘法得到 4 个主成分(PC1~PC4),PC1 包含原始数据的主要信息(方差贡献率最高)。

五、水体掩膜与影像合成

(一)水体掩膜

功能:去除研究区中的永久水体和季节性水体,避免水体对生态指标计算的干扰(如水体 NDVI 为负,会影响 RSEI 结果)。

javascript 复制代码
var water = ee.ImageCollection('JRC/GSW1_4/YearlyHistory')
               .filterDate(year + '-01-01', year + '-12-31').first();
var mask = water.eq(2).add(water.eq(3)).unmask().eq(0).clip(roi);
  • 数据来源:JRC 全球地表水数据集(GSW1_4),该数据集将地表分为 "永久水体(2)""季节性水体(3)" 等类型。
  • 逻辑:掩膜掉水体(值为 2 和 3 的区域),仅保留非水体区域(值为 0)。

(二)影像合成

功能:将全年影像按指标取中值,得到年度综合影像(减少单期影像的噪声和云残留影响)。

javascript 复制代码
var imageCol = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")
                 .filterBounds(roi) // 空间过滤:仅保留研究区范围内的影像
                 .filterDate(year + '-01-01', year + '-12-31') // 时间过滤:2020年
                 .map(maskclouds) // 云掩膜
                 .map(applyScaleFactors) // 比例因子转换
                 .select(srcBands, toBands) // 波段重命名
                 .map(NDVI) // 计算NDVI
                 .map(WET) // 计算WET
                 .map(NDBSI); // 计算NDBSI
// 取中值合成并应用水体掩膜
var image = imageCol.select(['NDVI', 'WET', 'LST', 'NDBSI']).median().updateMask(mask).clip(roi);

中值合成优势:相比均值,更能抵抗异常值(如未完全掩膜的云、噪声像素)的影响,更能反映年度平均状况。

六、结果生成与可视化

(一)最终 RSEI 计算

javascript 复制代码
var image_norm = img_norm(image); // 指标归一化
var PCA = getPAC(image_norm); // 主成分分析
var RSEI_0 = PCA.select("PC1"); // 提取PC1作为初始RSEI
var RSEI = img_norm(RSEI_0); // 对初始RSEI归一化到0-1

最终 RSEI 范围 :0~1,0 代表生态质量最差,1 代表生态质量最优

(二)结果可视化

1. 直方图

javascript 复制代码
var Histogram = ui.Chart.image.histogram({
  image: RSEI,
  region: roi,
  scale: scale,
  maxPixels: 1e10
});
print('Histogram of RSEI', Histogram);

功能:展示 RSEI 值的分布情况,可直观判断研究区生态质量的整体水平(如峰值偏向 1 则整体生态较好,偏向 0 则整体较差)。

2. 地图显示

javascript 复制代码
var visParam = {
  min: 0,
  max: 1,
  palette: ['C2523C', 'F2B60E', '77ED00', '1BAA7D', '0B2C7A'] // 红→黄→绿→深绿→蓝(差→好)
};
Map.addLayer(RSEI, visParam, 'RSEI');

颜色逻辑:从红色(生态差)到蓝色(生态优)渐变,可在 GEE 地图界面直观查看不同区域的生态质量空间分布。

七、核心逻辑总结

  • 数据输入:Landsat 8 卫星影像(光学 + 热红外波段)、研究区矢量边界。
  • 预处理:云掩膜→比例因子转换→水体掩膜→年度中值合成,保证数据质量。
  • 指标计算:构建 4 个生态指标(NDVI:植被、WET:湿度、LST:温度、NDBSI:建筑裸土),全面反映生态状况。
  • 综合评价:指标归一化→主成分分析(PCA 降维)→调整主成分方向→RSEI 归一化,得到综合生态质量指数。
  • 结果输出:直方图(统计分布)+ 地图可视化(空间分布),支持生态质量的定性与定量分析。

八、运行结果

控制台输出的相关信息
遥感生态指数(RSEI)计算结果可视化
直方图

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

相关推荐
原神启动12 小时前
云计算大数据——MySQL数据库一(数据库基础与MySQL安装)
大数据·数据库·云计算
weixin_307779134 小时前
基于AWS Global Accelerator和ECS Fargate的最小化延迟与快速故障转移架构
容器·云计算·aws
济南java开发,求内推4 小时前
AWS 对接
云计算·aws
小毅&Nora7 小时前
【云计算】【Kubernetes】 ③ 深入 containerd - CRI 插件如何驱动 OCI 容器?
容器·kubernetes·云计算
来自于狂人8 小时前
HCIE云计算考点精析
云计算
The star"'8 小时前
docker
docker·云计算
Lynnxiaowen8 小时前
今天我们开始学习Docker概述与安装
linux·学习·docker·容器·云计算
翼龙云_cloud9 小时前
阿里云渠道商:阿里云网站访问速度慢有哪些加速方案?
运维·服务器·阿里云·云计算·php
wanhengidc9 小时前
云手机面向的用户群体都有哪些?
运维·服务器·科技·智能手机·云计算