geemap学习笔记026:如何循环加载影像集合中的每一景影像,筛选,并且进行导出

前言

影像集合中通常包含多景可用的影像,但是我们有时候需要查看经过某一个区域的每一景影像,然后筛选最适合的一景,今天就来实现这个操作。

1 导入库并显示地图

import ee
import geemap

ee.Initialize()

2 加载Landsat 8数据

# 应用尺度缩放因子
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
  )

point = ee.Geometry.Point([119.13, 37.75]) #定义一个点坐标

dataset = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')\
    .filterDate('2021-05-01', '2021-07-01')\
    .filterBounds(point)  #筛选LC08数据时间和经过point点的影像

dataset = dataset.map(apply_scale_factors) #对数据应用缩放因子

visualization = {
    'bands': ['SR_B4', 'SR_B3', 'SR_B2'],
    'min': 0.0,
    'max': 0.3,
}  

Map = geemap.Map()
Map.centerObject(point, 8)
Map.add_layer(dataset, visualization, 'original')
Map

可以看到只有选择框,无法查看单景影像
geemap学习笔记026:如何循环加载影像集合中的每一景影像,筛选,并且进行导出_第1张图片

3 获取影像的基本信息–影像ID、数量

imageList = dataset.toList(dataset.size()) #以列表的形式返回集合元素,需要提供参数count
imageList

imageListSize = imageList.size().getInfo() #直接显示有几景数据
imageListSize

4 循环加载每一景影像

for i in range(imageListSize):  #循环加载单景影像
    image = ee.Image(imageList.get(i))  #读取每一景影像
    Map.addLayer(image, visualization, image.get("system:index").getInfo()) #将其添加到地图中
    
Map.centerObject(point,8)
Map.addLayer(point, {'color':'FFFF00'})
Map

可以看到4景影像已经分别添加到底图中进行显示,并且可以进行筛选
geemap学习笔记026:如何循环加载影像集合中的每一景影像,筛选,并且进行导出_第2张图片

5 数据导出

分为影像集合导出和单一影像导出

geemap.ee_export_image_collection_to_drive(
    dataset.select(['SR_B4', 'SR_B3', 'SR_B2']),folder='export', scale=30, maxPixels=1e13
) #将整个影像集合导出到云盘中,如何不进行选择波段,则会显示数据类型不一致的问题


image_per = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_121034_20210605') #获取单一影像

geemap.ee_export_image_to_drive(
    image_per, description= image_per.get("system:index").getInfo(), folder='export', scale=30
) #然后将单一影像导出到云盘中

后记

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

你可能感兴趣的:(geemap,遥感,Python,学习,笔记,linux)