Ejemplo n.º 1
0
 def testGeometryCollection(self):
     self.assertRaises(TypeError,geometry.GeometryCollection)
     self.assertRaises(TypeError,geometry.GeometryCollection, None)
     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)]
     ph = geometry.Polygon(e, [i])
     p0 = geometry.Point(0, 0)
     p1 = geometry.Point(-1, -1)
     r = geometry.LinearRing([(0, 0), (1, 1), (1, 0), (0, 0)])
     l = geometry.LineString([(0, 0), (1, 1)])
     gc = geometry.GeometryCollection([p,ph,p0,p1,r,l])
     self.assertEqual(len(list(gc.geoms)),6)
     self.assertEqual(len(gc), 6)
     self.assertEqual(gc.bounds, (-1.0, -1.0, 2.0, 2.0))
     self.assertEqual(gc.__geo_interface__,
             geometry.as_shape(gc).__geo_interface__)
     self.assertEqual(gc.__geo_interface__,
             geometry.as_shape(gc.__geo_interface__).__geo_interface__)
     f = geometry._Feature()
     gc1 = geometry.GeometryCollection([p.__geo_interface__,ph,p0,p1,r,l.__geo_interface__])
     self.assertEqual(gc.__geo_interface__,gc1.__geo_interface__)
     self.assertRaises(NotImplementedError, geometry.GeometryCollection, [p,f])
     mp1 = geometry.MultiPoint([p0, p1])
     self.assertRaises(ValueError, geometry.GeometryCollection, [p,mp1])
Ejemplo n.º 2
0
 def test_polygon(self):
     f = geometry.Polygon([(0, 0), (1, 1), (1, 0), (0, 0)])
     s = geometry.as_shape(f)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
     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)]
     f = geometry.Polygon(e, [i])
     s = geometry.as_shape(f)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
     ext = [(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)]
     int_1 = [(0.5, 0.25), (1.5, 0.25), (1.5, 1.25), (0.5, 1.25), (0.5, 0.25)]
     int_2 = [(0.5, 1.25), (1, 1.25), (1, 1.75), (0.5, 1.75), (0.5, 1.25)]
     f = geometry.Polygon(ext, [int_1, int_2])
     s = geometry.as_shape(f)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
Ejemplo n.º 3
0
 def test_feature(self):
     self.assertRaises(TypeError, geometry.Feature)
     self.assertEqual(self.f1.__geo_interface__, geometry.as_shape(self.f1).__geo_interface__)
     self.assertEqual(
         self.f1.__geo_interface__,
         {
             "type": "Feature",
             "bbox": (0.0, 0.0, 1.0, 1.0),
             "geometry": {
                 "type": "Polygon",
                 "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)),),
             },
             "properties": {},
         },
     )
     self.f1.properties["coords"] = {}
     self.f1.properties["coords"]["cube"] = (0, 0, 0)
     self.assertEqual(
         self.f1.__geo_interface__,
         {
             "type": "Feature",
             "bbox": (0.0, 0.0, 1.0, 1.0),
             "geometry": {
                 "type": "Polygon",
                 "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)),),
             },
             "properties": {"coords": {"cube": (0, 0, 0)}},
         },
     )
     self.assertEqual(self.f1.geometry.bounds, (0.0, 0.0, 1.0, 1.0))
     del self.f1.properties["coords"]
Ejemplo n.º 4
0
 def test_feature(self):
     self.assertRaises(TypeError, geometry.Feature)
     self.assertEqual(self.f1.__geo_interface__,
                      geometry.as_shape(self.f1).__geo_interface__)
     self.assertEqual(self.f1.__geo_interface__,
                      {'type': 'Feature',
                       'bbox': (0.0, 0.0, 1.0, 1.0),
                       'geometry': {'type': 'Polygon',
                                    '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)),),
                                    },
                       'properties': {}
                       })
     self.f1.properties['coords'] = {}
     self.f1.properties['coords']['cube'] = (0, 0, 0)
     self.assertEqual(self.f1.__geo_interface__,
                      {'type': 'Feature',
                       'bbox': (0.0, 0.0, 1.0, 1.0),
                       'geometry': {'type': 'Polygon',
                                    '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)),),
                                    },
                       'properties': {'coords': {'cube': (0, 0, 0)}}
                       })
     self.assertEqual(self.f1.geometry.bounds, (0.0, 0.0, 1.0, 1.0))
     del self.f1.properties['coords']
Ejemplo n.º 5
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__)
Ejemplo n.º 6
0
 def test_geometrycollection(self):
     p = geometry.Point(0, 1)
     l = geometry.LineString([(0, 0), (1, 1)])
     f = geometry.GeometryCollection([p, l])
     s = geometry.as_shape(f)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
     self.assertEqual(f.__geo_interface__["geometries"][0], p.__geo_interface__)
     self.assertEqual(f.__geo_interface__["geometries"][1], l.__geo_interface__)
Ejemplo n.º 7
0
 def test_featurecollection(self):
     self.assertRaises(TypeError, geometry.FeatureCollection)
     self.assertRaises(TypeError, geometry.FeatureCollection, None)
     self.assertEqual(len(list(self.fc.features)), 2)
     self.assertEqual(len(self.fc), 2)
     self.assertEqual(self.fc.bounds, (0.0, 0.0, 2.0, 2.0))
     self.assertEqual(self.fc.__geo_interface__, geometry.as_shape(self.fc).__geo_interface__)
     self.assertEqual([self.f1, self.f2], [feature for feature in self.fc])
Ejemplo n.º 8
0
 def testPolygon(self):
     p = geometry.Polygon([(0, 0), (1, 1), (1, 0), (0, 0)])
     self.assertEqual(p.exterior.coords, ((0.0, 0.0), (1.0, 1.0),
                                         (1.0, 0.0), (0.0, 0.0)))
     self.assertEqual(list(p.interiors), [])
     self.assertEqual(p.__geo_interface__, {'type': 'Polygon',
                         'coordinates': (((0.0, 0.0), (1.0, 1.0),
                         (1.0, 0.0), (0.0, 0.0)),)})
     self.assertEqual(p.bounds,(0.0, 0.0, 1.0, 1.0))
     r = geometry.LinearRing([(0, 0), (1, 1), (1, 0), (0, 0)])
     p1 = geometry.Polygon(r)
     self.assertEqual(p1.exterior.coords, r.coords)
     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])
     self.assertEqual(ph1.__geo_interface__,
         geometry.as_shape(ph1).__geo_interface__)
     self.assertEqual(ph1.exterior.coords, tuple(e))
     self.assertEqual(list(ph1.interiors)[0].coords, tuple(i))
     self.assertEqual(ph1.__geo_interface__, {'type': 'Polygon',
             'coordinates': (((0.0, 0.0), (0.0, 2.0), (2.0, 2.0),
                             (2.0, 0.0), (0.0, 0.0)),
                             ((1.0, 0.0), (0.5, 0.5),
                             (1.0, 1.0), (1.5, 0.5), (1.0, 0.0)))})
     ext = [(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)]
     int_1 = [(0.5, 0.25), (1.5, 0.25), (1.5, 1.25), (0.5, 1.25), (0.5, 0.25)]
     int_2 = [(0.5, 1.25), (1, 1.25), (1, 1.75), (0.5, 1.75), (0.5, 1.25)]
     ph2 = geometry.Polygon(ext, [int_1, int_2])
     self.assertEqual(ph2.exterior.coords, tuple(ext))
     self.assertEqual(list(ph2.interiors)[0].coords, tuple(int_1))
     self.assertEqual(list(ph2.interiors)[1].coords, tuple(int_2))
     self.assertEqual(ph2.__geo_interface__, {'type': 'Polygon',
             'coordinates': (((0.0, 0.0), (0.0, 2.0), (2.0, 2.0),
                     (2.0, 0.0), (0.0, 0.0)),
                     ((0.5, 0.25), (1.5, 0.25),
                     (1.5, 1.25), (0.5, 1.25), (0.5, 0.25)),
                     ((0.5, 1.25), (1.0, 1.25), (1.0, 1.75),
                     (0.5, 1.75), (0.5, 1.25)))})
     ph3 = geometry.Polygon(ph2)
     self.assertEqual(ph2.__geo_interface__, ph3.__geo_interface__)
     # if a polygon is passed as constructor holes will be ignored
     # XXX or should holes be added to the polygon?
     ph4 = geometry.Polygon(ph2, [i])
     self.assertEqual(ph2.__geo_interface__, ph4.__geo_interface__)
     coords = ((0., 0.), (0., 1.), (1., 1.), (1., 0.), (0., 0.))
     polygon = geometry.Polygon(coords)
     ph5 = geometry.Polygon(
            (
            ((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))
            ))
     r1 = geometry.LinearRing([(0, 0), (2, 2), (2, 0), (0, 0)])
     r2 = geometry.LinearRing([(0.5, 0.5), (1, 1), (1, 0), (0.5, 0.5)])
     p6 = geometry.Polygon(r1, [r2])
     pt = geometry.Point(0, 1)
     self.assertRaises(TypeError, geometry.Polygon, pt)
     self.assertRaises(TypeError, geometry.Polygon, 0)
     self.assertRaises(TypeError, geometry.Polygon, pt, [pt])
Ejemplo n.º 9
0
 def test_feature_with_id(self):
     self.assertEqual(self.f3.id, '1')
     self.assertEqual(self.f3.__geo_interface__,
                      {'type': 'Feature',
                       'bbox': (0.0, 0.0, 1.0, 1.0),
                       'geometry': {'type': 'Polygon',
                                    '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)),),
                                    },
                       'id': '1',
                       'properties': {}
                       })
     self.assertEqual(self.f3.__geo_interface__,
                      geometry.as_shape(self.f3).__geo_interface__)
Ejemplo n.º 10
0
 def test_feature_with_id(self):
     self.assertEqual(self.f3.id, "1")
     self.assertEqual(
         self.f3.__geo_interface__,
         {
             "type": "Feature",
             "bbox": (0.0, 0.0, 1.0, 1.0),
             "geometry": {
                 "type": "Polygon",
                 "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)),),
             },
             "id": "1",
             "properties": {},
         },
     )
     self.assertEqual(self.f3.__geo_interface__, geometry.as_shape(self.f3).__geo_interface__)
Ejemplo n.º 11
0
 def test_dict_asshape(self):
     f = geometry.MultiLineString([[[0.0, 0.0], [1.0, 2.0]]])
     s = geometry.as_shape(f.__geo_interface__)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
Ejemplo n.º 12
0
 def test_multilinestring(self):
     f = geometry.MultiLineString([[[0.0, 0.0], [1.0, 2.0]]])
     s = geometry.as_shape(f)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
     self.assertEqual((0, 0, 1, 2), f.bounds)
Ejemplo n.º 13
0
 def test_multipoint(self):
     f = geometry.MultiPoint([[0.0, 0.0], [1.0, 2.0]])
     s = geometry.as_shape(f)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
Ejemplo n.º 14
0
 def data_geojson(self):
     style = {}
     global_style = utils.get_feature_styles(self.context)
     style['fill'] = global_style['polygoncolor']
     style['stroke'] = global_style['linecolor']
     style['width'] = global_style['linewidth']
     if global_style.get('marker_image', None):
         img = get_marker_image(self.context, global_style['marker_image'])
         style['image'] = img
     else:
         style['image'] = None
     json_result = []
     self.pc = api.portal.get_tool('portal_catalog')
     for contact in self.get_contacts():
         brain = self.pc.unrestrictedSearchResults(UID=contact.UID())[0]
         if contact.use_parent_address:
             brain = self.pc.unrestrictedSearchResults(
                 UID=contact.aq_parent.UID())[0]
         if brain.zgeo_geometry == Missing.Value:
             continue
         if brain.collective_geo_styles == Missing.Value:
             continue
         if brain.collective_geo_styles.get('use_custom_styles', False) and \
                brain.collective_geo_styles.get('marker_image', None):
             img = get_marker_image(self.context, brain.collective_geo_styles['marker_image'])
             style['image'] = img
         geom = {'type': brain.zgeo_geometry['type'],
                 'coordinates': brain.zgeo_geometry['coordinates']}
         if geom['coordinates']:
             if geom['type']:
                 classes = geom['type'].lower() + ' '
             else:
                 classes = ''
             address = get_address(contact)
             number = ''
             if address.get('number', None):
                 number = ', {0}'.format(address['number'])
             formated_address = '{0}{1}<br />{2} {3}'.format(
                 safe_utf8(address.get('street') or ''),
                 number,
                 address.get('zip_code') or '',
                 safe_utf8(address.get('city') or '')
             )
             img = ''
             if self.context.see_logo_in_popup:
                 acc = getattr(contact, 'logo', None)
                 if acc and acc.filename:
                     img = '{0}/@@images/logo/thumb'.format(
                         contact.absolute_url()
                     )
             classes += brain.getPath().split('/')[-2].replace('.', '-')
             json_result.append(
                 geojson.Feature(
                     id=contact.id.replace('.', '-'),
                     geometry=as_shape(geom),
                     style=style,
                     properties={
                         'title': brain.Title,
                         'description': brain.Description,
                         'style': style,
                         'url': brain.getURL(),
                         'classes': classes,
                         'image': img,
                         'address': formated_address
                     }))
     feature_collection = geojson.FeatureCollection(json_result)
     feature_collection.update({'title': self.context.title})
     return geojson.dumps(feature_collection)
Ejemplo n.º 15
0
 def test_point(self):
     f = geometry.Point(0, 1)
     s = geometry.as_shape(f)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
Ejemplo n.º 16
0
 def test_linearring(self):
     f = geometry.LinearRing([(0, 0), (1, 1), (1, 0), (0, 0)])
     s = geometry.as_shape(f)
     self.assertEqual(f.__geo_interface__, s.__geo_interface__)
Ejemplo n.º 17
0
 def __eq__(self, o: object) -> bool:
     return (
         as_shape(self).__geo_interface__ == as_shape(o).__geo_interface__)