From: Andrey K. <dr...@ak...> - 2004-06-30 17:45:26
|
On Tue, Jun 29, 2004 at 09:58:05AM +0200, Julien Demaria wrote: > I use int32 rasters in OpenEV and I've observed that the pixels values > I see in the tracktool are truncated. It seems that the reason is this > code in gvraster.c which read a pixel in my int32 layer as a float, > and the cast losts informations : > > "... > float value[2]; > > GDALRasterIO( raster->gdal_band, GF_Read, pixel, line, 1, 1, > value, 1, 1, GDT_CFloat32, 0, 0 ); > > *real = value[0]; > *imaginary = value[1]; > ..." > > > I've looked in gvraster.c and I understand that rasters are classified in > two types : Byte and others, and others have all the same GDAL GDT_Float32 > type... > Are there reasons for this ? > Does it mean that (u)int32 and float64 GDAL rasters aren't well > handled by OpenEV ? > > gvrastertypes.h defines types for short and int rasters, but they aren't > used, and types for ushort, uint and double rasters aren't defined. Julien, I don't see any reason why we can't get GDT_CFloat64 values from GDAL, especially if we recall that *real and *imaginary are double precition floats and we have unnecessary type conversion here. Could you change definition for value[] arry to double and replace GDT_CFloat32 with the GDT_CFloat64 and test whether it helps for your data? Andrey -- Andrey V. Kiselev Home phone: +7 812 5274898 ICQ# 26871517 |