def test_first(node1, node2, default_config): manager = Manager(bbox=Bbox.from_nodes(node_left_down=node1, node_right_up=node2), configuration=default_config) manager._generate_small_bboxes() assert manager.small_bboxes[0].left == node1.longitude assert manager.small_bboxes[0].bottom == node1.latitude
def test_with_three(node1, configuration_no_compare): node2 = node1.add_meter(2 * configuration_no_compare.bbox_size + 50, 2 * configuration_no_compare.bbox_size + 50) manager = Manager(bbox=Bbox.from_nodes(node_left_down=node1, node_right_up=node2)) columns = manager._calc_columns() rows = manager._calc_rows() assert rows == 3 assert columns == 3
def test_with_two_columns(node1): node2 = node1.add_meter(200, Manager.small_bbox_side_length + 50) manager = Manager(bbox=Bbox.from_leftdown_rightup(node1, node2), job_queue_name='dummy') columns = manager._calc_columns() rows = manager._calc_rows() assert rows == 1 assert columns == 2
def test_with_two_columns(node1, configuration_no_compare): node2 = node1.add_meter(200, configuration_no_compare.bbox_size + 50) manager = Manager( bbox=Bbox.from_nodes(node_left_down=node1, node_right_up=node2)) columns = manager._calc_columns() rows = manager._calc_rows() assert rows == 1 assert columns == 2
def test_big_bbox(node1, node2): manager = Manager(bbox=Bbox.from_nodes(node_left_down=node1, node_right_up=node2)) length = len(manager.small_bboxes) manager._generate_small_bboxes() assert manager.small_bboxes[0].left == node1.longitude assert manager.small_bboxes[0].bottom == node1.latitude assert (manager.small_bboxes[length - 1].right >= node2.longitude and manager.small_bboxes[length - 1].right <= node2.longitude + 0.05) assert (manager.small_bboxes[length - 1].top >= node2.latitude and manager.small_bboxes[length - 1].top <= node2.latitude + 0.05)
def test_with_three(node1, configuration_no_compare): bbox_size = int(configuration_no_compare.JOB.bboxsize) node2 = node1.add_meter(2 * bbox_size + 50, 2 * bbox_size + 50) manager = Manager(bbox=Bbox.from_nodes(node_left_down=node1, node_right_up=node2), configuration=configuration_no_compare) columns = manager._calc_columns() rows = manager._calc_rows() assert rows == 3 assert columns == 3
def test_big_bbox(node1, node2): manager = Manager( bbox=Bbox.from_nodes(node_left_down=node1, node_right_up=node2)) length = len(manager.small_bboxes) manager._generate_small_bboxes() assert manager.small_bboxes[0].left == node1.longitude assert manager.small_bboxes[0].bottom == node1.latitude assert (manager.small_bboxes[length - 1].right >= node2.longitude and manager.small_bboxes[length - 1].right <= node2.longitude + 0.05) assert (manager.small_bboxes[length - 1].top >= node2.latitude and manager.small_bboxes[length - 1].top <= node2.latitude + 0.05)
def test_instantiate_from_bltr_string(): bottom = '47.0' left = '8.0' top = '48.0' right = '9.0' bbox = Bbox.from_bltr(bottom, left, top, right) assert bbox.bottom == bottom assert bbox.left == left assert bbox.top == top assert bbox.right == right
def test_instantiate_from_bltr(): bottom = 47.0 left = 8.0 top = 48.0 right = 9.0 bbox = Bbox.from_bltr(bottom, left, top, right) assert bbox.bottom == bottom assert bbox.left == left assert bbox.top == top assert bbox.right == right
def test_big_bbox(node1, node2): manager = Manager(bbox=Bbox.from_leftdown_rightup(node1, node2), job_queue_name='dummy') length = len(manager.small_bboxes) manager._generate_small_bboxes() assert manager.small_bboxes[0].left == node1.longitude assert manager.small_bboxes[0].bottom == node1.latitude assert (manager.small_bboxes[length - 1].right >= node2.longitude and manager.small_bboxes[length - 1].right <= node2.longitude + 0.05) assert (manager.small_bboxes[length - 1].top >= node2.latitude and manager.small_bboxes[length - 1].top <= node2.latitude + 0.05)
def _generate_small_bboxes(self): m_minx, m_miny = self.mercator.LatLonToMeters(self.big_bbox.bottom, self.big_bbox.left) rows = self._calc_rows() columns = self._calc_columns() side = int(self.configuration.JOB.bboxsize) for x in range(0, columns): for y in range(0, rows): bottom, left = self.mercator.MetersToLatLon(m_minx + (side * x), m_miny + (side * y)) top, right = self.mercator.MetersToLatLon(m_minx + (side * (x + 1)), m_miny + (side * (y + 1))) small_bbox = Bbox(left=left, bottom=bottom, right=right, top=top) self.small_bboxes.append(small_bbox)
def test_manager_standalone(store_path): small_bbox = Bbox(left=8.83848086, bottom=47.2218996495, right=8.8388215005, top=47.2220713398) manager = Manager(bbox=small_bbox, standalone=True, configuration=Configuration( dict(bbox_size=50, compare=False))) manager.run() with open(store_path, 'r') as f: data = json.load(f) assert len(data['nodes']) == 1
def manager(args, configuration): big_bbox = Bbox(left=args.bb_left, bottom=args.bb_bottom, right=args.bb_right, top=args.bb_top) try: print('Manager has started...') manage = Manager(bbox=big_bbox, configuration=configuration, standalone=args.standalone) manage.run() except ConnectionError: print( 'Failed to connect to redis instance [{ip}:{port}], is it running? Check connection arguments and retry.'.format( ip=configuration.REDIS.server, port=configuration.REDIS.port)) finally: print('Manager has finished!')
def get_tile_by_node(self, centre_node, side_length): centre_pixel = self.get_pixel(centre_node) x1 = centre_pixel[0] - side_length // 2 x2 = centre_pixel[0] + side_length // 2 y1 = centre_pixel[1] - side_length // 2 y2 = centre_pixel[1] + side_length // 2 crop_box = (x1, y1, x2, y2) img = self.image.crop(crop_box) left_down = self.get_node((x1, y1)) right_up = self.get_node((x2, y2)) bbox = Bbox.from_leftdown_rightup(left_down, right_up) return Tile(img, bbox)
def get_tile_by_node(self, centre_node, side_length): centre_pixel = self.get_pixel(centre_node) x1 = centre_pixel[0] - side_length // 2 x2 = centre_pixel[0] + side_length // 2 y1 = centre_pixel[1] - side_length // 2 y2 = centre_pixel[1] + side_length // 2 crop_box = (x1, y1, x2, y2) img = self.image.crop(crop_box) left_down = self.get_node((x1, y1)) right_up = self.get_node((x2, y2)) bbox = Bbox.from_nodes(node_left_down=left_down, node_right_up=right_up) return Tile(img, bbox)
def get_tile_by_node(self, centre_node, side_length): centre_pixel = self.get_pixel(centre_node) x1 = centre_pixel[0] - side_length // 2 x2 = centre_pixel[0] + side_length // 2 y1 = centre_pixel[1] - side_length // 2 y2 = centre_pixel[1] + side_length // 2 crop_box = (x1, y1, x2, y2) left_down = self.get_node((x1, y1)) right_up = self.get_node((x2, y2)) bbox = Bbox.from_nodes(node_left_down=left_down, node_right_up=right_up) img = self.image_api.get_image(bbox) return Tile(image=img, bbox=bbox)
def test_manager_standalone(store_path, configuration_no_compare): small_bbox = Bbox(left=9.351172, bottom=47.098195, right=9.351301, top=47.098480) configuration_no_compare.DETECTION.bboxsize = 50 manager = Manager(bbox=small_bbox, standalone=True, configuration=configuration_no_compare) manager.run() with open(store_path, 'r') as f: data = json.load(f) assert len(data['nodes']) == 1
def _generate_small_bboxes(self): m_minx, m_miny = self.mercator.LatLonToMeters(self.big_bbox.bottom, self.big_bbox.left) rows = self._calc_rows() columns = self._calc_columns() side = Manager.small_bbox_side_length for x in range(0, columns): for y in range(0, rows): bottom, left = self.mercator.MetersToLatLon( m_minx + (side * x), m_miny + (side * y)) top, right = self.mercator.MetersToLatLon( m_minx + (side * (x + 1)), m_miny + (side * (y + 1))) small_bbox = Bbox.from_lbrt(left, bottom, right, top) self.small_bboxes.append(small_bbox)
def manager(args): big_bbox = Bbox.from_lbrt(args.bb_left, args.bb_bottom, args.bb_right, args.bb_top) try: print('Manger has started...') search = Search(word=args.search, key=args.tag[0], value=args.tag[1], zoom_level=int(args.zoom_level), compare=(not args.no_compare), orthofoto=args.orthofoto) Manager.from_big_bbox(big_bbox, redis_args(args), args.redis_jobqueue_name, search) except ConnectionError: print( 'Failed to connect to redis instance [{ip}:{port}], is it running? Check connection arguments and retry.' .format(ip=args.redis_host, port=args.redis_port)) finally: print('Manager has finished!')
def main(args): coords = [args.coord[i:i + 2] for i in range(0, len(args.coord), 2)] coords = list(map(lambda c: Node(*c), coords)) bbox = Bbox.from_nodes(coords[0], coords[1]) if args.tags: tags = map(lambda kv: Tag(key=kv[0], value=kv[1]), map(lambda kv: kv.split('=', 1), args.tags.split(','))) walker = OsmObjectWalker(Tile(image_api=WmsApi(), bbox=bbox), tags, square_image_length=100) else: walker = CoordWalker(Tile(image_api=WmsApi(), bbox=bbox), coords, square_image_length=100) tiles = walker.get_tiles() for n, t in enumerate(tiles): centre_node = t.get_centre_node() name = "fetch/{0:02.8}_{1:02.8}.png".format(centre_node.latitude, centre_node.longitude) t.image.save(name, "PNG") print(name)
def three_king(): return Bbox(left=8.529906, bottom=47.364329, right=8.539329, top=47.369052)
def zurich_bellevue(): return Bbox(left=8.5448316112, bottom=47.3661604928, right=8.5453673825, top=47.366466604)
def test_first(node1, node2): manager = Manager(bbox=Bbox.from_leftdown_rightup(node1, node2), job_queue_name='dummy') manager._generate_small_bboxes() assert manager.small_bboxes[0].left == node1.longitude assert manager.small_bboxes[0].bottom == node1.latitude
def test_get_centre_node(): bbox = Bbox(left=0.0, right=2.0, bottom=0.0, top=2.0) simple_tile = Tile(image=None, bbox=bbox) centre_node = simple_tile.get_centre_node() assert centre_node.latitude == 1.0 assert centre_node.longitude == 1.0
def rappi(): return Bbox.from_lbrt(8.81372, 47.218788, 8.852430, 47.239654)
def roundabout_bbox(): return Bbox(left=9.345857, bottom=47.090498, right=9.348325, top=47.092383)
def small_bbox(): return Bbox(left=8.83848086, bottom=47.2218996495, right=8.8388215005, top=47.2220713398)
def generate_bbox(self, tx, ty): bottom, left, top, right = self._mercator.TileLatLonBounds( tx, ty, self._zoom_level) bbox = Bbox.from_lbrt(left, bottom, right, top) return bbox
def _generate_bbox(self, t_minx, t_miny, t_maxx, t_maxy): bottom, left, _, _ = self._mercator.TileLatLonBounds(t_minx, t_miny, self._zoom_level) _, _, top, right = self._mercator.TileLatLonBounds(t_maxx, t_maxy, self._zoom_level) return Bbox(left=left, bottom=bottom, right=right, top=top)
def zurich_bellevue(): return Bbox(left=8.5442953706, bottom=47.36628571, right=8.5457748771, top=47.3674659016)
def _bbox_from(self, t_minx, t_miny, t_maxx, t_maxy): bottom, left, _, _ = self._mercator.TileLatLonBounds( t_minx, t_miny, self._zoom_level) _, _, top, right = self._mercator.TileLatLonBounds( t_maxx, t_maxy, self._zoom_level) return Bbox.from_lbrt(left, bottom, right, top)
def rappi(): return Bbox(left=8.8181022825, bottom=47.2263345016, right=8.8188113747, top=47.2268572692)
def roundabout_bbox(): return Bbox.from_lbrt(9.345857, 47.090498, 9.348325, 47.092383)
def test_first(node1, node2): manager = Manager(bbox=Bbox.from_nodes(node_left_down=node1, node_right_up=node2)) manager._generate_small_bboxes() assert manager.small_bboxes[0].left == node1.longitude assert manager.small_bboxes[0].bottom == node1.latitude