[gdal-dev] RE Python ogr GetFieldAsString problem

Steve.Toutant at inspq.qc.ca Steve.Toutant at inspq.qc.ca
Thu May 14 06:02:36 PDT 2015


Thanks for your responses!
We can't change the settings, Refused by the system admin, too many 
applications are using the database and the actual settings.


The response of the WFS contains the comma, and it is in GML
 <gml:featureMember>
       <ms:SMDVDP_STAT_METE fid="SMDVDP_STAT_METE.2153">
         <ms:LONG_STAT>-64,2131</ms:LONG_STAT>
       </ms:SMDVDP_STAT_METE>
     </gml:featureMember>

The comma and decimals are not truncated by an XML validator, they are 
truncated by GetFieldAsDouble

But Maybe, it thinks that there are 2 values...-64 and 2131.
On my side, A patch would be to replace the , by ., use GetFieldAsDouble 
and replace . by , .....

Many countries in the world are using a comma as decimal separator there 
must be a solution....
What do you think, Does GetFieldAsDouble should be able to manage the ,''?

thanks!








Even Rouault <even.rouault at spatialys.com> 
2015-05-13 17:02

A
Steve.Toutant at inspq.qc.ca
cc
gdal-dev at lists.osgeo.org
Objet
Re: [gdal-dev] RE Python ogr GetFieldAsString problem








Steve,

I believe comma as decimal separator is invalid for a XML double. Hence 
the GML
driver only parses the value up to the comma. This could likely be 
improved to
accept comma, but technically I believe a XML validator would reject this 
GML.

Even

> More info.....
> ogr2ogr --version = GDAL 1.10.1, released 2013/08/26
> python --version = Python 2.7.3
>
> I have modified my script to get the field type
> while feat is not None:
>           feat_defn = layer.GetLayerDefn()
>           field_defn =
> feat_defn.GetFieldDefn(feat_defn.GetFieldIndex(attribut))
>           print field_defn.GetType()
>           if field_defn.GetType() == ogr.OFTReal:
>             print "%.4f" % feat.GetFieldAsDouble(attribut)
>           output.add(feat.GetFieldAsString(attribut))
>           feat = layer.GetNextFeature()
>
> It detects that it is a real, But GetFieldAsDouble also truncate the 
value
> at the comma
>
>
>
> Steve Toutant/INSPQ/SSSS
> 2015-05-13 15:11
>
> A
> gdal-dev at lists.osgeo.org
> cc
>
> Objet
> Python ogr GetFieldAsString problem
>
>
>
>
>
>
>
>
> I'm trying to parse a GML and read all the values of an attribute.
> Example
> <gml:featureMember>
>       <ms:SMDVDP_STAT_METE fid="SMDVDP_STAT_METE.2153">
>         <ms:LONG_STAT>-64,2131</ms:LONG_STAT>
>       </ms:SMDVDP_STAT_METE>
>     </gml:featureMember>
>
> DescribeFeatureType for this layer returns
> <element name="LONG_STAT" minOccurs="0" type="double"/>
>
> wfs_ds = ogr.Open(tmp_file.name)  #tmp_file.name is the response of a 
WFS
> getFeature request
> layer = wfs_ds.GetLayerByName('SMDVDP_STAT_METE ')
> feat = layer.GetNextFeature()
>       while feat is not None:
>           output.add(feat.GetFieldAsString('LONG_STAT'))
>           feat = layer.GetNextFeature()
>
> (At runtime, the WFs, layer and attribute can be anything of any type. 
And
> decimal separator, can be ',' or '.')
> The problem is that feat.GetFieldAsString('LONG_STAT') truncate the 
string
> to the comma
>
> So instead of having -64,2131, I get -64 in the output
>
> What is the appropriate way to get the value of an attribute?
>
> thanks you!
>
>
>
>
>
>


-- 
Spatialys - Geospatial professional services
http://www.spatialys.com



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20150514/cf0bdbd1/attachment-0001.html>


More information about the gdal-dev mailing list