mirror of
https://github.com/django/django.git
synced 2025-10-26 15:16:09 +00:00
Fixed #25869 -- Added trim and precision properties to WKTWriter.
This commit is contained in:
committed by
Claude Paroz
parent
cd3c042b04
commit
c984e2bc15
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user