目录
[五、批量导出:植被指数影像导出到 Google Drive](#五、批量导出:植被指数影像导出到 Google Drive)

若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!
本代码基于 Google Earth Engine(GEE)平台,针对 Landsat 9 卫星影像,实现了云层掩膜去噪 、11 种常用植被指数计算 、影像时间序列平均 及批量导出到 Google Drive的完整工作流。核心应用场景为 2024 年生长季(5-9 月)特定地理区域的植被生长状况监测,输出的植被指数可用于生态环境评估、农业长势分析等研究。
植被指数、计算公式
- NDVI:归一化植被指数
- GNDVI:绿度归一化植被指数
- EVI:增强型植被指数
- EVI2:双波段增强型植被指数
- DVI:差值植被指数
- GDVI:绿度差值植被指数
- RVI:比值植被指数
- SAVI:土壤调整植被指数
- OSAVI:优化土壤调整植被指数
- MSAVI:修正土壤调整植被指数
- NDPI:归一化色素指数
一、初始化配置:影像定位与缩放
javascript
Map.centerObject(geometry, 8);
- 功能 :将 GEE 地图界面的中心定位到目标地理区域(
geometry为预设的矢量边界,如研究区 shp 转译的 GEE 对象),并设置地图缩放级别为 8(缩放级别范围 1-20,数值越大视角越近,空间细节越清晰)。 - 作用:方便用户在 GEE 编辑器中直观查看研究区范围,验证影像筛选的准确性。
二、云层掩膜函数:去除影像噪声
Landsat 9 影像的QA_PIXEL波段为质量控制波段,通过该波段的比特位编码可判断像素是否为云、卷云等干扰信息,该函数核心是筛选出 "无云 + 无卷云" 的有效像素。
javascript
function maskL9Clouds(image) {
var qa = image.select('QA_PIXEL');
// 云像素判断条件:同时满足无云(bit3=0)和无卷云(bit1=0)
var cloud = qa.bitwiseAnd(1 << 3).eq(0)
.and(qa.bitwiseAnd(1 << 1).eq(0));
return image.updateMask(cloud);
}
qa.bitwiseAnd(1 << 3):对QA_PIXEL波段进行按位与运算,筛选出第 3 位(bit3)的信息(Landsat 9 编码规则中,bit3 代表 "云",1 代表有云,0 代表无云)。
.eq(0):保留 bit3 为 0 的像素(无云);同理,1 << 1对应 bit1(卷云),筛选无卷云像素。
updateMask(cloud):将筛选出的有效像素保留,云像素设为透明(掩膜去除),避免云层对植被指数计算的干扰。
三、植被指数计算函数:核心分析模块
该函数是代码核心,先对 Landsat 9 的表面反射率波段进行标准化处理,再基于不同波段组合计算 11 种植被指数,覆盖了常用的植被生长状况评价指标。
javascript
function addVegetationIndices(image) {
// 1. 波段缩放:Landsat 9官方反射率缩放参数
var scaled = image.select([
'SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6'
]).multiply(0.0000275).subtract(0.2);
// 2. 波段提取:定义蓝、绿、红、近红外、短波红外1波段
var blue = scaled.select('SR_B2'); // 蓝光波段
var green = scaled.select('SR_B3'); // 绿光波段
var red = scaled.select('SR_B4'); // 红光波段
var nir = scaled.select('SR_B5'); // 近红外波段
var swir1 = scaled.select('SR_B6'); // 短波红外1波段
// 3. 植被指数计算(以核心指数为例)
// 归一化植被指数(NDVI):最常用,反映植被覆盖度和长势
var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI').clamp(-1, 1);
// 增强植被指数(EVI):优化NDVI对高植被覆盖区饱和问题,引入蓝光波段校正大气影响
var evi = image.expression(
'2.5 * (NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1)',
{ NIR: nir, RED: red, BLUE: blue }
).rename('EVI').clamp(-1, 3);
// 土壤调整植被指数(SAVI):适用于土壤背景影响较大的区域(如稀疏植被区)
var savi = image.expression(
'(1.5 * (NIR - RED)) / (NIR + RED + 0.5)',
{ NIR: nir, RED: red }
).rename('SAVI').clamp(-1, 1);
// 其他指数(GNDVI、EVI2等)逻辑类似,均基于特定波段组合与数学模型
// 4. 指数添加:将计算的11种指数作为新波段添加到原始影像
return image.addBands([ndvi, gndvi, evi, ...]); // 省略部分指数
}
- 波段缩放:Landsat 9 的表面反射率原始数据为整数(避免存储精度损失),需通过官方参数
multiply(0.0000275).subtract(0.2)转换为实际反射率值(范围 0-1)。 - 指数取值限制:使用
clamp(min, max)限制指数范围(如 NDVI 经典范围 - 1~1),避免异常值影响分析结果。 - 波段对应关系:Landsat 9 的
SR_B2-SR_B6分别对应蓝、绿、红、近红外、短波红外 1 波段,是植被指数计算的核心数据源。
四、主流程:影像集加载与处理链
javascript
var l9 = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2')
.filterBounds(geometry) // 按研究区边界筛选影像
.filterDate('2024-05-01', '2024-09-30') // 筛选2024年生长季(5-9月)影像
.map(maskL9Clouds) // 应用云层掩膜
.map(addVegetationIndices); // 计算植被指数
- 影像集加载:
LANDSAT/LC09/C02/T1_L2是 GEE 平台上 Landsat 9 的 Level-2 级产品(经过大气校正、几何校正的表面反射率产品),可直接用于定量分析。 - 时空筛选:
filterBounds(geometry)确保只处理研究区内的影像,filterDate聚焦生长季(植被生长最活跃的时期,指数信号最强)。 - 处理链应用:
map()函数对影像集中的每一幅影像依次执行云层掩膜和植被指数计算,生成包含 11 种指数波段的处理后影像集。
五、批量导出:植被指数影像导出到 Google Drive
javascript
var viNames = ['NDVI', 'GNDVI', 'EVI', ...]; // 11种指数名称列表
viNames.forEach(function(viName) {
// 1. 时间平均:计算生长季内该指数的平均值(消除单幅影像的随机噪声)
var viImage = l9.select(viName).mean().rename(viName);
// 2. 导出配置
Export.image.toDrive({
image: viImage.clip(geometry), // 裁剪到研究区(去除冗余区域)
description: 'LANDSAT_LC09_' + viName, // 导出任务描述
fileNamePrefix: 'LANDSAT_LC09_' + viName, // 导出文件前缀
folder: 'landsat9_vi', // Google Drive中的目标文件夹
region: geometry, // 导出区域(与研究区一致)
scale: 30, // 空间分辨率(Landsat 9原生分辨率:30米)
crs: 'EPSG:4326', // 坐标系统(WGS84,全球通用地理坐标系)
maxPixels: 1e13 // 最大像素数(支持大范围研究区导出,避免像素超限报错)
});
});
- 时间平均:对生长季内的多幅影像取平均值,可减少云残留、大气波动等随机误差,得到更稳定的植被指数空间分布产品。
- 导出参数:
scale:30:保持与 Landsat 9 原生分辨率一致,避免重采样导致的信息损失。crs: 'EPSG:4326':WGS84 坐标系是 GIS 领域通用坐标系,方便后续与其他数据叠加分析。clip(geometry):仅导出研究区内的影像部分,减小文件体积,提高后续处理效率。
六、代码设计亮点
- 模块化设计:将云层掩膜、指数计算、导出功能拆分为独立函数,代码结构清晰,便于维护和修改(如更换传感器时仅需调整掩膜函数的比特位参数)。
- 批量处理 :通过
forEach()遍历指数列表,实现 11 种指数的自动计算与导出,避免重复代码,提高效率。 - 数据质量控制:包含云层掩膜、反射率标准化、指数取值限制三重质量控制,确保输出结果的可靠性。
七、适用场景与注意事项
适用场景:
- 区域尺度植被覆盖度评估、农业长势监测、生态环境变化分析等。
- 基于 Landsat 9 数据的长时间序列植被动态研究(需扩展时间范围筛选条件)。
注意事项:
- 研究区范围:
geometry需提前定义(如通过 GEE 导入矢量文件或绘制边界),否则会导致影像筛选失败。 - 影像可用性:若研究区在 2024 年 5-9 月无 Landsat 9 影像(如持续阴雨、传感器故障),会导致结果为空,需扩展时间范围或更换传感器。
- 导出限制:GEE 导出文件大小有限制,大范围研究区需确保
maxPixels参数足够(1e13 可支持约 100 万平方公里区域的 30 米分辨率影像导出)。 - 指数选择:不同指数有其适用场景(如 NDVI 适用于一般植被覆盖,SAVI 适用于稀疏植被区),需根据研究目的选择核心指数进行重点分析。
八、运行结果
点击RUN即可下载数据
下面是利用 ArcMap 软件对下载的数据进行可视化制图的结果:
NDVI:归一化植被指数
GNDVI:绿度归一化植被指数
EVI:增强型植被指数
EVI2:双波段增强型植被指数
DVI:差值植被指数
GDVI:绿度差值植被指数
RVI:比值植被指数
SAVI:土壤调整植被指数
OSAVI:优化土壤调整植被指数
MSAVI:修正土壤调整植被指数
NDPI:归一化色素指数
若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!