GEE中不同的landsat系列影像的波段名称、QA云位数有出入,生搬硬套网上现成的QA去云很容易出错。
不同的影像需要设置不同的QA_PIXEL波段名称和比特位数,都在GEE的数据波段说明文档里。当前版本似乎都是3-云、4-云阴影。了解了原理,后面遇到陌生影像也能处理。
def rmCloud(image):# for LANDSAT/LE07/C02/T1_L2# 选择QA_PIXEL波段qa = image.select('QA_PIXEL')# 创建云掩膜,QA_PIXEL波段的第3位表示云cloud_mask = qa.bitwiseAnd(1 << 3).eq(0)# 创建云影掩膜,QA_PIXEL波段的第4位表示云影cloud_shadow_mask = qa.bitwiseAnd(1 << 4).eq(0)# 结合云和云影掩膜mask_all = cloud_mask.And(cloud_shadow_mask)# 应用掩膜,去除云和云影return image.updateMask(mask_all)landsat7 = ee.ImageCollection("LANDSAT/LE07/C02/T1_L2")
landsat7.filterDate(i_date, f_date).map(rmCloud).median()