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 = outfileout_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_dsprint("波段合成成功")
使用
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.RasterCountprint("波段數量為:{0}".format(band_count))
參考