在遥感影像处理领域,Landsat 8卫星提供了两种主要的数据产品:Surface Reflectance(SR)数据和Tier 1 Level 2(T1_L2)数据。这两种数据虽然都源自同一颗卫星,但在预处理流程和质量控制方面存在显著差异。
SR数据(产品标识为LANDSAT/LC08/C01/T1_SR)是经过大气校正的地表反射率产品,适用于需要精确地表反射率的研究。其QA波段采用CFMASK算法生成,包含填充值、晴空、水体、云阴影、雪和云等多个掩膜信息。每个像素的QA值实际上是一个位掩码(bitmask),通过不同位的组合来表示多种地表和大气条件。
T1_L2数据(产品标识为LANDSAT/LC08/C02/T1_L2)是较新的Collection 2级别产品,采用了改进的预处理流程和质量评估体系。与SR数据相比,T1_L2不仅包含地表反射率信息,还整合了更多的辅助数据和质量指标。其QA波段同样采用位掩码形式,但具体的位定义和算法有所优化。
关键区别:SR数据属于Collection 1级别,而T1_L2属于Collection 2级别。Collection 2在几何校正、辐射定标和云掩膜算法等方面都有显著改进。
对于SR数据(LANDSAT/LC08/C01/T1_SR),去云操作主要基于pixel_qa波段的位掩码解析。以下是典型的去云函数实现:
javascript复制function maskCloudsSR(image) {
// 提取QA波段
var qa = image.select('pixel_qa');
// 创建云和云阴影掩膜
var cloud = qa.bitwiseAnd(1 << 5).eq(0); // 第5位表示云
var shadow = qa.bitwiseAnd(1 << 3).eq(0); // 第3位表示云阴影
// 应用掩膜并返回结果
return image.updateMask(cloud.and(shadow));
}
这个函数的工作原理:
T1_L2数据(LANDSAT/LC08/C02/T1_L2)采用了更复杂的QA_PIXEL波段,其位定义有所不同:
javascript复制function maskCloudsT1L2(image) {
var qa = image.select('QA_PIXEL');
var cloud = qa.bitwiseAnd(1 << 3).eq(0); // 第3位表示云
var shadow = qa.bitwiseAnd(1 << 4).eq(0); // 第4位表示云阴影
var cirrus = qa.bitwiseAnd(1 << 2).eq(0); // 第2位表示卷云
return image.updateMask(cloud.and(shadow).and(cirrus));
}
主要改进点:
实测发现:T1_L2的云检测对薄云更敏感,能减少云污染导致的误判,但可能会过度屏蔽一些边缘区域。
我们以辽宁省2022年生长季(5-9月)的影像为例,对比两种数据源的去云效果:
javascript复制// SR数据
var srCol = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterBounds(roi) // roi是辽宁省的感兴趣区域
.filterDate('2022-05-01', '2022-09-30')
.map(maskCloudsSR);
// T1_L2数据
var t1l2Col = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(roi)
.filterDate('2022-05-01', '2022-09-30')
.map(maskCloudsT1L2);
通过GEE的交互式地图可以观察到:
SR数据:
T1_L2数据:
我们使用云覆盖百分比和有效像素数作为评估指标:
| 指标 | SR数据 | T1_L2数据 |
|---|---|---|
| 平均云覆盖率(%) | 12.3 | 8.7 |
| 有效像素占比(%) | 78.5 | 85.2 |
| 边缘模糊现象 | 较明显 | 轻微 |
对于要求严格的应用,可以结合多源数据:
javascript复制function enhancedCloudMask(image) {
// 基本QA掩膜
var baseMask = maskCloudsT1L2(image);
// 添加NDSI雪掩膜(针对辽东山区)
var ndsi = image.normalizedDifference(['B3', 'B6']).lt(0.4);
// 添加NDVI植被检查(减少秋季雾霾影响)
var ndvi = image.normalizedDifference(['B5', 'B4']).gt(0.2);
return baseMask.updateMask(ndsi.and(ndvi));
}
对于时序分析,可采用额外的时间滤波:
javascript复制var filteredCol = t1l2Col
.map(enhancedCloudMask)
.filter(ee.Filter.maxDifference({
difference: 30 * 24 * 3600 * 1000, // 30天
leftField: 'system:time_start',
rightField: 'system:time_start'
}));
辽宁省不同地区可能需要不同参数:
现象:影像中仍有明显云层残留
解决方案:
现象:大片有效区域被误判为云
排查步骤:
处理大面积区域(如整个辽宁省)时:
根据项目需求选择合适的数据源:
选择SR数据当:
选择T1_L2数据当:
对于辽宁省这类中纬度地区,特别是考虑到其复杂地形和季节变化,推荐使用T1_L2数据配合增强型去云算法,可以获得更干净的分析结果。