GEE:遥感影像处理中的常见掩膜函数的使用【updateMask】

33 篇文章 10 订阅
7 篇文章 4 订阅

为学须刚与恒,不刚则隋隳,不恒则退 。——宋.冯子咸


前言

GEE中掩膜相关函数主要3个,分别为mask、updateMask和unmask,需要辨析和掌握3个掩膜函数的用法


一、mask()函数

  • ee.Image.mask()

 获取或设置图像的掩码。输出图像保留输入图像的元数据和足迹。掩码从零变为另一个值的像素将用零填充,或在像素类型范围内最接近零的值填充。

蒙版图像。如果指定,则将输入图像复制到输出,但通过该图像的值给出掩码。如果这是单个波段,则将其用于输入图像中的所有波段。如果未指定,则返回从输入图像的掩码创建的图像,缩放到范围0:1

注意:设置掩码的版本将被弃用。要在以前未遮罩的像素上设置图像的遮罩,请使用 Image.updateMask。要取消屏蔽以前屏蔽的像素,请使用 Image.unmask。

使用方法:image.mask(),会将影像的掩膜区域与非掩膜区域用0和1区分开来,其中1代表为掩膜,0代表未掩膜。影像的边框范围内,黑色代表已被掩膜的区域,白色代表未掩膜区域。

二、updateMask()

ee.Image.updateMask()


在现有掩码不为零的所有位置更新图像的掩码。输出图像保留输入图像的元数据和足迹。

图像的新掩码,作为0, 1范围内的浮点值。如果此图像有一个波段,则用于输入图像中的所有波段;否则,必须具有与输入图像相同的波段数。

使用方法:image.updateMask(),updateMask会将影像上为0的区域掩膜掉,如果你希望某一景影像与另一景影像具有相同的掩膜,可以使用image2.updateMask(image1.mask().not())。

三、unmask()

ee.Image.unmask()

 在输入掩码为零的所有位置,将输入图像的掩码和值替换为另一个图像的掩码和值。输出图像保留输入图像的元数据。默认情况下,输出图像还保留输入的足迹,但将 sameFootprint 设置为 false 允许扩展足迹。

使用方法,image.unmask(number),unmask的作用在于它可以将掩膜掉的区域影像值替换为任意值,而未掩膜的区域保持原值。例如image.unmask(-9999)会将掩膜掉的区域中的值替换为-9999,这样影像就可以与arcgis无缝兼容了。

四、案例练习

python代码如下:

(1)影像数据

image = ee.Image('COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG')
trueColor = {
    'bands':['B4', 'B3', 'B2'], 
    'min':0, 'max':2800,
    'gamma':1.5
}

# 加载影像
Map = geemap.Map()
Map.addLayer(image, trueColor, 's2 image')
Map.centerObject(image)
Map

(2)相应的掩膜处理

# **********将掩膜区域全部替换为某一值,使用unmask**********
# # **********掩膜掉不符合条件的像素,使用updateMask**********
# 利用SWIR1创建land的布尔波段,其中water为0,land为1
landMask = image.select('B11').gt(100)

# 应用掩膜波段进行更新原影像,将使得影像上只要是掩膜等于0的像元均变为无效值
imageMasked = image.updateMask(landMask) # 仅保留了land

# 加载两幅影像, landMask影像可以明显看到划分为2种颜色,0为蓝色,1为绿色
Map.addLayer(landMask, {'palette': ['blue', 'lightgreen']}, 'Land mask')
Map.addLayer(imageMasked, trueColor, 'imageMasked')

# **********将掩膜区域全部替换为某一值,使用unmask**********
# 设置无效的掩膜值,将非掩膜区域替换为32767空值出现
imageUnmasked = imageMasked.unmask(32767)
Map.addLayer(imageUnmasked, trueColor, 'image unmasked')

# 将掩膜像素重置为有效,使用默认值 0 填充,输入足迹
maskResetFootprint = imageMasked.unmask()
Map.addLayer(maskResetFootprint, trueColor, 'maskResetFootprint')

# 用另外1幅影像像元数值替换
fill = ee.Image('COPERNICUS/S2_SR/20200618T184919_20200618T190341_T10SEG')
imgFill = imageMasked.unmask(fill)
Map.addLayer(fill, trueColor, 'new s2')
Map.addLayer(imgFill, trueColor, 'image filled')

结果图示如下:

 


五、小结

  1. GEE中3种常见的掩膜函数,mask, updateMask和unmask,其中mask作为即将弃用的函数,不建议过多使用。可以通过灵活运用updateMask和Mask实现数据的处理和分析。
  2. 运用掩膜分析,可以实现移花接木的神奇功能,很有意思

参考:

  1. https://developers.google.com/earth-engine/apidocs/ee-image-unmask?hl=en
  2. https://blog.csdn.net/SunStrongInChina/article/details/110388401
  • 17
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值