Skip to content

Commit 389d67e

Browse files
Merge pull request #4 from bjorkegeek/master
Fixed bug causing invalid WKT to be produced for many geometries
2 parents d1245c1 + d6fa443 commit 389d67e

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

postgis/multi.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from .geometry import Geometry
2-
2+
from .point import Point
33

44
class Multi(Geometry):
55

@@ -31,7 +31,8 @@ def from_ewkb_body(cls, reader, srid=None):
3131

3232
@property
3333
def wkt_coords(self):
34-
return ', '.join('({})'.format(g.wkt_coords) for g in self)
34+
fmt = '{}' if self.SUBCLASS == Point else '({})'
35+
return ', '.join(fmt.format(g.wkt_coords) for g in self)
3536

3637
def write_ewkb_body(self, writer):
3738
writer.write_int(len(self.geoms))

postgis/point.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ def __init__(self, x, y=None, z=None, m=None, srid=None):
1515
m = extra[0]
1616
self.x = float(x)
1717
self.y = float(y)
18-
self.z = int(z) if z is not None else None
19-
self.m = int(m) if m is not None else None
18+
self.z = float(z) if z is not None else None
19+
self.m = float(m) if m is not None else None
2020
if srid is not None:
2121
self.srid = srid
2222

tests/test_multipolygon.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,11 @@ def test_geom_should_compare_with_coords():
2727
def test_multipolygon_get_item():
2828
multi = MultiPolygon(MULTI)
2929
assert multi[0] == Polygon(MULTI[0])
30+
31+
32+
def test_multipolygon_wkt():
33+
multi = MultiPolygon(MULTI)
34+
wkt = multi.wkt
35+
wkt = wkt.replace('.0','')
36+
wkt = wkt.replace(', ',',')
37+
assert wkt == 'MULTIPOLYGON(((35 10,45 45,15 40,10 20,35 10),(20 30,35 35,30 20,20 30)),((36 10,46 45,16 40,16 20,36 10),(21 30,36 35,36 20,21 30)))'

tests/test_polygon.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,11 @@ def test_polygon_geojson():
99
poly = Polygon((((1, 2), (3, 4), (5, 6), (1, 2)),))
1010
assert poly.geojson == {"type": "Polygon",
1111
"coordinates": (((1, 2), (3, 4), (5, 6), (1, 2)),)}
12+
13+
14+
def test_polygon_wkt():
15+
poly = Polygon((((1, 2), (3, 4), (5, 6), (1, 2)),))
16+
wkt = poly.wkt
17+
wkt = wkt.replace('.0','')
18+
wkt = wkt.replace(', ',',')
19+
assert wkt == 'POLYGON((1 2,3 4,5 6,1 2))'

0 commit comments

Comments
 (0)