本函数是利用rgb三波段影像,计算RGBGDSI植被指数,并将该植被指数作为1个波段与原始影像合并生成一个4波段影像数据,用以增加影像数据信息量。由于影像数据量可能很大,一次将1个波段读入内存可能会发生内存溢出的情况 本函数使用了分块读取和写入,block_size是分块大小,可根据实际情况调整,默认值为一次读入、写入5000行列数据
import sys
import math
import numpy
from osgeo import gdal
from osgeo import gdal_array
def muti_bands_combine(input_raster, output_raster, block_size=5000):
'''input_raster输入影像的完整路径
output_raster输出影像的完整路径'''
in_daopen = gdal.Open(input_raster)
input_band1_inform = in_daopen.GetRasterBand(1)
input_band2_inform = in_daopen.GetRasterBand(2)
input_band3_inform = in_daopen.GetRasterBand(3)
# 栅格数据行列数
xsize = input_band1_inform.XSize
ysize = input_band1_inform.YSize
# 创建输出栅格数据的文件驱动
output_drive = gdal.Open(input_raster).GetDriver()
# 创建输出栅格数据的多波段栅格文件
output_dataset = output_drive.Create(output_raster, xsize, ysize, 4, gd