def city_from_extent(extent): city_extents = dict([(m['short_name'], m['extent']) for m in METRO_LIST]) env = OGRGeometry(Envelope(*extent).wkt) matches = [] for slug, city_ext in city_extents.iteritems(): city_env = OGRGeometry(Envelope(*city_ext).wkt) if city_env.intersects(env): matches.append((slug, city_env)) if len(matches) == 1: return matches[0][0] elif len(matches) > 1: # Crudely select the intersecting city with the most overlap # TODO: get rid of this current_best_slug, current_max_area = None, float('-inf') for slug, city_env in matches: intersection = city_env.intersection(env) area = intersection.area if area > current_max_area: current_max_area = area current_best_slug = slug return current_best_slug # If we didn't find a match with a city extent, start expanding the buffer # around the city extents until we match one for i in xrange(6): for slug, city_ext in city_extents.iteritems(): extent = buffer_extent(city_ext, 1, num_tiles=i+1) city_env = OGRGeometry(Envelope(*extent).wkt) if env.intersects(city_env): return slug
def city_from_extent(extent): city_extents = dict([(m['short_name'], m['extent']) for m in METRO_LIST]) env = OGRGeometry(Envelope(*extent).wkt) matches = [] for slug, city_ext in city_extents.iteritems(): city_env = OGRGeometry(Envelope(*city_ext).wkt) if city_env.intersects(env): matches.append((slug, city_env)) if len(matches) == 1: return matches[0][0] elif len(matches) > 1: # Crudely select the intersecting city with the most overlap # TODO: get rid of this current_best_slug, current_max_area = None, float('-inf') for slug, city_env in matches: intersection = city_env.intersection(env) area = intersection.area if area > current_max_area: current_max_area = area current_best_slug = slug return current_best_slug # If we didn't find a match with a city extent, start expanding the buffer # around the city extents until we match one for i in xrange(6): for slug, city_ext in city_extents.iteritems(): extent = buffer_extent(city_ext, 1, num_tiles=i + 1) city_env = OGRGeometry(Envelope(*extent).wkt) if env.intersects(city_env): return slug
def test_intersection(self): "Testing intersects() and intersection()." for i in range(len(self.geometries.topology_geoms)): a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a) b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b) i1 = OGRGeometry(self.geometries.intersect_geoms[i].wkt) self.assertTrue(a.intersects(b)) i2 = a.intersection(b) self.assertEqual(i1, i2) self.assertEqual(i1, a & b) # __and__ is intersection operator a &= b # testing __iand__ self.assertEqual(i1, a)
def test11_intersection(self): "Testing intersects() and intersection()." for i in xrange(len(self.geometries.topology_geoms)): a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a) b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b) i1 = OGRGeometry(self.geometries.intersect_geoms[i].wkt) self.assertEqual(True, a.intersects(b)) i2 = a.intersection(b) self.assertEqual(i1, i2) self.assertEqual(i1, a & b) # __and__ is intersection operator a &= b # testing __iand__ self.assertEqual(i1, a)
def test11_intersection(self): "Testing intersects() and intersection()." for i in xrange(len(topology_geoms)): g_tup = topology_geoms[i] a = OGRGeometry(g_tup[0].wkt) b = OGRGeometry(g_tup[1].wkt) i1 = OGRGeometry(intersect_geoms[i].wkt) self.assertEqual(True, a.intersects(b)) i2 = a.intersection(b) self.assertEqual(i1, i2) self.assertEqual(i1, a & b) # __and__ is intersection operator a &= b # testing __iand__ self.assertEqual(i1, a)
def test_intersection(self): "Testing intersects() and intersection()." for i in range(len(self.geometries.topology_geoms)): a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a) b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b) i1 = OGRGeometry(self.geometries.intersect_geoms[i].wkt) self.assertTrue(a.intersects(b)) i2 = a.intersection(b) self.assertTrue(i1.geos.equals(i2.geos)) self.assertTrue(i1.geos.equals( (a & b).geos)) # __and__ is intersection operator a &= b # testing __iand__ self.assertTrue(i1.geos.equals(a.geos))