mirror of
https://github.com/django/django.git
synced 2025-07-06 02:39:12 +00:00
gis: gdal: GeometryCollection.add()
now accepts other collections, and associated tests.
git-svn-id: http://code.djangoproject.com/svn/django/branches/gis@7012 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
298074d5b8
commit
5655cf1b2a
@ -538,13 +538,15 @@ class GeometryCollection(OGRGeometry):
|
|||||||
def add(self, geom):
|
def add(self, geom):
|
||||||
"Add the geometry to this Geometry Collection."
|
"Add the geometry to this Geometry Collection."
|
||||||
if isinstance(geom, OGRGeometry):
|
if isinstance(geom, OGRGeometry):
|
||||||
ptr = geom._ptr
|
if isinstance(geom, self.__class__):
|
||||||
|
for g in geom: add_geom(self._ptr, g._ptr)
|
||||||
|
else:
|
||||||
|
add_geom(self._ptr, geom._ptr)
|
||||||
elif isinstance(geom, (StringType, UnicodeType)):
|
elif isinstance(geom, (StringType, UnicodeType)):
|
||||||
tmp = OGRGeometry(geom)
|
tmp = OGRGeometry(geom)
|
||||||
ptr = tmp._ptr
|
add_geom(self._ptr, tmp._ptr)
|
||||||
else:
|
else:
|
||||||
raise OGRException('Must add an OGRGeometry.')
|
raise OGRException('Must add an OGRGeometry.')
|
||||||
add_geom(self._ptr, ptr)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def point_count(self):
|
def point_count(self):
|
||||||
|
@ -323,6 +323,27 @@ class OGRGeomTest(unittest.TestCase):
|
|||||||
a |= b # testing __ior__
|
a |= b # testing __ior__
|
||||||
self.assertEqual(u1, a)
|
self.assertEqual(u1, a)
|
||||||
|
|
||||||
|
def test14_add(self):
|
||||||
|
"Testing GeometryCollection.add()."
|
||||||
|
# Can't insert a Point into a MultiPolygon.
|
||||||
|
mp = OGRGeometry('MultiPolygon')
|
||||||
|
pnt = OGRGeometry('POINT(5 23)')
|
||||||
|
self.assertRaises(OGRException, mp.add, pnt)
|
||||||
|
|
||||||
|
# GeometryCollection.add may take an OGRGeometry (if another collection
|
||||||
|
# of the same type all child geoms will be added individually) or WKT.
|
||||||
|
for mp in multipolygons:
|
||||||
|
mpoly = OGRGeometry(mp.wkt)
|
||||||
|
mp1 = OGRGeometry('MultiPolygon')
|
||||||
|
mp2 = OGRGeometry('MultiPolygon')
|
||||||
|
mp3 = OGRGeometry('MultiPolygon')
|
||||||
|
|
||||||
|
for poly in mpoly:
|
||||||
|
mp1.add(poly) # Adding a geometry at a time
|
||||||
|
mp2.add(poly.wkt) # Adding WKT
|
||||||
|
mp3.add(mpoly) # Adding a MultiPolygon's entire contents at once.
|
||||||
|
for tmp in (mp1, mp2, mp3): self.assertEqual(mpoly, tmp)
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
s = unittest.TestSuite()
|
s = unittest.TestSuite()
|
||||||
s.addTest(unittest.makeSuite(OGRGeomTest))
|
s.addTest(unittest.makeSuite(OGRGeomTest))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user