python代码实现landsat影像波段融合
时间: 2023-03-21 20:03:09 浏览: 152
可以使用Python中的GDAL库和numpy库来实现Landsat影像的波段融合。以下是一个示例代码,假设你已经安装了GDAL和numpy库:
```python
from osgeo import gdal
import numpy as np
# 打开Landsat波段文件
band_red = gdal.Open('LC08_L1TP_123032_20220108_20220122_02_T1_B4.TIF')
band_green = gdal.Open('LC08_L1TP_123032_20220108_20220122_02_T1_B3.TIF')
band_blue = gdal.Open('LC08_L1TP_123032_20220108_20220122_02_T1_B2.TIF')
# 获取波段数据
red_data = band_red.ReadAsArray().astype(np.float32)
green_data = band_green.ReadAsArray().astype(np.float32)
blue_data = band_blue.ReadAsArray().astype(np.float32)
# 波段融合
rgb = np.stack((red_data, green_data, blue_data), axis=-1)
# 保存结果
driver = gdal.GetDriverByName('GTiff')
output = driver.Create('landsat_rgb.tif', rgb.shape[1], rgb.shape[0], 3, gdal.GDT_Float32)
output.SetProjection(band_red.GetProjection())
output.SetGeoTransform(band_red.GetGeoTransform())
for i in range(3):
output.GetRasterBand(i+1).WriteArray(rgb[:, :, i])
output.FlushCache()
output = None
```
这段代码打开了Landsat影像的红、绿、蓝三个波段文件,然后将它们的数据读取到numpy数组中。接着,使用numpy库的`stack`函数将三个波段数据按照通道组合成RGB图像。最后,将RGB图像保存为GeoTIFF格式的文件。