diff options
| author | Sergey Fedoseev <fedoseev.sergey@gmail.com> | 2015-12-05 19:05:52 +0500 |
|---|---|---|
| committer | Claude Paroz <claude@2xlibre.net> | 2015-12-18 19:44:43 +0100 |
| commit | c984e2bc15aa41de87404d6dd5d7e64f1a8e5038 (patch) | |
| tree | 650a79d43e111973ab77f4c6c25524f4e20519bf /django | |
| parent | cd3c042b0473e762b0e89bc69a9244c4a1fed66e (diff) | |
Fixed #25869 -- Added trim and precision properties to WKTWriter.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/gis/geos/prototypes/io.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/django/contrib/gis/geos/prototypes/io.py b/django/contrib/gis/geos/prototypes/io.py index ed28bcdccd..87aec30605 100644 --- a/django/contrib/gis/geos/prototypes/io.py +++ b/django/contrib/gis/geos/prototypes/io.py @@ -54,6 +54,9 @@ wkt_writer_set_outdim = GEOSFuncFactory( 'GEOSWKTWriter_setOutputDimension', argtypes=[WKT_WRITE_PTR, c_int] ) +wkt_writer_set_trim = GEOSFuncFactory('GEOSWKTWriter_setTrim', argtypes=[WKT_WRITE_PTR, c_char]) +wkt_writer_set_precision = GEOSFuncFactory('GEOSWKTWriter_setRoundingPrecision', argtypes=[WKT_WRITE_PTR, c_int]) + # WKBReader routines wkb_reader_create = GEOSFuncFactory('GEOSWKBReader_create', restype=WKB_READ_PTR) wkb_reader_destroy = GEOSFuncFactory('GEOSWKBReader_destroy', argtypes=[WKB_READ_PTR]) @@ -164,6 +167,9 @@ class WKTWriter(IOBase): _destructor = wkt_writer_destroy ptr_type = WKT_WRITE_PTR + _trim = False + _precision = None + def write(self, geom): "Returns the WKT representation of the given geometry." return wkt_writer_write(self.ptr, geom.ptr) @@ -178,6 +184,27 @@ class WKTWriter(IOBase): raise ValueError('WKT output dimension must be 2 or 3') wkt_writer_set_outdim(self.ptr, new_dim) + @property + def trim(self): + return self._trim + + @trim.setter + def trim(self, flag): + self._trim = bool(flag) + wkt_writer_set_trim(self.ptr, b'\x01' if flag else b'\x00') + + @property + def precision(self): + return self._precision + + @precision.setter + def precision(self, precision): + if isinstance(precision, int) and precision >= 0 or precision is None: + self._precision = precision + wkt_writer_set_precision(self.ptr, -1 if precision is None else precision) + else: + raise AttributeError('WKT output rounding precision must be non-negative integer or None.') + class WKBWriter(IOBase): _constructor = wkb_writer_create |
