为学须刚与恒,不刚则隋隳,不恒则退 。——宋.冯子咸
前言
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')
结果图示如下:
五、小结
- GEE中3种常见的掩膜函数,mask, updateMask和unmask,其中mask作为即将弃用的函数,不建议过多使用。可以通过灵活运用updateMask和Mask实现数据的处理和分析。
- 运用掩膜分析,可以实现移花接木的神奇功能,很有意思
参考:
- https://developers.google.com/earth-engine/apidocs/ee-image-unmask?hl=en
- https://blog.csdn.net/SunStrongInChina/article/details/110388401