[gdal-dev] Re: OFTReal values truncated to integer

Chaitanya kumar CH chaitanya.ch at gmail.com
Sat Apr 28 13:26:22 EDT 2012


diegogb,

I too got a similar error, but with python code. I am working on a patch
for this.

On Sat, Apr 28, 2012 at 10:46 PM, diegogb <diego.gnesi at gmail.com> wrote:

> Ok, I executed many tests and I found something strange.
> I tried:
>
> - QT Creator,
> - CodeLite,
> - Python
>
> I wrote the following programs;
>
> // C++ CodeLite version.
> #include "gdal/ogrsf_frmts.h"
>
> int main(int argc, char *argv[])
> {
>    OGRRegisterAll();
>    OGRSFDriver *driver =
> OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName("ESRI Shapefile");
>    OGRDataSource *dSource =
> driver->CreateDataSource("/home/diego/Documenti/P2/test.shp", NULL);
>    OGRLayer *layer = dSource->CreateLayer("TestLayer", NULL, wkbPoint,
> NULL);
>    OGRFieldDefn elevField("Elev", OFTReal);
>    layer->CreateField(&elevField);
>     OGRFeature *pointFeature =
> OGRFeature::CreateFeature(layer->GetLayerDefn());
>    OGRPoint thePoint;
>     double x=1.1, y=1.2, z=1.3;
>    thePoint.setX(x);
>    thePoint.setY(y);
>    thePoint.setZ(z);
>    pointFeature->SetGeometry(&thePoint);
>    pointFeature->SetField("Elev", z);
>    layer->CreateFeature(pointFeature);
>    OGRFeature::DestroyFeature(pointFeature);
>    OGRDataSource::DestroyDataSource(dSource);
>    return 0;
> }
>
>
>
> //C++ Qt Creator version.
> // (same code as above, but written as implementation of the class method
> AltConverter.createFile().
> #include "altconverter.h"
> #include "gdal/ogrsf_frmts.h"
>
> void AltConverter::createFile() {
>        OGRRegisterAll();
>        OGRSFDriver *driver =
> OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName("ESRI Shapefile");
>        OGRDataSource *dSource =
> driver->CreateDataSource("/home/diego/Documenti/P2/test.shp", NULL);
>        OGRLayer *layer = dSource->CreateLayer("TestLayer", NULL, wkbPoint,
> NULL);
>        OGRFieldDefn elevField("Elev", OFTReal);
>        layer->CreateField(&elevField);
>         OGRFeature *pointFeature =
> OGRFeature::CreateFeature(layer->GetLayerDefn());
>        OGRPoint thePoint;
>         double x=1.1, y=1.2, z=1.3;
>        thePoint.setX(x);
>        thePoint.setY(y);
>        thePoint.setZ(z);
>        pointFeature->SetGeometry(&thePoint);
>        pointFeature->SetField("Elev", z);
>        layer->CreateFeature(pointFeature);
>        OGRFeature::DestroyFeature(pointFeature);
>        OGRDataSource::DestroyDataSource(dSource);
> }
>
>
>
> #! /usr/bin/python
> # Python version.
> import osgeo.ogr, osgeo.osr
>
> driver = osgeo.ogr.GetDriverByName('ESRI Shapefile')
> dSource = driver.CreateDataSource ('sample.shp')
> layer = dSource.CreateLayer('TestLayer',  geom_type=osgeo.ogr.wkbPoint)
> fieldDefn = osgeo.ogr.FieldDefn('Elev',  osgeo.ogr.OFTReal)
> layer.CreateField(fieldDefn)
> layerDefn = layer.GetLayerDefn()
> newPoint = osgeo.ogr.Geometry(osgeo.ogr.wkbPoint)
> newPoint.SetPoint(0, 1.1,  1.2)
> newFeature = osgeo.ogr.Feature(layer.GetLayerDefn())
> newFeature.SetGeometry(newPoint)
> newFeature.SetField('Elev',  1.3)
> layer.CreateFeature(newFeature)
> newFeature.Destroy()
> dSource.Destroy()
>
>
> *Now, Python and CodeLite code work fine, and produce the value 1.3 for the
> Elev field, Qt Creator code don't and the saved value is read as 1 (because
> is codified as "1,3" and not as "1.3")!!!*
>
> Now, I took a look inside the source code of the GDAL library.
> The method that writes real values to the dbf file is
> DBFWriteDoubleAttribute (inside the ogr/ogr_frmts/shape/dbfopen.c file).
> I think that there must be a sprintf that writes values using local
> settings
> while it shouldn't, but I don't know the library and I'm not able to check.
> I think it's a bug to correct.
>
> --
> View this message in context:
> http://osgeo-org.1560.n6.nabble.com/OFTReal-values-truncated-to-integer-tp4933952p4936894.html
> Sent from the GDAL - Dev mailing list archive at Nabble.com.
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>



-- 
Best regards,
Chaitanya kumar CH.

+91-9494447584
17.2416N 80.1426E
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20120428/de31de93/attachment.html


More information about the gdal-dev mailing list