前面写了用GDAL读取数据集和波段信息,使用GDAL最重要的就是读取图像的波段数据,因为对图像的处理就是对数据(也可以说是像素点)的处理。这里讨论下gdal读取波段数据。
读取波段数据
gdal读取波段数据的接口为RasterIO,这是一个及其重要的函数,GDALDataset和GDALRasterBand类都有这个函数,利用GDALDataset类中的RasterIO时可以按指定波段数并按一定的波段序读取数据,GDALRasterBand类中的RasterIO可以读取该波段的数据,读数据时可以全部读取、读取某一块或抽样读取。用的多的是GDALRasterBand类的RaterIO函数,下面就说下这个函数,函数原型如下:
CPLErr GDALRasterBand::RasterIO (
GDALRWFlag eRWFlag, //读写标志。GF_Read:读取数据到缓存GF_Write:将缓存中数据写入数据集的波段
int nXOff, //起始X方向像素位置
int nYOff, //起始Y方向像素位置
int nXSize, //数据的X方向像素大小
int nYSize, //数据的Y方向像素大小 注:以上四个参数制定了要读取数据的位置和大小
void * pData, //缓存
int nBufXSize, //缓存的X方向像素大小
int nBufYSize, //缓存的Y方向像素大小
GDALDataType eBufType, //数据类型,指定缓存中的数据类型
int nPixelSpace, //读取每个像素的字节偏移量,即下一个读取的的像素与此时读取的像素的字节距离,默认为0
int nLineSpace //读取每一行像