gdal中rasterio用法_GDAL 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

)

CPLErr GDALDataset::RasterIO ( GDALRWFlag eRWFlag,

int nXOff

,int nYOff,

int

nXSize

,int

nYSize,

void

*

pData

,int

nBufXSize,

int

nBufYSize

,GDALDataType

eBufType,

int nBandCount

,int * panBandMap,

int nPixelSpace

,int nLineSpace,

int nBandSpace

)

第一个参数

RWFlag

来指定是读数据还是写入数据,

其值只能有两个即:

GF_Read

GF_Write

,分别表示读取数据和写入数据。

第二个和第三个参数

nXOff,

nYOff

表示

读取或者写入图像数据的起始坐标图像的左上

角坐标为(

0

0

)

第四个和第五个参数

nXSize, nYSize

表示

读取或者写入图像数据的窗口大小

nXSize

表示宽度,

nYSize

表示高度,均使用像素为单位,该宽度和高度是从第二个和第三个参数

处开始计算。

这两个参数和第二第三个参数一起表示就是,

读取和写入图像的窗口位置和大

小。

第六个参数

pData

是指向存储数据的一个指针。

如果是写入数据,那么会将

pData

的数据写入到栅格图像中去

如果是读取数据,那么会将栅格数据中的数据读入到

pData

中。

pData

的真实数据类型是通过后面的

eBufType

参数来指定的。

GDT_Byte

就是代表

的是一个

8U

的数据类型,如果是

GDT_Float32

就表示的是一个

32F

(

float

)的数据类型。

RasterIO

会自动将读入的数据按照参数

eBufType(

第九个参数

)

指定的数据类型进行转换,

需要注意的是,

将浮点数转换为整数时,

将对数据进行四舍五入处理;

而且从一个大的存储

单位转换到一个较小的存储单位是所进行的操作是截断操作而不是按照比例缩小操作,

比如

原来的实际数据中

float

的存取数据范围超过了缓冲数据指定的数据

byte

类型的最大存储范

围,操作将把超过

byte

存储的范围外的数据进行丢弃处理,而不是将

float

缩小到

0

255

第七个和第八个参数

nBufXSize

nBufYSize

参数指定缓冲区的大小

。注意

pData

的大小应当是

nBufXSize×

nBufYSize

。当读取的数据是完整分辨率的数据(原始数据,没

有进行缩放操作)

,他们应该设置和取值窗口的大小相同,也就是与第四个和第五个参数相

等,

但是在读取时使用了缩小或者放大系数,

那么他们需要根据这个缩放系数进行调整。

这种情况下,

RasterIO

将会使用缩略图组

overviews

(金字塔)

中某个合适的缩略图来进行

读取数据。

第九个和第十个参数(对于

GDALDataset

来说还有第十一个参数

nBandSpace

)

nPixelSpace

nLineSpace

(以及

nBandSpace

)参数一般情况下是将

0

作为缺省值。但

是,他们可以用于

控制存取的内存数据的排列顺序

,可以使用这两个参数将图像数据按照

另一种组织形式读取内存缓冲区中。

也就是说这两个

(三个)

参数可以读取或者写入非常规

组织的缓冲数据。

这个首先可以用于在一个缓冲区中包含多个波段数据,

并且各个数据之间

是交叉排列的,比如一个图像中的数据组织是

RGBRGBRGB…

,而普通的数据可能是

RRR…GGG…BBB…

,我们一般读取到的数据就是

RGBRGBRGB…

这种排列,现在需要

使用

RRR…GGG…BBB…

这样的排列,一般想法就是自己写个

for

循环之类的,重新组织

一次,其实完全没有必要,只要设置这两个(三个)参数就可以达到这个目的。

nPixelSpace

表示的是在一个扫描行中一个像元的字节偏移起始点到下一个像元字节

偏移起始点之间的字节间隔,如果默认使用

0

,那么将使用

eBufType

作为实际的两个像元

之间的字节间隔。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值