Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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__)
Пример #4
0
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'),
    )
Пример #5
0
 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)
Пример #6
0
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'),
    )
Пример #7
0
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'),
    )