2026/4/6 8:52:13
网站建设
项目流程
如何提高网站的收录率和收录量,青岛网站优化联系方式,常州网站公司,微信小程序开发教程视频目录
一、前言
二、基础参数定义#xff08;第 1-2 步#xff09;
#xff08;一#xff09;研究区定义
#xff08;二#xff09;时间范围与可视化参数
三、Landsat 8 影像加载与预处理#xff08;第 3 步#xff09;
#xff08;一#xff09;核心目标
第 1-2 步一研究区定义二时间范围与可视化参数三、Landsat 8 影像加载与预处理第 3 步一核心目标二云掩膜函数去云处理三影像集加载与预处理链四辐射定标反射率与温度缩放四、生态核心指数计算第 4 步一归一化植被指数NDVI二NDVI 极值统计用于植被覆盖度计算三植被覆盖度FV四地表比辐射率EM五地表温度LST六湿度指数Wetness缨帽变换湿度分量七归一化建筑裸土指数NDBSI干燥度指数五、指数标准化第 5 步一标准化的目的二标准化函数三标准化指数整合六、主成分分析PCA第 6 步一PCA 的核心作用二PCA 实现步骤1. 生成主成分波段名称2. 数组转换与协方差矩阵计算3. 特征值与特征向量分解4. PCA 投影与第一主成分提取七、RSEI 构建与归一化第 7 步一RSEI 的定义二归一化计算八、RSEI 五分类LSES 等级划分第 8 步一分类目的二分类实现九、统计分析与图例添加第 9-10 步一RSEI 直方图统计二LSES 等级图例添加十、核心技术亮点与关键说明十一、应用场景与扩展方向十二、运行结果若觉得代码对您的研究 / 项目有帮助欢迎点击打赏支持需要完整代码的朋友打赏后可在后台私信复制文章标题发给我我会尽快发您完整可运行代码感谢支持本代码基于 Google Earth EngineGEE平台以 Landsat 8 卫星影像为数据源通过一系列数据预处理、指数计算、标准化、主成分分析PCA等步骤最终构建遥感生态指数RSEI并将其划分为 5 个土地生态状况等级LSES同时实现结果可视化与统计分析。核心应用场景包括区域生态环境质量评价、生态变化监测等。一、前言代码按“数据准备→指数计算→数据标准化→PCA 分析→RSEI 构建→等级划分→可视化与统计”的逻辑分步执行各步骤环环相扣前序结果为后序输入具体流程如下定义研究区与基础参数时间范围、可视化规则加载 Landsat 8 影像并完成预处理去云、辐射定标计算生态评价核心指数植被、温度、湿度、干燥度相关指数标准化消除量纲影响主成分分析提取核心生态信息构建 RSEI 并归一化RSEI 五分类与可视化统计分析直方图与图例添加按照 RSEI 阈值进行生态分级 LSES五等级等级RSEI 范围生态状况10.0-0.2极低20.2-0.4较低30.4-0.6中等40.6-0.8较高50.8-1.0极高二、基础参数定义第 1-2 步一研究区定义var aoi geometry; // 研究区边界需提前通过绘制或加载矢量文件定义 Map.centerObject(aoi, 10); // GEE地图居中显示研究区缩放级别100-20数值越大越清晰核心作用确定分析的空间范围所有后续数据处理与计算均限定在该区域内。关键说明geometry是 GEE 内置的空间几何对象需用户提前通过 GEE 地图界面绘制多边形或加载 Shapefile 等矢量数据获取。二时间范围与可视化参数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 月北半球夏末至秋初该时段植被覆盖稳定、云量相对较少能减少季节因素对生态指数的干扰适合生态质量评价。可视化参数min和max限定数据显示范围palette定义颜色映射规则红色→黄色→绿色通常用于表示 “差→中→好” 的梯度。三、Landsat 8 影像加载与预处理第 3 步一核心目标获取研究区范围内、指定时间内的高质量 Landsat 8 影像消除云及云阴影干扰并完成反射率与地表温度的辐射定标将原始 DN 值转换为具有物理意义的地表参数。二云掩膜函数去云处理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 的像素即非云阴影 / 云像素。三影像集加载与预处理链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等波段可直接用于生态指数计算。中值合成优势相比均值合成更能抑制极端值如残留云像素、传感器噪声的影响保留影像的真实信息。四辐射定标反射率与温度缩放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 个指数 / 参数涵盖植被状况、地表温度、湿度条件、地表覆盖类型四大生态评价维度各指数的计算逻辑与生态意义如下一归一化植被指数NDVIvar ndvi scaledLandsat8.normalizedDifference([SR_B5, SR_B4]).rename(NDVI);计算原理归一化差异指数公式为(NIR - RED)/(NIR RED)其中SR_B5是近红外波段植被强反射SR_B4是红波段植被强吸收。生态意义NDVI 是反映植被覆盖度和生长状况的核心指标取值范围 [-1,1]值越大表示植被覆盖越好、生态状况越优负值通常为水体、裸地等。二NDVI 极值统计用于植被覆盖度计算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 最大值。三植被覆盖度FVvar fv ndvi.subtract(ndviMin) .divide(ndviMax.subtract(ndviMin)) .pow(2) // 二次函数模型相比线性模型更贴合植被覆盖的实际情况 .rename(FV);计算原理基于 NDVI 的植被覆盖度估算模型公式为FV ((NDVI - NDVI_min)/(NDVI_max - NDVI_min))²取值范围 [0,1]。生态意义表示某一像素中植被所占的比例值越大植被覆盖越密集是反映地表生态状况的重要参数。四地表比辐射率EMvar em fv.multiply(0.004).add(0.986).rename(EM);计算原理基于植被覆盖度的经验公式适用于中低纬度地区EM 是地表向外辐射能量的效率取值范围接近 [0.986, 0.990]。核心作用是后续反演地表温度LST的关键参数不同地表类型植被、裸地、建筑的比辐射率存在差异需通过植被覆盖度校正。五地表温度LSTvar 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缨帽变换湿度分量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干燥度指数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 中权重平等。二标准化函数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。三标准化指数整合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. 生成主成分波段名称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. 数组转换与协方差矩阵计算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. 特征值与特征向量分解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 投影与第一主成分提取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生态质量越差。二归一化计算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 值划分为离散的等级便于快速识别生态质量的空间差异如 “极低”“中等”“极高” 区域为生态保护和规划提供更直观的决策依据。二分类实现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.2RSEI≤0.4 → 2级较低 (b(0) thresholds[2]) ? 3 : // 0.4RSEI≤0.6 → 3级中等 (b(0) thresholds[3]) ? 4 : 5, // 0.6RSEI≤0.8 →4级较高RSEI0.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 直方图统计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 等级图例添加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直方图若觉得代码对您的研究 / 项目有帮助欢迎点击打赏支持需要完整代码的朋友打赏后可在后台私信复制文章标题发给我我会尽快发您完整可运行代码感谢支持