ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RSEI遥感生态指数详解:GEE计算流程与实战应用

RSEI遥感生态指数详解:GEE计算流程与实战应用 开头做了这么多年遥感应用要说生态环境质量评价这块RSEI遥感生态指数Remote Sensing Ecology Index绝对是我用过最顺手也最常跟人推荐的一个模型。以前做区域生态评估要么是单看植被覆盖度要么就是对着规范去搞一大堆指标权重打分主观性强不说不同期的结果之间还很难横向比。RSEI这个东西核心思路就是完全从遥感数据本身出发把绿度、湿度、热度、干度这四个跟人类感受最相关的生态要素耦合在一起用主成分分析来定权重免去了人为干预的大麻烦能在完全无监督的情况下快速算出一个区域的生态质量得分做时间序列对比尤其好用。这篇教程我尽量按一条完整的技术路线来写从RSEI的原理、各指标怎么选、怎么处理到具体怎么在GEEGoogle Earth Engine里跑出来一张图再到怎么分析结果和排坑一次讲透。适合刚接触遥感评价、打算发论文或者做项目监测的同学参考也适合已经在用但想优化技术细节的研究者查漏补缺。我尽量把那些网上教程不会明说的细节和踩坑经验都写出来。1. RSEI的原理与四个指标的选择逻辑1.1 为什么需要RSEI而不是传统评价方法传统的生态环境质量评价尤其是县级、市级这种大尺度的通常依赖统计年鉴数据然后按照PSR框架压力-状态-响应或者别的规范去挑一堆指标再请专家打分定权重。这个过程的问题很明显第一统计数据有滞后性很多地方的数据要隔一年甚至几年才能公开第二权重是人为定的换了专家组结果可能就不一样很难做时间序列对比第三有些指标在偏远区域根本拿不到数据比如乡镇一级的污染物排放量。RSEI的思路则完全不同它完全基于遥感影像人可以在室内把整个评价流程自动化跑完而且权重是通过主成分分析自动确定的客观性和可重复性都比传统评价方法强得多。1.2 四个指标背后的物理意义RSEI选取了绿度、湿度、热度、干度四个分量本质上是想用遥感这双“眼睛”去模拟人对环境好坏的主观感受。想象一下你站在一个地方第一直觉肯定是看这里植被多不多绿度潮不潮湿闷不闷湿度晒不晒、温度高不高热度以及地面是裸露的干土还是硬化的水泥干度。这四个指标跟生态系统的物质循环、能量流动密切相关覆盖了生态状况最主要的几个侧面而且都能直接用遥感数据算出来。第一个是绿度指标NDVI这个几乎是遥感应用里最经典的一个指数了直接反映植被生长状态和覆盖度。第二个是湿度指标Wet来自缨帽变换K-T变换的湿度分量缨帽变换可以把多光谱影像的波段信息压缩成几个有物理意义的分量湿度分量跟土壤和植被的含水量相关性极高。第三个是热度指标LST即地表温度不用多解释城市热岛效应、地表能量平衡都靠它来衡量。第四个是干度指标NDBSI它其实是建筑指数IBI和裸土指数SI的均值用来捕捉地表“变干”的程度——城市扩张带来的不透水面增加以及农村地区植被破坏后的裸土化都会让这个指标升高。1.3 主成分分析降维的巧妙之处选定四个指标之后最难的一步就是怎么把它们合成一个综合指数。如果简单地求均值那等于默认四个指标的贡献是完全相等的这显然不科学。传统做法是层次分析法或者熵权法但都还是人在定规则。RSEI的做法是先把四个指标归一化到0到1再进行主成分分析然后取第一主成分PC1作为初始生态指数。PC1是所有主成分中方差贡献率最大的那一份它捕获了四个指标中绝大部分的共同变化信息。如果指标之间存在联动关系——比如NDVI升高、地表温度下降、湿度增加这类正相关——PC1就会把这种正向信号集中起来。这种做法等于是让数据自己说话谁在区域内的波动最能代表生态状况的变化谁就在PC1中占有更大的载荷。实际跑RSEI的时候四个指标在PC1上的载荷方向需要特别注意。通常来说NDVI和Wet的载荷为正LST和NDBSI的载荷为负。如果算出来的结果跟这个方向相反说明输入数据的预处理出了问题需要回头检查云的掩膜是否做干净了或者是归一化的时候出了差错。我自己当年第一次跑RSEI就遇到PC1全部反号的情况排查了很久才发现是LST反演那一步出了问题后面在实操环节会详细讲。2. 数据准备与预处理要点2.1 影像选择与时间窗口RSEI模型对输入影像的质量要求很高核心思想是“用同一时间窗口、同一传感器、覆盖完整研究区的影像”。如果研究区不大一景Landsat影像就能覆盖那是比较理想的条件。如果研究区跨了好几景影像就需要做镶嵌和匀色处理这时候就要格外小心不同影像之间的系统偏差。时间窗口的选择也很有讲究最好选在植被生长旺季这样NDVI的区分度最高而且云量通常比较少。比如在中国大部分地区6到9月是比较合适的窗口。我个人建议至少要求研究区内有效像元去云、去阴影之后占比超过80%否则那一年的RSEI结果可信度就很低后面趋势分析的结论可能全是噪声。数据源的选择上目前最常用的还是Landsat系列。Landsat 5 TM、Landsat 7 ETM、Landsat 8/9 OLI/TIRS这几代传感器的波段设置在可见光、近红外、短波红外这几个核心区间具有很好的延续性但波段中心波长有细微差异直接混用会有系统误差。如果做长时序分析建议要么统一用经过光谱归一化处理的surface reflectance产品表面反射率产品要么用像GEE里的CFMask算法统一处理过的数据集相乘不大靠谱的做法是把不同传感器的结果分开算后在RSEI层面再做拼接尽量别把原始DN值混在一起处理。2.2 云、阴影和水体的掩膜这是预处理里最影响结果质量、也最容易被新手忽视的一步。RSEI的LST反演是基于热红外波段的有云覆盖的地方地表温度要么算不出来要么算出来是云的亮温而不是地面温度那是完全没意义的值。所以一定要做掩膜处理。Landsat Collection 2 Level-2的产品自带QA_PIXEL波段可以直接用它把云、云阴影、水体这些像元标记出来。水体最好单独处理因为水体的光谱特征非常特殊它的湿度极高、地表温度变化特征跟陆地完全不同如果不掩膜掉主成分分析时会把这些水体的信号当成主导信息整个RSEI的载荷方向都可能被带偏。这一点在湖泊、河流众多的地方做研究时尤其要小心。掩膜完成之后还有一个容易忽略的点是归一化的范围应该用掩膜后的有效像元重新统计不能用原始影像的最小最大值。因为有云、有水的地方那些异常值会把归一化拉伸的范围搞得很大导致有效像元的数值被压缩到很窄的区间RSEI的区分度就会大幅度下降。2.3 关于Landsat 7条带问题的处理如果长时序研究中必须用到Landsat 7 ETM的数据那就绕不开SLC-off扫描行校正器故障带来的条带问题。2003年之后Landsat 7的数据都存在这个毛病图像上有大概22%的像元是有数据空洞的条带。处理的办法主要是两种一种是用GEE里现成的landsat7表面反射率产品配合simple_composite它中间其实默认做了插值填充另一种是自己写个局部线性回归或者用多时相数据做填补。我的建议是能避开就避开尽量选Landsat 5或者Landsat 8/9的数据。如果实在要补洞可以用低通滤波或者最近邻插值但在论文里一定要明确说明填补方法对RSEI结果可能产生的误差审稿人很喜欢问这个问题。3. RSEI各分量的计算详解3.1 绿度与干度指标的计算绿度指标NDVI是四个分量里最好算的Landsat 8/9的话就是近红外Band 5和红光Band 4的差比和公式。这个公式绝大多数人都会但有个细节是NDVI的归一化范围在不同地表类型之间差异很大。水体在NDVI上经常是负值植被茂密区接近0.8裸土在0.1左右。如果研究区水面占比大归一化时NDVI的负值会对整个拉伸产生影响所以要确认水掩膜真的执行到位了。干度指标NDBSI的计算相对繁琐一点因为它是IBI和SI两个指数的均值。IBI的计算公式里涉及到了蓝光、绿光、红光、近红外、短波红外等多个波段的线性组合逻辑上用到了土壤调节植被指数SAVI和改良型归一化水体指数MNDWI作为辅助。实际编码的时候建议直接写成多个中间波段变量一步步算不要试图把整个公式写成一行那样中间环节出了问题极难排查。SI裸土指数也是类似的道理虽然公式不长但是波段用得多容易张冠李戴。我一开始就是喜欢把公式压成一行后来某次复查数据发现SI异常偏大逐变量打印才揪出是近红外和短波红外的次序写反了自那以后就老老实实分步骤了。3.2 湿度指标Wet与缨帽变换湿度分量Wet来自缨帽变换中的第三分量对于Landsat TM来说是第三分量OLI传感器也有对应的系数。缨帽变换本质上是一个固定系数的线性变换把多光谱波段的原始信息转换到亮度、绿度、湿度这个三维的特征空间。亮度跟地表整体的反射水平有关绿度跟植被光合作用强度有关湿度则跟地表含水量相关性最强。Landsat 8 OLI和Landsat 5/7 TM的缨帽变换系数是不同的因为波段设置变了千万不能拿TM的系数往OLI上套。从实际经验来看Wet分量的计算是最容易出问题的一环因为不同文献里给的系数并不完全一致有的是基于大气表观反射率标定的有的是基于地表反射率标定的。我建议使用跟自己输入数据相匹配的系数。如果用的是Collection 2 Level-2地表反射率产品优先找专门面向表面反射率的系数版本如果使用GEE里现成的代码例子绝大多数是处理表面反射率产品的可以直接用但要确认清楚。还有一种保险的做法是先跑一小块验证区看看Wet的数值范围是否合理如果值普遍为负且范围特别大多半是系数选错了。3.3 地表温度LST反演的两种路径LST的计算是RSEI四个分量里门槛最高的一个。坊间教程里最流行的做法是用大气校正法辐射传输方程反演LST这个方法理论上最严谨但需要大气剖面参数也就是大气在热红外波段的透过率、上行辐射和下行辐射。这些参数要靠MODTRAN模型估算普通用户拿不到所以网上很多GEE教程里其实是把大气参数固定成中纬度夏季的默认值来处理。这种简化处理在大多数情况下问题不大因为RSEI更关注的是地表温度的空间相对差异而不是绝对精度只要整个研究区用同一套大气假设系统性偏差会被主成分分析在一定程度上吸收掉RSEI的最终空间分布格局基本不受影响。另一种更简单的路径是直接用GEE里面现成的Landsat Collection 2 Level-2 LST产品。USGS官方从2021年开始发布了基于Landsat的热红外反演地表温度产品空间精度和均一性都比较好彻底省略了用户自己反演的流程。如果你的研究区时间范围覆盖2013年之后且用的是Landsat 8/9我非常推荐直接用官方LST产品省时省心还能避免自己反演带来的细节错误。如果是更长时序研究Landsat 4/5/7也有对应的LST产品可用只是我还没全面实测过它们的稳定性。需要注意的一点是LST产品的单位是开尔文用的时候要换算成摄氏度别把数值范围弄错了。3.4 指标归一化与主成分分析四个分量计算完之后统一要做0-1归一化。归一化的公式很简单(b - min) / (max - min)但归一化时的统计范围非常重要要在整个研究区范围内统计。假如是分块计算的不同块的最大最小值不一样最后的RSEI就完全不可比了。这也是GEE处理这种问题比本地软件舒服的地方它可以全影像空间范围做全局统计一步到位。归一化完成后的主成分分析PCA如果在本地用ENVI或者ArcGIS做操作界面很直观便于查看特征向量矩阵和方差贡献率。但本地处理大数据的痛点在于裁剪、配准这些步骤都得人工做流程繁琐。如果在GEE里做可以靠reduceRegion配合covariance把四个波段的协方差矩阵求出来再用特征值分解得到特征向量和主成分载荷。一开始接触会觉得有点绕但熟练后可以自动化跑非常多的年份做长时序生态变化趋势分析非常方便。后面第4部分我会把这套完整的GEE流程写出来。4. 在GEE中实现RSEI的完整流程4.1 研究区定义与数据导入用GEE做RSEI的第一步自然是定义研究区和导入影像集合。研究区既可以是上传的矢量边界比如Shapefile转为GeoJSON后上传到GEE资产也可以直接用GEE自带的行政边界数据集。我个人习惯把边界上传到Assets里这样可以保证每次跑代码用的一模一样的边界不会因为数据集版本更新出问题。用自带的FAO/GAUL或者是LSIB数据集也可以但注意不同数据集之间的边界在海岸线、岛屿这些地方会有差异长时序研究的时候如果换了边界数据集面积统计结果可能出现细微偏差。Landsat影像集合建议直接使用Collection 2 Level-2的表面反射率产品即LANDSAT/LC08/C02/T1_L2Landsat 8或者LANDSAT/LC09/C02/T1_L2Landsat 9这些数据已经处理好了大气校正并且附带了QA_PIXEL波段可以方便地做云、阴影和水的掩膜。需要强调的是Collection 2 Level-2里有些影像的QA波段信息会有轻微的边缘异常研究区靠近影像边缘或者跨越多个轨道的时候建议把SR_CLOUD_QA也加进来综合判断。4.2 核心代码框架与逐段注释// 1. 定义研究区矢量边界 var roi ee.FeatureCollection(users/yourname/your_study_area); Map.centerObject(roi, 9); // 2. 定义时间范围以2020年夏季为例 var startDate 2020-06-01; var endDate 2020-09-30; // 3. 加载Landsat 8 Collection 2 Level-2表面反射率影像集 var l8 ee.ImageCollection(LANDSAT/LC08/C02/T1_L2) .filterBounds(roi) .filterDate(startDate, endDate) .filter(ee.Filter.lt(CLOUD_COVER, 10)); // 先按影像元数据粗略过滤云量 // 4. 定义云、阴影、水体掩膜函数 function maskL8(image) { var qa image.select(QA_PIXEL); var cloud qa.bitwiseAnd(1 3).eq(0); // 云 var cloudShadow qa.bitwiseAnd(1 4).eq(0); // 云阴影 var water qa.bitwiseAnd(1 2).eq(0); // 水体保守掩膜 var mask cloud.and(cloudShadow).and(water); return image.updateMask(mask); } var l8Masked l8.map(maskL8); // 5. 按像素取中值合成去云后取中值能进一步消除残留噪声 var composite l8Masked.median().clip(roi);上面这段是主体框架。按像素取中值合成的好处是能有效克服单景影像上残留的薄云、传感器噪声等问题。如果研究区在短时间内有多景影像覆盖中值合成比单纯取最新一景更能反映该时段的环境平均水平。缺点是中值合成会平滑掉一些极值——比如某个局部突发的高温或者洪涝——但RSEI本来就是评价一段时间的整体状况中值合成的影响不大。合成完底图之后就可以开始算四个分量了。下面是绿度、湿度、干度、热度的计算函数注意波段编号要跟表面反射率产品的波段一一对应// 5.1 计算NDVI绿度指标 var ndvi composite.normalizedDifference([SR_B5, SR_B4]).rename(NDVI); // 5.2 计算Wet湿度指标Landsat 8 OLI var wet composite.expression( 0.1511 * B2 0.1973 * B3 0.3283 * B4 0.3407 * B5 - 0.7117 * B6 - 0.4559 * B7, { B2: composite.select(SR_B2), // 蓝光 B3: composite.select(SR_B3), // 绿光 B4: composite.select(SR_B4), // 红光 B5: composite.select(SR_B5), // 近红外 B6: composite.select(SR_B6), // 短波红外1 B7: composite.select(SR_B7) // 短波红外2 }).rename(Wet); // 5.3 计算NDBSI干度指标IBI SI 取平均 // 先计算辅助指数 var mndwi composite.normalizedDifference([SR_B3, SR_B6]).rename(MNDWI); var savi composite.expression( (1 0.5) * (B5 - B4) / (B5 B4 0.5), {B4: composite.select(SR_B4), B5: composite.select(SR_B5)} ).rename(SAVI); var ibi composite.expression( (2 * B6 / (B6 B5) - (B5 / (B5 B4) B3 / (B3 B6))) / (2 * B6 / (B6 B5) (B5 / (B5 B4) B3 / (B3 B6))), { B3: composite.select(SR_B3), B4: composite.select(SR_B4), B5: composite.select(SR_B5), B6: composite.select(SR_B6) } ).rename(IBI); var si composite.expression( ((B6 B4) - (B5 B2)) / ((B6 B4) (B5 B2)), { B2: composite.select(SR_B2), B4: composite.select(SR_B4), B5: composite.select(SR_B5), B6: composite.select(SR_B6) } ).rename(SI); var ndbsi ibi.add(si).multiply(0.5).rename(NDBSI);讲到这里我必须提醒一个容易出错的点SR_B开头的波段是地表反射率但热红外波段在Collection 2 Level-2里名为ST_B10它的数值是地表温度乘以100后的开尔文格式。单位坑我踩过很多次所以建议读到这一步的同学就顺手把除100这一步做了然后转成摄氏度后面使用就不会弄混。下面这段代码继续处理热度指标和最终的PCA// 5.4 计算LST热度指标转摄氏度 var lstK composite.select(ST_B10).multiply(0.00341802).add(149.0); // 注意不同Collection版本的缩放系数可能有差异 var lstC lstK.subtract(273.15).rename(LST); // 6. 四个分量归一化 function normalize(image) { var minMax image.reduceRegion({ reducer: ee.Reducer.minMax(), geometry: roi, scale: 30, maxPixels: 1e13 }); var min minMax.values().get(0); var max minMax.values().get(1); return image.subtract(min).divide(max.subtract(min)); } var ndviN normalize(ndvi).rename(NDVI_n); var wetN normalize(wet).rename(Wet_n); var lstN normalize(lstC).rename(LST_n); var ndbsiN normalize(ndbsi).rename(NDBSI_n); var imageAll ee.Image.cat([ndviN, wetN, lstN, ndbsiN]).clip(roi); // 7. 主成分分析 var region imageAll.reduceRegion({ reducer: ee.Reducer.covariance(), geometry: roi, scale: 30, maxPixels: 1e13 }); var covMatrix ee.Array(region.get(covariance)); var eigens covMatrix.eigen(); // 特征值、特征向量矩阵 // 特征向量矩阵行是分量列是特征向量 var eigenVectors eigens.slice(1, 1, 5); var pcImage ee.Image(eigenVectors).clip(roi); var pc1 imageAll.select([NDVI_n, Wet_n, LST_n, NDBSI_n]) .multiply(pcImage) .reduce(ee.Reducer.sum()) .rename(PC1); // 8. 构建RSEI并做正向化 var rsei normalize(pc1).rename(RSEI); // 注意如果PC1中NDVI和Wet载荷为负、LST为正面需要将PC1取反再归一化才是RSEI在PCA这步eigen()返回的是一个二维数组第一列是特征值后面列是特征向量。用slice取特征向量的时候很多教程里用的是slice(1, 0, 5)也就是取第2到第5列这两者的区别在于特征向量的排序方式。我的经验是宁可把四个特征向量都打印出来看一眼确认最大特征值对应的特征向量是哪个方向也不要去盲信默认顺序。之后再按特征向量的正负来确定是否需要把PC1反向。最终输出的RSEI的值域是0到1数值越接近1代表生态质量越好越接近0代表生态质量越差。4.3 结果可视化与分级统计拿到RSEI栅格之后下一步基本都是做分级和统计。常用的分级方法是等间距法把RSEI分为差0-0.2、较差0.2-0.4、中等0.4-0.6、良0.6-0.8、优0.8-1.0五个等级。可视化的时候建议用绿色到红色的渐变色红代表生态质量差绿代表生态质量好。// 9. 可视化RSEI结果 var visRsei {min: 0, max: 1, palette: [d7191c, fdae61, ffffbf, a6d96a, 1a9641]}; Map.addLayer(rsei, visRsei, RSEI); // 10. 统计各等级面积占比 var rseiClass rsei.multiply(5).floor().add(1).int(); // 分成5类值为1~5 var area ee.Image.pixelArea().divide(1e6).addBands(rseiClass).reduceRegion({ reducer: ee.Reducer.sum().group({ groupField: 1, // 按类别分组 groupName: class }), geometry: roi, scale: 30, maxPixels: 1e13 }); print(各等级面积统计km²:, area);这段代码跑完控制台会输出每个级别的面积很方便用于后面的统计分析和绘图。如果处理的是多年份的RSEI就把上述步骤包成一个函数输入年份参数输出RSEI影像再用for循环或者map批量计算最后逐像元做趋势回归得出生态质量改善区、退化区和不变化区三类格局。这种趋势图对管理部门非常有说服力我帮几个西部县域做过类似的监测最后制图输出的时候当地工作人员一眼就能看出问题区域在哪里。5. RSEI的优势、局限与适用场景5.1 模型优势无监督、可重复、低成本RSEI最大的优势是什么说实话我认为是它把评价流程做成了高度标准化、低门槛的流水线。只要把影像准备好剩下的步骤几乎不需要人工判断。主成分分析自动解决了权重分配问题四个指标在全国范围内得到广泛的验证异常值不多结果有比较强的可解释性。再加上遥感数据本身免费开放Landsat系列全部公开一个小团队甚至一个人就可以对一个大区域展开年度监测预算几乎可以压缩到只有服务器电费的程度。对于经费有限的地方环保部门、高校课题组来说RSEI真的是一个性价比极高的入门评价工具。空间分辨率上Landsat的30米精度也有明显优势比MODIS那个250米到1000米的粗分辨率更能反映县域、镇域尺度上的差异。MOD13系列虽然时间分辨率高做长时序方便但空间太粗很多细节丢失。而哨兵2号的10米分辨率虽然更好但哨兵2号没有热红外波段热度指标LST拿不到没法直接跑RSEI。5.2 模型局限性必须清楚的三条边界当然RSEI不是万能的。第一个局限是它对数据质量高度敏感。如果研究区常年多云夏季能拿到的好影像太少合成出来的底图就很脏RSEI结果也会飘忽不定。遇到这种情况建议考虑改用哨兵1号SAR数据辅助补全或者干脆压缩时间窗口用更长时间的影像来做合成但需要跟论文说明时间代表性会变差。第二个局限是RSEI的评价结果是一种相对生态质量它反映的是同一景影像内部不同像元之间的对比关系而不能直接在不同时间、不同区域之间做绝对的数值比较。这也是为什么做RSEI长时序研究时要特别注意每一年的RSEI都是各自年份数据独立归一化、独立PCA得到的一年的0.8跟另一年的0.8并不能严格等值。如果是严格意义上的跨期对比可以考虑用固定时相的影像做多年合成统一归一化范围或者干脆用PIE引擎、GEE等云平台做时间序列分析把这个相对性讲清楚。第三个局限是RSEI没有考虑生物多样性、土壤质量、水文过程这些深层的生态维度。它本质上是用遥感可感知的表层特征来推断生态质量对某些生态过程比如农田面源污染、湿地退化早期的细微变化敏感性是不够的。所以我的建议是RSEI适合做区域生态质量的空间格局识别和时间变化趋势分析但若要做深入机理研究最好结合地面观测数据一起解释。5.3 适合的应用场景与成果形式RSEI的应用场景非常广泛。我经手过的项目里有做城市扩张对生态环境影响的有做矿区生态修复监测的有做自然保护区生态质量评估的还有做流域尺度的生态健康评价的。这些场景都有两个共同点一是空间范围比较大动辄几百上千平方公里地面调查难以全覆盖二是需要做时间序列分析比如每年出一期监测结果看趋势走向。RSEI的成果形式通常是一个空间分布图加一组统计数据。空间分布图可以做成生态质量等级图、生态质量变化趋势图、变化显著性检验图统计分析可以做像元尺度的Sen斜率与Mann-Kendall显著性检验也可以做区域平均值的折线图和标准差分析。这种图加数的组合无论是发中文核心期刊还是SCI都是比较标准的配置。6. 实操中的常见坑位与排查建议6.1 PC1载荷方向为什么一直是反的我相信这个问题十个跑RSEI的人有八个会遇到。理论上一套合格的RSEI结果里PC1的载荷应当表现为NDVI为正、Wet为正、LST为负、NDBSI为负也就是说生态好的地方绿色植被多、湿度大、温度低、干度低。如果算出来这个方向反了整个RSEI的语义就反了后面做分级就全错。排查顺序建议按我的表格来检查有没有完整执行水体掩膜。水面在LST和NDVI上跟陆地差异极大会把PCA信号带偏。尤其研究区有大型水库、湖泊时这一条是头号嫌疑。检查LST是否做成了亮温。如果直接用了热红外波段的辐射值而没做辐射定标就会出现“植被覆盖度越高、地表温度越高”这种违反常识的结果载荷方向自然就反了。检查Wet系数是否用对了传感器。Landsat 7和Landsat 8的缨帽变换系数不同混用后Wet信号扭曲PC1的方向也会被干扰。将四个分量的波段值采样出来打印一下依次看每个分量的均值在生态好和生态差的像元上是否跟理论预期一致这个分化很清楚。6.2 中值合成与单景影像的选择现在很多GEE教程都会用median()做合成好处是能减少云和噪声的干扰。但也带来一个问题研究区如果处在季节变化剧烈的区域在一个较长的时间窗口内取中值会把不同物候期的植被混在一起。比如云贵高原那种“一山有四季”的地方6月和9月植被状态完全不同硬取中值可能导致NDVI被压低。我的建议是尽量缩短时间窗口优先选植被最茂盛、物候相对稳定的那一个月。如果一个月内影像数量不够再扩大到两个月。一般来说只要研究区云量不是特别夸张Landsat 89双星融合之后两个月内的有效影像数量足够应付。6.3 多期结果不可比的暗坑前面提到过每一年独立做归一化和PCA会让不同年份的RSEI值存在系统差异。想要严格比较年份间的变化业界比较常用的做法是选取一个参考年份或者多年合成基准影像用它的极值来归一化所有年份的数据再统一PCA系数或者直接用固定的特征向量矩阵。这个方法在理论上更合理但实现上复杂一些需要先算基准年的协方差矩阵然后把它的特征向量保存下来应用到每一个目标年份。GEE里可以这样实现就算一次基准影像的PCA特征向量然后把特征向量固化为常数影像逐年份乘以该系数。用过之后我才发现这种做法产出的趋势图稳定很多不会出现某些年份所有区域都在变差或者变好的假象。6.4 输出的RSEI分层与制图的技巧制图时大家都希望图面好看又有信息量。分级方案我见过很多种自然间断点法Jenks做出来的地图区分度最高因为它是按照数据分布规律来切分的缺点是不同年份之间的分级阈值不同图与图之间不能并排比较。如果做年份对比图我坚持用固定阈值等间距分级图例统一。如果单独展示某一年的生态状况用自然间断点法更能突出重点区。另外输出图片建议用300dpi以上的分辨率字体大小至少10pt色盲友好的配色方案也不难找还可以额外标注重要的地形地物名字和研究区的边界这样评审人第一眼就能看懂你的研究区位置。7. 从RSEI走向更深入的生态评估RSEI是做区域生态评估的一个很实用的起点它的思路——用多维遥感指数做主成分分析——其实还可以扩展到更多场景。比如有的研究者把RSEI和社会经济数据进行耦合分析探索人口密度、GDP、城市化率跟生态质量之间的关系也有人把景观生态学里的格局指数跟RSEI结合分析生态质量跟景观破碎化、连通性的相关性还有人在RSEI基础上引入NPP净初级生产力、空气质量指数这些外部数据做区域综合生态健康评估。我个人在实际操作中的体会是RSEI的价值不仅在算出那张生态质量图更在于它倒逼我们把“生态好不好”这个问题拆解成可测量、可重复、可比较的技术指标。做好一次RSEI分析之后再接触其他遥感评价模型比如生态脆弱性评价、城市热岛强度分析、生态系统服务价值评估都会发现它们解决问题的底层逻辑是相通的。最后分享一个实操小技巧跑GEE的时候把每一年的四个分量的PC1载荷和方差贡献率都打印到表格里存成一个时间序列。这不仅是为了论文附件里多一张表更重要的是一旦某一年载荷出现明显异常立刻就能定位到那一年影像质量问题而不是等最后趋势分析出了怪结果才回过头来排查。希望这篇经验总结对正在做生态评价的你有点帮助。
返回列表