def synthesis_bands(dst_list, outfile):
"""
将多光谱波段合成一个tif
:param dst_list: 输入待合成文件的列表
:param outfile: 影像的输出文件夹
"""
dataset_init = gdal.Open(dst_list[0])
# 创建待输出的图
tiff_driver = gdal.GetDriverByName('GTiff')
dst_name = outfile
out_ds = tiff_driver.Create(dst_name, dataset_init.RasterXSize, dataset_init.RasterYSize,
4) # 本文合成的对象是4个波段,按照自己的需要改变
out_ds.SetProjection(dataset_init.GetProjection())
out_ds.SetGeoTransform(dataset_init.GetGeoTransform()) # 获得原始波段的地理信息
# 往图中填各波段
for i in range(len(dst_list)):
dataset = gdal.Open(dst_list[i])
band_temp = dataset.GetRasterBand(1)
out_ds.GetRasterBand(1 + i).WriteArray(band_temp.ReadAsArray()) # 注意band从1开始,所以要加一
del out_ds
print("波段合成成功")
使用
if __name__ == '__main__':
img_list =[
'./Data/brands1.tif',
'./Data/brands2.tif',
'./Data/brands3.tif',
'./Data/brands4.tif',
]
# synthesis_bands(img_list,'./Output/brands_synthesis.tif')
# 打开遥感影像
ds = gdal.Open('./Output/brands_synthesis.tif', gdal.GA_ReadOnly)
# 获取波段个数
band_count = ds.RasterCount
print("波段数量为:{0}".format(band_count))