geemap学习笔记041:Landsat Collection2系列数据去云算法总结

发布时间:2024年01月05日

前言

去云算法是进行数据处理中所要进行一步重要操作,Sentinal-2数据中已经提供了去云算法,但是Landsat Collection2系列数据中并没有提供去云算法,下面就以Landsat 8 Collection2为例进行介绍。

1 导入库并显示地图

import ee
import geemap

ee.Initialize()
Map = geemap.Map()
Map

2 Landsat 8 Collection2去云

Map = geemap.Map()

# Landsat-8 Collection2 去云算法
def rmL8CloudNew(image):
  #根据'QA_PIXEL'波段,如果设置了云位(3)并且云阴影位(4)较高,则认为它是坏像素。
  cloudShadowBitMask = (1 << 4)
  cloudsBitMask = (1 << 3)
  qa = image.select('QA_PIXEL')
  mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0) \
                 .And(qa.bitwiseAnd(cloudsBitMask).eq(0))
  return image.updateMask(mask) \
              .copyProperties(image) \
              .copyProperties(image, ["system:time_start"])

# 应用缩放因子
def apply_scale_factors(image):
  optical_bands = image.select('SR_B.').multiply(0.0000275).add(-0.2)
  thermal_bands = image.select('ST_B.*').multiply(0.00341802).add(149.0)
  return image.addBands(optical_bands, None, True).addBands(
      thermal_bands, None, True
  )

centroid = ee.Geometry.Point([-122.4439, 37.7538]) #创建一个点坐标

collection = (
    ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') #Landsat 8数据
    .filterDate('2021-08-01', '2021-09-01') #时间
    .filterBounds(centroid) #筛选经过点的数据
    .filter(ee.Filter.gt('CLOUD_COVER', 20)) #获取一幅云量较多的数据
    .map(rmL8CloudNew)  #进行map去云
    .map(apply_scale_factors) #应用缩放因子
) 

image = collection.first() #选择第一景数据

vis = {
    'bands': ['SR_B4', 'SR_B3', 'SR_B2'],
    'min': 0.0,
    'max': 0.3,
}#设置可视化参数

Map.centerObject(image, 8) #设置中心
Map.addLayer(image, vis, 'Landsat-8')
Map

未进行去云之前
image.png

去云之后的结果,其结果基本就是将云像素给去掉。
image.png

后记

大家如果有问题需要交流或者有项目需要合作,可以加Q Q :504156006详聊,加好友请留言“CSDN”,谢谢。

文章来源:https://blog.csdn.net/qq_41951977/article/details/135340043
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。