专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > GIS

使用GDAL库读图的一个有关问题

发布时间:2010-06-06 17:16:26 文章来源:www.iduyao.cn 采编人员:星星草
使用GDAL库读图的一个问题
通过gdal库按一行一行的顺序读入某一波段信息,存入位图的数据区
nXSize,nYSize分别表示高宽
C/C++ code

//建立数据区
LONG LineBytes = (nXsize*8+31)/32*4;
pData= (LPBYTE)new char[LineBytes*nYsize];

poBandBlock= (BYTE*)CPLMalloc(sizeof(BYTE)*(nXsize*1));
//为各像素赋值
for (int i=0; i<nYsize; i++)
{
          
          //一次读取一行读取    
         poBand[dlg.Gray]->RasterIO(GF_Read, 0, i, nXsize, 
                 i+1, poBandBlock,nXsize, 1,GDT_Byte, 0, 0);

    for (int j=0; j<nXsize; j++)
        pData[(nYsize-i-1)*LineBytes + j] = poBandBlock[j];
            
}
CPLFree(poBandBlock);



但是这样读取,打开图片后,图片第nYSize/2行开始全部显示出错。这是为什么啊?


------解决方案--------------------
检查一下原因
1、一般24位图像是3个波段的吧,你这里写的是一个波段?

2、创建位图的时候 ,有个选项是要指定的
option = "INTERLEAVE=PIXEL";
poDstDS = poDriver->Create( strTifPath, width,height,3, GDT_Byte, 
&option ); 

3、你分配的内存空间是否足够。
pData= (LPBYTE)new char[LineBytes*nYsize];
nYsize是哪来的,是不是能用new char这种方式,计算有没有问题?
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: