Landsat 8是美国国家航空航天局(NASA)和美国地质调查局(USGS)共同推出的一颗遥感卫星,于2013年发射升空。它可以监测地球的表面,获取高分辨率的影像数据,进而对地球的变化、环境保护和资源管理等方面提供支持。其中,波段是根据遥感数据的不同特征分出来的,该文将从不同的角度来详细探讨Landsat 8的波段特性。
一、Landsat 8波段简介
Landsat 8的8个波段,是指在不同的光谱波段范围内的数码成像。它们分别是:
B1: Coastal Aerosol
B2: Blue
B3: Green
B4: Red
B5: Near Infrared (NIR)
B6: Shortwave Infrared 1 (SWIR1)
B7: Shortwave Infrared 2 (SWIR2)
B10: Thermal Infrared 1 (TIR1)
B11: Thermal Infrared 2 (TIR2)
其中,B1到B5波段是较为常见的波段,也比较容易理解,B6到B7波段便十分神奇,涉及到了地球地表上的化学成分成分,而B10和B11波段分别代表TIR1和TIR2,用于探测地表温度。
二、 Landsat 8波段的应用
1、植被遥感分析
长波红外波段(NIR)在植被遥感分析中经常被使用,因为它可以测量植被的健康状况和处理植被ECO系统的动态。NIR对植物冠层的草地盖度和植物的食物链中地位有直接作用。此外,其他波段,如B3和B4波段往往被用于检测叶片的含绿量,这有助于区分植被的种类。
2、火山爆发监测
火山爆发需要发射大量的气体和灰尘到大气层,易导致降雨酸化、气候变化、火山灰等危害,所以我们希望可以及早发现火山的异常。而此时,从B10和B11波段中可以感知到地表的温度异常,因此可以利用这两个波段来研究及监测火山顶发生的变化。
3、水体检测
水体检测和植被遥感分析类似,使用B1、B2、B3等波段来检测水体并区分不同类型的水体。其中,B1波段的范围在0.43到0.45微米,属于紫外波段,是区分水体和陆地的主要波段之一。此外,B2波段属于浅蓝色光谱区,也可以用于检测海洋和湖泊中的水。
三、 Landsat 8 波段获取
获取Landsat 8波段数据的方法较多,下面介绍两种:
1、利用USGS官网下载API下载
import requests
import json
def download(url, save_path):
response = requests.get(url)
with open(save_path, "wb") as f:
f.write(response.content)
print("文件下载完成!")
base_api = "https://earthexplorer.usgs.gov/inventory/json/v/1.4.0/"
login_api = base_api + "login"
search_api = base_api + "search"
download_api = base_api + "download"
username = "{USGS用户名}"
password = "{USGS密码}"
# 获取访问令牌
res = requests.post(login_api, json=dict(username=username, password=password))
token = res.json()['data']
# 构造查询条件
query = dict(
datasetName="LANDSAT_8_C1",
spatialFilter=dict(
filterType="mbr",
lowerLeft=dict(
latitude=34,
longitude=116
),
upperRight=dict(
latitude=35,
longitude=118
)
),
maxResults=1
)
# 查询数据
res = requests.post(search_api, json=dict(json.dumps(query), token=token))
result = res.json()['data'][0]
# 构造下载信息
download = [
dict(
entityId=result['entityId'],
contentType="L1TP",
outputFormat="GEOTIFF",
bandId=4
),
dict(
entityId=result['entityId'],
contentType="L1TP",
outputFormat="GEOTIFF",
bandId=5
),
dict(
entityId=result['entityId'],
contentType="L1TP",
outputFormat="GEOTIFF",
bandId=8
),
]
# 获取下载地址
res = requests.post(download_api, json=dict(download=json.dumps(download), token=token))
url_list = res.json()['data']
# 下载数据
for i, url in enumerate(url_list):
download(url, f"./Landsat_8_b{i+1}.tif")
2、 利用GDAL库加载波段数据
import gdal
def read_tiff_file(filepath):
"""
读取 tiff 文件数据
:param filepath: 文件路径
:return: 多波段数据
"""
ds = gdal.Open(filepath)
band_count = ds.RasterCount
im_data = []
for i in range(band_count):
band = ds.GetRasterBand(i + 1)
im = band.ReadAsArray()
im_data.append(im)
return im_data
tiff_path = "./Landsat_8_b4.tif"
im_data = read_tiff_file(tiff_path)
#print(im_data)
四、 Landsat 8波段的合成和可视化
对于Landsat 8影像数据,我们通常使用RGB三原色图像来表达。下面是基于B4、B3、B2波段生成的一张RGB合成图像:
from PIL import Image
im_r = Image.open("./Landsat_8_b4.tif")
im_g = Image.open("./Landsat_8_b3.tif")
im_b = Image.open("./Landsat_8_b2.tif")
im_rgb = Image.merge("RGB", (im_r, im_g, im_b))
im_rgb.show()
同样,我们也可以将Landsat 8各波段可视化:
import matplotlib.pyplot as plt
tiff_path = "./Landsat_8_b{0}.tif"
for i in range(1, 9):
im_data = read_tiff_file(tiff_path.format(i))
plt.imshow(im_data[0], cmap='gray')
plt.title(f"Landsat 8波段 B{i}")
plt.show()
五、Landsat 8应用案例
1、洞庭湖水体面积提取
洞庭湖是中国最大的淡水湖之一,在湖岸带的生态和经济价值尤为重要。基于遥感数据的水体遥感提取方法已经成为研究水体分布、监测水体质量、预测水体环境效应的重要技术手段。利用Landsat 8卫星数据可以获取到高精度的洞庭湖遥感影像数据,并进行水体提取、水位变化监测以及相关数据处理,为洞庭湖的管理提供科学依据。
2、长江三角洲潮滩生态监测
长江三角洲有着丰富的潮滩资源,作为保护自然生态系统,监测、评价潮滩生态环境的状况已经成为生态环境科学研究的焦点。红外波段的影像可以反映地表物体的热辐射特征,因此利用Landsat 8 海陆温差的热辐射数据进行长江三角洲地区的潮滩监测,可以为相关科学研究提供数据支持和参考。