[gis] Current locale considered when converting a geometry to WKT
|Reported by:||luizvital <luiz.vital@…>||Owned by:||jbronn|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
I'm getting a OGRGeometry Exception intermittently, when saving a form.
After debuging the code I noticed that the WKT string generated from
geometries were taking the current locale into account, thus raising
the Exceptions due to a bad WKT string representation. Here goes an
>>> import locale >>> from django.contrib.gis.geos import Point >>> p = Point(-45.23, -23.15) >>> p.wkt 'POINT (-45.2299999999999969 -23.1499999999999986)' >>> locale.getlocale() (None, None) >>> locale.setlocale(locale.LC_ALL, ('pt_BR','UTF-8')) 'pt_BR.UTF8' >>> p.wkt 'POINT (-45,2299999999999969 -23,1499999999999986)'
Notice de comma "," for decimal separator in the last output.
It must be something in the GEOS C library and in this case should be
fixed there, but maybe it should be avoided reseting de locale before
calling the C routine and restoring the locale to what it was just
I think the reason this problem was not always happening is related to
the some setlocale thread safety issue.
I was using the wkt from the geometry in a custom form PointField to get the coordinate transformed to the desired srid.
Change History (4)
comment:1 Changed 7 years ago by jbronn
- Keywords geos locale added
- Needs documentation unset
- Needs tests unset
- Owner changed from nobody to jbronn
- Patch needs improvement unset