Floating point 使用光栅写入浮点值的问题 我用C++编写了一个代码(MSVS 2013),使用GDAL,函数RasterIO,并且我有点写点值的麻烦。

Floating point 使用光栅写入浮点值的问题 我用C++编写了一个代码(MSVS 2013),使用GDAL,函数RasterIO,并且我有点写点值的麻烦。,floating-point,raster,gdal,Floating Point,Raster,Gdal,如API教程中所述,我使用以下代码在光栅文件中写入一行: poBand->RasterIO(GF_Write, 0, j, nXSize, 1, pafWriteline, nXSize, 1, GDT_Float32, 0, 0); 其中: pafWriteline = (float *)CPLMalloc(sizeof(float)*nXSize); 但是,稍后,当我使用代码阅读同一行时: poBand->RasterIO(GF_Read, 0, j, nXSize, 1,

如API教程中所述,我使用以下代码在光栅文件中写入一行:

poBand->RasterIO(GF_Write, 0, j, nXSize, 1, pafWriteline, nXSize, 1, GDT_Float32, 0, 0);
其中:

pafWriteline = (float *)CPLMalloc(sizeof(float)*nXSize);
但是,稍后,当我使用代码阅读同一行时:

poBand->RasterIO(GF_Read, 0, j, nXSize, 1, pafScanline, nXSize, 1, GDT_Float32, 0, 0);
pafScanline中的所有值都已四舍五入(看起来像整数)

有人知道发生了什么吗


提前谢谢

光栅是如何创建的?例如,
poDriver->Create
是否也指定了
GDT\u Float32
?你好,迈克。我刚刚使用以下代码创建了光栅文件(基于原始文件):
poDstDS=poDriver->CreateCopy(pszDstFilename,poDataset,FALSE,NULL,NULL)
pszDstFilename的光栅数据类型(
eBandType
)是什么?您可以使用gdalinfo从命令行获取此信息。我得到了
GDT\u Unknown
。当我复制时,你知道如何将我的标注栏类型更改为
GDT\u Float32
?因此,你的问题实际上是,如何基于另一个标注栏创建一个具有不同数据类型的光栅。问得好,但我不知道怎么问。请参阅以了解Float32的
gdal\u translate-命令是如何执行的。