geemap学习笔记050:掩膜操作

本文介绍了如何在GoogleEarthEngine中使用mask、selfMask和updateMask功能对Sentinel-2影像数据进行掩码操作,包括全图掩码、自掩码以及针对特定波段的更新掩码,以实现数据清理和可视化处理。
摘要由CSDN通过智能技术生成

前言

在进行相关操作时,往往需要对一部分范围的值进行掩膜,以去掉这一部分的值。Earth Engine中已经提供了相关的掩膜操作,下面将会详细的介绍一下maskselfMaskupdateMask

1 导入库并加载数据

import ee
import geemap

ee.Initialize()
# 加载一景 Sentinel-2 地面反射率数据
img = ee.Image('COPERNICUS/S2_SR/20210109T185751_20210109T185931_T10SEG')
true_color_viz = {
    'bands': ['B4', 'B3', 'B2'],
    'min': 0,
    'max': 2700,
    'gamma': 1.3,
}

2 mask

相当于是对整幅影像进行一个掩膜,有像素值的区域为1,无像素值区域为0。

Map = geemap.Map()
Map.centerObject(img, 10)
Map.add_layer(img, true_color_viz, 'Sentinel-2 image')

# 获取所有图像波段的 mask,每个波段都是一个独立的mask。 有像素值为 1,无像素值为 0。
multi_band_mask_img = img.mask()
Map.add_layer(multi_band_mask_img, None, 'Multi-band mask image')

# 获取单一波段的 mask
single_band_mask_img = img.select('B1').mask()
Map.add_layer(single_band_mask_img, None, 'Single-band mask image')
Map

image.png

3 selfMask

这相当于是一个自身掩膜,先选择一个波段构建布尔型值,只包括0和1,然后将掩膜对自身进行掩膜,掩膜中的0值将会变为None。

Map = geemap.Map()
Map.centerObject(img, 10)
# 从 SWIR1 波段创建布尔型陆地掩码,水的值为 0,陆地的值为 1。
land_mask = img.select('B11').gt(100)
display('Land mask', land_mask)
Map.add_layer(land_mask, {'palette': ['blue', 'lightgreen']}, 'Land mask')

# 像素值等于 0(水)的部分将会被掩膜掉,没有数值。
land_mask_masked = land_mask.selfMask()
display('Land mask, masked', land_mask_masked)
Map.add_layer(land_mask_masked, {'palette': ['gold']}, 'Land mask, masked')

Map

image.png

4 updateMask

这一步是在selfMask的基础上,对原始影像进行更新掩膜,也可以指定特定的波段进行掩膜。

Map = geemap.Map()
Map.centerObject(img, 10)

# 将单波段陆地掩模应用于所有图像波段,掩模中等于 0 的像素值在图像中变得无效。
img_masked = img.updateMask(land_mask)
display('Image, land only', img_masked)
Map.add_layer(img_masked, true_color_viz, 'Image, land only')

# 将mask应用于特定的波段
img_band_subset = img.select(['B4', 'B3', 'B2'])
band_specific_masks = img_band_subset.gt(200)
img_band_subset_masked = img_band_subset.updateMask(band_specific_masks)
display('Multi-band mask image', band_specific_masks)
display('Image, variable band masks', img_band_subset_masked)
Map.add_layer(band_specific_masks, None, 'Multi-band mask image')
Map.add_layer(
    img_band_subset_masked, true_color_viz, 'Image, variable band masks'
)

# 0 到 1 之间的浮点数mask将用于定义可视化中的不透明度。
land_mask_float = land_mask.add(0.65)
img_masked_float = img.updateMask(land_mask_float)
display('Image, partially transparent', img_masked_float)
Map.add_layer(img_masked_float, true_color_viz, 'Image, partially transparent')
Map

后记

大家如果有地信遥感方面的问题需要请教或者有项目需要合作,可以在闲 鱼软件的用户中搜索:遥感GIS工作室,请认准头像,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值