本文主要是介绍gdal合成多个波段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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))
参考
这篇关于gdal合成多个波段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!