[gdal-dev] RasterBand::IWriteBlock
Jerry Tol
jertol52 at gmail.com
Mon Dec 14 09:52:02 PST 2015
Hello,
I'm implementing a gdal raster driver for an internal file format and am
getting results I do not understand. The output is a binary raster of
32-bit floating point data, but the resulting file contains single bytes of
value 0x0D at seemingly random intervals throughout the data.
Within my implementation of IWriteBlock, I see that the buffer pointed to
by pImage *does not* contain these 0x0D's, however after calling VSIFWrite the
output file does indeed have these individual bytes scattered throughout.
In all cases, I am creating a new output file (not overwriting an existing
file). Sometimes the 0D's occur in the middle of a 4-byte float, others are
between two 4-byte float sequences. I cannot figure how/when/why these
random 0D's are occurring in my output.
Thank you for any help provided. Here is my implementation of IWriteBlock
CPLErr RLYRRasterBand::IWriteBlock(int nBlockXOff, int nBlockYOff, void *pImage)
{
RLYRDataset *poGDS = (RLYRDataset *)poDS;
if (poGDS->fp == 0) {
CPLError(CE_Failure, CPLE_FileIO, "IWriteBlock: fp is NULL");
return CE_Failure;
}
nBlockYOff = poDS->GetRasterYSize() - nBlockYOff - 1;
size_t cdtSize = GDALGetDataTypeSize(GetRasterDataType()) / 8;
size_t nSeek = RLYRMeta::offset_data +
cdtSize * (nBlockXOff * nBlockYSize + nBlockYOff * nBlockXSize);
int zeeksez = VSIFSeek(poGDS->fp, nSeek, SEEK_SET);
if (zeeksez != 0) {
CPLError(CE_Warning, CPLE_FileIO, "VSIFSeek returns %d", zeeksez);
return CE_Failure;
}
size_t nBlockLen = nBlockXSize * nBlockYSize;
size_t nWrit = VSIFWrite(pImage, cdtSize, nBlockLen, poGDS->fp);
if (nWrit != nBlockLen) {
CPLError(CE_Warning, CPLE_FileIO, "VSIFWrite returns %d", nWrit);
return CE_Failure;
}
// test code - 'foo' does not exhibit bad data but the output file does
//if (nBlockYOff == 1130) {
// FILE *tfp = VSIFOpen("h:\\rasters\\o\\foo", "wb");
// size_t nWrit2 = fwrite(pImage, cdtSize, nBlockLen, tfp);
// VSIFClose(tfp);
//}
return CE_None;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20151214/958ebb3d/attachment.html>
More information about the gdal-dev
mailing list