GEE常用的除云函数及如何理解并运用#Landsat#Sentinel

本文详细介绍了如何使用Sentinel-2和Landsat遥感数据的除云函数,重点讲解了质量控制波段如QA_PIXEL和QA60的作用,以及如何通过bitwiseAnd函数去除云和云影。提醒读者注意不同版本Landsat数据中质量控制波段的变化可能导致的处理差异。
摘要由CSDN通过智能技术生成
1、代码
(1)Sentinel-2
function maskS2clouds(image) {
    var qa = image.select('QA60');
    var mask = qa.bitwiseAnd(1 << 10).eq(0).and(qa.bitwiseAnd(1 << 11).eq(0));
  return image.updateMask(mask).divide(10000);}

Sentinel-2除云函数官方有提供。

(2)Landsat 5/7/8/9
function moveclouds(image) {
    var qa = image.select('QA_PIXEL');
    var cloudMask = qa.bitwiseAnd(1 << 3).eq(0).and(qa.bitwiseAnd(1 << 4).eq(0));
  return image.updateMask(cloudMask);}

GEE上的Landsat数据集经历过一次更新,更新后的Landsat 5/7/8/9遥感数据的质量控制波段保持一致,因此可通用上述除云函数。

注:以前(更新前)Landsat的质量控制波段为“qa_pixel”,代表云和云影的Bit分别是Bit 5和Bit 3(图1)。目前的质量控制波段改为“QA_PIXEL”,代表云和云影的Bit分别是Bit 3和Bit 4(图2)。

  

图1                                  图2

!这里特别指出,有些资料中的除云函数使用的仍然是之前的Bit,将其用于目前的Landsat图像除云会出现一定错误,希望大家注意辨别。

2、如何理解

除云函数一般涉及到影像的质量控制波段,比如Landsat的“QA_PIXEL”波段、Sentinel的“QA60”波段。首先梳理影像的质量控制波段,以Landsat的“QA_PIXEL”波段为例进行说明:

(1)质量控制波段

Landsat的“QA_PIXEL”波段包括两种情况(图3、图4):

①一个Bit存储一个信息(图3):在这些Bit下,0表示无,1表示有。比如图像中某个像元的“QA_PIXEL”波段值(二进制)的第三个Bit上的数字是1,则表示该像元是有云像元。

②两个Bit存储一个信息(图4):有这种情况的存在是因为需要存储的信息不足以通过0、1来表示。比如Bits 8-9存储的是云量的等级信息,分为无、低、中、高四级,此时就需要0、1、2、3四个数字表示,而只有一位的二进制数字最多只能表示0和1两个十进制数字,那么就需要通过两个位(Bit)组合的方式才足以表示0、1、2、3。如果图像中某个像元的“QA_PIXEL”波段值(二进制)的第8、9个Bit上的数字是“00”,则表示该像元的云量等级为无云;同理,“01”表示低云;“10”表示中云;“11”表示高云。

图3                                  图4

(2)“bitwiseAnd”函数
var cloudMask = qa.bitwiseAnd(1 << 3).eq(0).and(qa.bitwiseAnd(1 << 4).eq(0));

这里面的“bitwiseAnd”函数可以理解为:“按位与操作符”,其功能通俗的说就是“按位与…对应”,“<< ”是移位符。qa.bitwiseAnd(1 << 3)”的意思是,将二进制的数字1向左移动三位,得到一个二进制“1000”后,将这个二进制的Bit 3位(从右往左数第四个数)与质量波段的波段值(转为二进制后)的Bit 3位(从右往左数第四个数)相对应,如果二者相同,表示该像元有云,则将该像元的像元值赋值为“1000”的十进制,也就是8;若二者不同,则将该像元的像元值赋值为0。

那么,“qa.bitwiseAnd(1 << 3).eq(0)”是什么意思呢?在理解它之前,我们首先需要知道“Image.eq(number)”、“Image.gt(number)”、“Image.lt(number)”等语句的含义,这些语句返回的都是一个二值化图像(符合条件的返回1,不符合条件的返回0),并不是直接返回Image中符合条件的部分。

所以,当一个像元是有云像元时,按照前面的理解,qa.bitwiseAnd(1 << 3)”会将该像元的像元值赋值为8,在此基础上,增加“.eq(0)”,这将把该像元的像元值赋值为0;当一个像元是无云像元时,qa.bitwiseAnd(1 << 3)”会将该像元的像元值赋值为0,在此基础上,增加“.eq(0)”,这将把该像元的像元值赋值为1。因此,最终得到的是一个二值化的图像,像元值为1的像元表示无云像元,像元值为0的像元表示有云像元。

同理,如果还想除去云影等其他干扰数据质量的因素,可以使用存储相应信息的Bit来实现,例如,存储云影信息的Bit 4,在代码中增加一个限制条件即可,即“.add(qa.bitwiseAnd(1 << 4).eq(0))”

根据上述操作,生成一个“cloudmask”,再利用“updateMask”函数,就可实现去云和去云影

  • 33
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
GEE(Google Earth Engine)是一种基于计算的地理信息处理平台,而Landsat则是一系列卫星数据,用于地球表面的观测和监测。 在使用GEE进行遥感数据处理时,如何去除云是一个关键问题。的存在会对地表观测数据造成干扰,降低数据的质量和精度。GEE提供了一些方法和工具,可以帮助用户在处理Landsat数据时去除云。 首先,GEE提供了一种称为掩膜(Cloud Masking)的技术。这种技术利用Landsat数据中的信息,通过算法或规则将区域标记出来,然后用户可以根据标记的区域进行进一步处理。通过掩膜,可以有效降低对观测数据的干扰。 其次,GEE还提供了基于多时相数据的对影像的去除方法。通过比较多个时间点的Landsat影像,可以发现在多个时间点上都存在的覆盖区域,并将其识别为。这种方法可以减少由于的遮挡导致的数据缺失和噪声。 此外,GEE还支持用户进行覆盖率的计算和分析。用户可以利用GEE提供的工具,对Landsat影像中的覆盖区域进行统计和可视化。通过分析覆盖率的空间和时间变化,可以了解特定地区的分布情况,从而更好地利用Landsat数据。 综上所述,GEELandsat数据处理中提供了多种方法来去除云,包括掩膜和基于多时相数据的对影像去除等。这些方法可以帮助用户减少对地表观测数据的干扰,提高数据的质量和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值