前言
影像集合中通常包含多景可用的影像,但是我们有时候需要查看经过某一个区域的每一景影像,然后筛选最适合的一景,今天就来实现这个操作。
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
可以看到只有选择框,无法查看单景影像
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景影像已经分别添加到底图中进行显示,并且可以进行筛选
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”,谢谢。