🛰? 什么是 RSEI?為什么要用它評估生態環境?
RSEI(遙感生態指數,Remote Sensing Ecological Index) 是一種通過遙感數據計算得到的、綜合反映區域生態環境質量的指標體系。
它的設計初衷是用最少的變量,概括最多的生態信息,便于大尺度、自動化地評估城市或自然區域的生態健康狀態。
🔍 RSEI 的四大核心因子:
因子 | 代表意義 | 常用遙感指數/數據源 |
---|---|---|
NDVI | 植被覆蓋度,代表“綠意” | NIR與紅光構建 |
Wet | 土壤/植被含水量,代表“濕潤” | Tasseled Cap 濕度因子 |
NDBSI | 裸土+建成區比例,代表“干擾” | 反映裸地和城市建設強度 |
LST | 地表溫度,代表“熱壓力” | Landsat 熱紅外波段反演地表溫度 |
這些因子經過標準化處理后,通過**主成分分析(PCA)**提取出主成分,再歸一化成 0–1 范圍的指數值,就是最終的 RSEI。
值越大,代表生態質量越好;越接近 0,說明該區域可能存在生態退化、城市擴張、土地干擾等問題。
🛠? 如何用 GEE 實現 RSEI 計算?(完整流程)
我們以 Landsat 5 2000 年夏季影像為例,結合四川西部地區,進行了如下步驟:
1?? 數據準備
-
使用 GEE 調用 Landsat 5 L2 SR 產品(含大氣校正)
-
設置研究時間為 6~9月(植被生長旺季),增強 NDVI 信噪比
-
設置研究區域(AOI)為上傳的
chuanxi
區域文件
2?? 遙感因子計算
-
NDVI:NIR 與 RED 構建標準植被指數
-
Wet:用藍、綠、紅、NIR、SWIR 構建濕度因子(Tasseled Cap 線性組合)
-
NDBSI:結合 SI、IBI 等多個裸地指數構建綜合干擾指標
-
LST:基于熱紅外波段,計算輻射亮溫并反演地表溫度,考慮地表發射率影響
所有因子都經過 標準差標準化(非簡單歸一化),以增強 PCA 分析的魯棒性
3?? 主成分分析(PCA)
-
將 4 個標準化指標合并為一個影像堆棧
-
使用 GEE 的
centeredCovariance
計算協方差矩陣 -
求解特征值與特征向量,獲取 PC1(第一主成分)作為生態質量主因子
-
反轉 PC1,生成原始的生態指數影像(RSEI0)
4?? 歸一化處理
-
提取 PC1 的 1%-99% 分位值范圍
-
將 RSEI0 線性歸一化到 0~1 區間,生成最終 RSEI
5?? 可視化與導出
-
使用配色方案(綠好、紅差)展示生態分布差異
-
導出 GeoTIFF 文件,支持 ArcGIS/QGIS 進一步分析
僅部分代碼,需完整版代碼關注全域智圖后臺私信
僅部分代碼,需完整版代碼關注全域智圖工作室后臺私信
var year = '2000';
var startDate = ee.Date(year + '-06-01');
var endDate = ee.Date(year + '-09-30');
var aoi = ee.FeatureCollection("projects/ee-xu135150/assets/chuanxi");
Map.centerObject(aoi, 6);// 1. Landsat5 預處理
function maskL5sr(image) {var qa = image.select('QA_PIXEL');var mask = qa.bitwiseAnd(1 << 4).eq(0).and(qa.bitwiseAnd(1 << 3).eq(0));return image.updateMask(mask).select(['SR_B1','SR_B2','SR_B3','SR_B4','SR_B5','SR_B7','ST_B6']).copyProperties(image, ['system:time_start']);
}var l5 = ee.ImageCollection("LANDSAT/LT05/C02/T1_L2").filterDate(startDate, endDate).filterBounds(aoi).map(maskL5sr).median().clip(aoi);// 檢查影像像素覆蓋
print("Landsat 5 影像像素計數", l5.reduceRegion({reducer: ee.Reducer.count(),geometry: aoi,scale: 200,maxPixels: 1e13
}));// 波段轉換
var B = l5.select('SR_B1').multiply(0.0000275).add(-0.2);
var G = l5.select('SR_B2').multiply(0.0000275).add(-0.2);
var R = l5.select('SR_B3').multiply(0.0000275).add(-0.2);
var NIR = l5.select('SR_B4').multiply(0.0000275).add(-0.2);
var SWIR1 = l5.select('SR_B5').multiply(0.0000275).add(-0.2);-----------------------------------部分代碼----------------------------------------// 打印 RSEI 統計
print('RSEI 值域:', RSEI.reduceRegion({reducer: ee.Reducer.minMax(), geometry: aoi, scale: 200, maxPixels: 1e13}));
print('RSEI 均值:', RSEI.reduceRegion({reducer: ee.Reducer.mean(), geometry: aoi, scale: 200, maxPixels: 1e13}));// 5. 可視化
Map.addLayer(NDVI, {min: -2, max: 2, // 標準化后的值域palette: ['#d9f0d3', '#addd8e', '#31a354']
}, 'NDVI (植被指數)');Map.addLayer(Wet, {min: -2, max: 2,palette: ['#f7fbff', '#6baed6', '#08306b']
}, 'Wet (濕度指數)');Map.addLayer(NDBSI, {min: -2, max: 2,palette: ['#ffffcc', '#fd8d3c', '#bd0026']
}, 'NDBSI (裸土指數)');Map.addLayer(LST, {min: -2, max: 2,palette: ['#ffffcc', '#fc8d59', '#d73027']
}, 'LST (溫度)');Map.addLayer(RSEI.updateMask(RSEI), {min: 0, max: 1,palette: ['d7191c', 'fdae61', 'ffffbf', 'a6d96a', '1a9641']
}, 'RSEI (生態質量指數)');// 6. 導出 RSEI
Export.image.toDrive({image: RSEI,description: 'RSEI_' + year,folder: 'RSEI_Export',scale: 200,region: aoi,maxPixels: 1e13,fileFormat: 'GeoTIFF'
});