想接做网站的单子建设企业网站e路护航
【GEE学习笔记】报错解决:Sentinel-2 数据集分为 L1C(大气顶层)和 L2A(地表反射率),如何选择波段进行去云处理?
【GEE学习笔记】报错解决:Sentinel-2 数据集分为 L1C(大气顶层)和 L2A(地表反射率),如何选择波段进行去云处理?
文章目录
- 【GEE学习笔记】报错解决:Sentinel-2 数据集分为 L1C(大气顶层)和 L2A(地表反射率),如何选择波段进行去云处理?
- 报错信息
- ⚠️ 报错原因分析
- ✅ 解决方案
- 方案 1:改用 `COPERNICUS/S2_SR` 数据集
- 方案 2:改用 `MSK_CLASSI_OPAQUE` 波段
 
- 推荐方案
 
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
 祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/gaoxiaoxiao1209/article/details/146181282
报错信息
RGB Image: Tile error: Error in map(ID=20230901T043711_20230901T044129_T46RCT): 
Image.select: Band pattern 'QA60' did not match any bands. Available bands: [B1, B2, B3, B4, B5, B6, B7, B8, B8A, B9, B10, B11, B12, MSK_CLASSI_OPAQUE, MSK_CLASSI_CIRRUS, MSK_CLASSI_SNOW_ICE]
你的代码报错的原因是 QA60 波段不存在,但是你的 maskS2clouds(image) 函数中尝试选择 QA60 进行去云处理。
⚠️ 报错原因分析
Sentinel-2 数据集分为 L1C(大气顶层)和 L2A(地表反射率):
- COPERNICUS/S2(L1C)没有- QA60波段,但有- MSK_CLASSI_OPAQUE、- MSK_CLASSI_CIRRUS
 等。
- COPERNICUS/S2_SR(L2A) 有- QA60波段,用于标记云和卷云。
你的代码使用的是 COPERNICUS/S2(L1C 级别),但 QA60 只在 COPERNICUS/S2_SR(L2A 级别)中可用,因此 image.select('QA60') 失败,导致代码崩溃。
✅ 解决方案
方案 1:改用 COPERNICUS/S2_SR 数据集
 
如果你希望继续使用 QA60 去云,需要将数据集换成 COPERNICUS/S2_SR:
var dataset = ee.ImageCollection('COPERNICUS/S2_SR')  // 改成 S2_SR 版本.filterBounds(roi).filterDate('2023-05-01', '2023-10-31').filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 10)).map(maskS2clouds).median().clip(roi);- 🔹 优点:可以使用 QA60进行去云,适合研究 地表反射率
- 🔹 缺点:部分地区 L2A 级别数据可能不可用
方案 2:改用 MSK_CLASSI_OPAQUE 波段
 
如果仍要使用 COPERNICUS/S2,可以改用 MSK_CLASSI_OPAQUE(不透明云掩膜)代替 QA60:
function maskS2clouds(image) {var mask = image.select('MSK_CLASSI_OPAQUE').eq(0);  // 0 表示无云return image.updateMask(mask).divide(10000);
}- 🔹 优点:适用于 COPERNICUS/S2数据集
- 🔹 缺点:可能不如 QA60精确
推荐方案
- 如果 可以 使用 COPERNICUS/S2_SR,请使用 方案 1,因为QA60更适合云去除。
- 如果 必须 使用 COPERNICUS/S2,请使用 方案 2,用MSK_CLASSI_OPAQUE代替QA60。
✅ 改动后,你的代码应该能顺利运行! 🚀
