之前写了一篇 《GDAL RasterIO使用说明》
http://blog.csdn.net/liminlu0314/article/details/7072224
,很多人对于RasterIO这个函数的用法还是有很多的不明白,可能之前的那篇文章没有写的很清楚,下面再对这个函数进行说明。
在进入主题之前,我们先了解一下图像的基本存储方式。所谓的图像,先用单波段图像说明,图像就是一个很大的二维矩阵,这个矩阵的宽高就是图像的宽高,矩阵里面的元素值就是图像的像元值(这里多说一下,对于DEM数据,很多人问怎么读取DEM的高程值,DEM数据的话,高程值就是像元值)。比如下面的图1所示:这个图像的大小是600×600×3。
图1 测试图像 600×600×3
首先说明一下GDALRasterBand的RasterIO函数,波段类的RasterIO函数相比GDALDataset类的RasterIO函数比较简单,先从这个简单的说起。图像还是以上面的图为例,我们只取第一个波段为例进行说明。第一个波段的图像如下图所示:
图2 第一波段示例
我们再把GDALRasterBand的RasterIO函数接口拿过来,形式如下:
CPLErr GDALRasterBand::RasterIO(
GDALRWFlag
eRWFlag
,int
nXOff
,int
nYOff
,int
nXSize
,int
nYSize
,void *
pData
,int
nBufXSize
,int
nBufYSize
,
GDALDataType
eBufType
,int
nPixelSpace
,int
nLineSpace
)
第一个参数eRWFlag就是读写标记,用来指定你是读取图像还是写入图像,很简单。
接下来的四个参数是用来指定读写图像的范围的,其中前两个用来说明读取的位置,起始行列号,后两个是读写图像的宽度和高度,比如