def test_multipolygon(self): p = geometry.Polygon([(0, 0), (1, 1), (1, 0), (0, 0)]) e = [(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)] i = [(1, 0), (0.5, 0.5), (1, 1), (1.5, 0.5), (1, 0)] ph1 = geometry.Polygon(e, [i]) mp = geometry.MultiPolygon([p, ph1]) self.assertEqual(len(mp), 2) self.assertTrue(isinstance(mp.geoms[0], geometry.Polygon)) self.assertTrue(isinstance(mp.geoms[1], geometry.Polygon)) self.assertEqual(mp.bounds, (0.0, 0.0, 2.0, 2.0)) mp = geometry.MultiPolygon([ (((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0)), [((0.1, 0.1), (0.1, 0.2), (0.2, 0.2), (0.2, 0.1))]) ]) self.assertEqual( mp.__geo_interface__, { 'type': 'MultiPolygon', 'bbox': (0.0, 0.0, 1.0, 1.0), 'coordinates': ((((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0)), ((0.1, 0.1), (0.1, 0.2), (0.2, 0.2), (0.2, 0.1), (0.1, 0.1))), ) }) self.assertEqual(len(mp.geoms), 1) self.assertTrue(isinstance(mp.geoms[0], geometry.Polygon)) mp1 = geometry.MultiPolygon(mp) self.assertEqual(mp.__geo_interface__, mp1.__geo_interface__) mp2 = geometry.MultiPolygon(ph1) self.assertRaises(ValueError, geometry.MultiPolygon, 0) self.assertRaises(ValueError, geometry.MultiPolygon, [0, 0]) pt = geometry.Point(0, 1) self.assertRaises(TypeError, geometry.MultiPolygon, pt)
def test_multipolygon(self): e0 = ((0.0, 0.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0)) p = geometry.Polygon(e0) e1 = ((0.0, 0.0), (0.0, 2.0), (2.0, 2.0), (2.0, 0.0), (0.0, 0.0)) i1 = ((1.0, 0.0), (0.5, 0.5), (1.0, 1.0), (1.5, 0.5), (1.0, 0.0)) ph1 = geometry.Polygon(e1, [i1]) mp = geometry.MultiPolygon([p, ph1]) self.assertEqual(mp.geoms[0].exterior.coords, e0) self.assertEqual(mp.geoms[1].exterior.coords, e1) self.assertEqual(list(mp.geoms[1].interiors)[0].coords, i1) mp._set_orientation(True) self.assertEqual(mp.geoms[0].exterior.coords, e0) self.assertEqual(mp.geoms[1].exterior.coords, e1) self.assertEqual(list(mp.geoms[1].interiors)[0].coords, i1) mp._set_orientation(False) self.assertEqual(mp.geoms[0].exterior.coords, e0[::-1]) self.assertEqual(mp.geoms[1].exterior.coords, e1[::-1]) self.assertEqual(list(mp.geoms[1].interiors)[0].coords, i1[::-1]) mp._set_orientation(True, exterior=False) self.assertEqual(mp.geoms[0].exterior.coords, e0[::-1]) self.assertEqual(mp.geoms[1].exterior.coords, e1[::-1]) self.assertEqual(list(mp.geoms[1].interiors)[0].coords, i1) mp._set_orientation(False) mp._set_orientation(True, interiors=False) self.assertEqual(list(mp.geoms[1].interiors)[0].coords, i1[::-1]) self.assertEqual(mp.geoms[0].exterior.coords, e0) self.assertEqual(mp.geoms[1].exterior.coords, e1)
def test_multipolygon(self): f = geometry.MultiPolygon([(((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0)), [((0.1, 0.1), (0.1, 0.2), (0.2, 0.2), (0.2, 0.1))]) ]) s = geometry.as_shape(f) self.assertEqual(f.__geo_interface__, s.__geo_interface__)
def test_within_multipolygon_attr(): result = parse('WITHIN(MULTIPOLYGON(((1 1,2 2,0 3,1 1))), geometry)') assert result == ast.GeometryWithin( values.Geometry( geometry.MultiPolygon( [geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)])]).__geo_interface__, ), ast.Attribute('geometry'), )
def setUp(self): self.geometry = geometry._Geometry() self.point = geometry.Point(0, 1) self.linestring = geometry.LineString([[0, 0], [1, 0], [1, 1]]) self.linearring = geometry.LinearRing([[0, 0], [1, 0], [1, 1], [0, 0]]) self.coords_1 = ((0., 0.), (0., 1.), (1., 1.), (1., 0.), (0., 0.)) self.polygon = geometry.Polygon(self.coords_1) self.multipoint = geometry.MultiPoint([[0.0, 0.0], [1.0, 2.0]]) self.multiline = geometry.MultiLineString([[[0.0, 0.0], [1.0, 2.0]]]) self.multipoly = geometry.MultiPolygon([ (((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0)), [((0.1, 0.1), (0.1, 0.2), (0.2, 0.2), (0.2, 0.1))]) ]) self.geo_collect = geometry.GeometryCollection( [self.point, self.linestring, self.linearring]) self.feature = geometry.Feature(self.point, {'a': 1, 'b': 2}) self.feature_list = [self.feature, self.feature] self.fc = geometry.FeatureCollection(self.feature_list)
def test_within_multipolygon_attr(): result = parse([ 'within', { 'type': 'MultiPolygon', 'coordinates': [[[[1, 1], [2, 2], [0, 3], [1, 1]]]], 'bbox': [0.0, 1.0, 2.0, 3.0] }, ['geometry'], ]) assert result == ast.GeometryWithin( values.Geometry( normalize_geom( geometry.MultiPolygon( [geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)])]).__geo_interface__), ), ast.Attribute('geometry'), )
def test_within_multipolygon_attr(): result = parse({ "within": [ { "type": "MultiPolygon", "coordinates": [ [[[1, 1], [2, 2], [0, 3], [1, 1]]] ], 'bbox': [0.0, 1.0, 2.0, 3.0] }, {"property": "geometry"}, ] }) assert result == ast.GeometryWithin( values.Geometry( normalize_geom( geometry.MultiPolygon([ geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)]) ]).__geo_interface__ ), ), ast.Attribute('geometry'), )