示例#1
0
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
示例#3
0
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
示例#4
0
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)
示例#6
0
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
示例#7
0
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)
示例#8
0
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
示例#9
0
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
示例#10
0
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)
示例#11
0
    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)
示例#12
0
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
示例#13
0
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!')
示例#14
0
    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)
示例#15
0
    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)
示例#16
0
    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)
示例#17
0
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
示例#18
0
    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)
示例#19
0
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!')
示例#20
0
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)
示例#21
0
def three_king():
    return Bbox(left=8.529906, bottom=47.364329, right=8.539329, top=47.369052)
示例#22
0
def zurich_bellevue():
    return Bbox(left=8.5448316112, bottom=47.3661604928, right=8.5453673825, top=47.366466604)
示例#23
0
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
示例#24
0
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
示例#25
0
def rappi():
    return Bbox.from_lbrt(8.81372, 47.218788, 8.852430, 47.239654)
示例#26
0
def roundabout_bbox():
    return Bbox(left=9.345857, bottom=47.090498, right=9.348325, top=47.092383)
示例#27
0
def small_bbox():
    return Bbox(left=8.83848086, bottom=47.2218996495, right=8.8388215005, top=47.2220713398)
示例#28
0
 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
示例#29
0
 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)
示例#30
0
def zurich_bellevue():
    return Bbox(left=8.5442953706, bottom=47.36628571, right=8.5457748771, top=47.3674659016)
示例#31
0
 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)
示例#32
0
def rappi():
    return Bbox(left=8.8181022825, bottom=47.2263345016, right=8.8188113747, top=47.2268572692)
示例#33
0
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