Пример #1
0
 def tile_mgr(self, mock_file_cache, mock_tile_client, tile_locker):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     source_grid = TileGrid(SRS(4326), bbox=[0, -90, 180, 90])
     source = TiledSource(source_grid, mock_tile_client)
     image_opts = ImageOptions(format='image/png')
     return TileManager(grid, mock_file_cache, [source], 'png',
         image_opts=image_opts,
         locker=tile_locker,
     )
Пример #2
0
 def setup(self):
     self.file_cache = MockFileCache('/dev/null', 'png', lock_dir=tmp_lock_dir)
     self.grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     self.source_grid = TileGrid(SRS(4326), bbox=[0, -90, 180, 90])
     self.client = MockTileClient()
     self.source = TiledSource(self.source_grid, self.client)
     self.image_opts = ImageOptions(format='image/png')
     self.tile_mgr = TileManager(self.grid, self.file_cache, [self.source], 'png',
         image_opts=self.image_opts)
Пример #3
0
 def setup(self):
     self.file_cache = MockFileCache('/dev/null', 'png', lock_dir=tmp_lock_dir)
     self.grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     self.client = MockWMSClient()
     self.source = WMSSource(self.client)
     self.tile_mgr = TileManager(self.grid, self.file_cache, [self.source], 'png',
         meta_size=[2, 2], meta_buffer=10, minimize_meta_requests=True)
Пример #4
0
    def test_explicit_grid(self):
        grid = TileGrid(res=[0.1, 0.05, 0.01])
        eq_(grid.resolution(0), 0.1)
        eq_(grid.resolution(1), 0.05)
        eq_(grid.resolution(2), 0.01)

        eq_(grid.closest_level(0.00001), 2)
Пример #5
0
    def test_bad_config_geopackage_no_gpkg_contents(self, app, base_dir):
        gpkg_file = base_dir.join("cache.gpkg").strpath
        table_name = "no_gpkg_contents"

        with sqlite3.connect(gpkg_file) as db:
            cur = db.execute(
                """SELECT name FROM sqlite_master WHERE type='table' AND name=?""",
                (table_name, ),
            )
            content = cur.fetchone()
            assert content[0] == table_name

        with sqlite3.connect(gpkg_file) as db:
            cur = db.execute(
                """SELECT table_name FROM gpkg_contents WHERE table_name=?""",
                (table_name, ),
            )
            content = cur.fetchone()
            assert not content

        GeopackageCache(gpkg_file, TileGrid(srs=4326), table_name=table_name)

        with sqlite3.connect(gpkg_file) as db:
            cur = db.execute(
                """SELECT table_name FROM gpkg_contents WHERE table_name=?""",
                (table_name, ),
            )
            content = cur.fetchone()
            assert content[0] == table_name
Пример #6
0
 def test_metatile_non_default_meta_size(self):
     mgrid = MetaGrid(grid=TileGrid(), meta_size=(4, 2))
     meta_tile = mgrid.meta_tile((4, 5, 3))
     assert_almost_equal_bbox(
         meta_tile.bbox, (0.0, 0.0, 20037508.342789244, 10018754.171394622))
     eq_(meta_tile.size, (1024, 512))
     eq_(meta_tile.grid_size, (4, 2))
Пример #7
0
 def setup(self):
     self.cache_dir = tempfile.mkdtemp()
     self.file_cache = FileCache(cache_dir=self.cache_dir, file_ext='png')
     self.grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     self.client = MockTileClient()
     self.source = TiledSource(self.grid, self.client)
     self.tile_mgr = TileManager(self.grid, self.file_cache, [self.source], 'png')
Пример #8
0
 def tile_mgr(self, file_cache, slow_source, tile_locker):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     image_opts = ImageOptions(format='image/png')
     return TileManager(grid, file_cache, [slow_source], 'png',
         meta_size=[2, 2], meta_buffer=0, image_opts=image_opts,
         locker=tile_locker,
     )
Пример #9
0
    def test_get_map_with_res_range(self, mock_file_cache, mock_wms_client,
                                    tile_locker):
        grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
        res_range = resolution_range(1000, 10)
        source = WMSSource(mock_wms_client, res_range=res_range)
        image_opts = ImageOptions(resampling='nearest')
        tile_mgr = TileManager(grid,
                               mock_file_cache, [source],
                               'png',
                               meta_size=[2, 2],
                               meta_buffer=0,
                               image_opts=image_opts,
                               locker=tile_locker)
        layer = CacheMapLayer(tile_mgr, image_opts=default_image_opts)

        with pytest.raises(BlankImage):
            result = layer.get_map(
                MapQuery(
                    (-20037508.34, -20037508.34, 20037508.34, 20037508.34),
                    (500, 500), SRS(900913), 'png'))
        assert mock_file_cache.stored_tiles == set()

        result = layer.get_map(
            MapQuery((0, 0, 10000, 10000), (50, 50), SRS(900913), 'png'))
        assert mock_file_cache.stored_tiles == \
            set([(512, 257, 10), (513, 256, 10), (512, 256, 10), (513, 257, 10)])
        assert result.size == (50, 50)
Пример #10
0
 def test_auto_resolution(self):
     grid = TileGrid(is_geodetic=True,
                     bbox=(-10, 30, 10, 40),
                     tile_size=(20, 20))
     tile_bbox = grid.tile_bbox((0, 0, 0))
     assert tile_bbox == (-10, 30, 10, 50)
     assert grid.resolution(0) == 1.0
Пример #11
0
 def __init__(self, srs, target_dir):
     self.service_srs = srs
     self.sources = {}
     self.caches = {}
     self.layers = []
     self.yaml_file = os.path.join(target_dir, 'mapproxy.yaml')
     self.grid = TileGrid(SRS(3857))
Пример #12
0
 def tile_mgr(self, mock_file_cache, mock_wms_client, tile_locker):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     source = WMSSource(mock_wms_client)
     return TileManager(grid, mock_file_cache, [source], 'png',
         meta_size=[2, 2], meta_buffer=10, minimize_meta_requests=True,
         locker=tile_locker,
     )
Пример #13
0
    def test_seed_with_res_list(self):
        # box from 10 10 to 80 80 with small spike/corner to -10 60 (upper left)
        geom = load_wkt(
            "POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")

        self.grid = TileGrid(
            SRS(4326),
            bbox=[-180, -90, 180, 90],
            res=[360 / 256, 360 / 720, 360 / 2000, 360 / 5000, 360 / 8000],
        )
        self.tile_mgr = TileManager(self.grid,
                                    MockCache(), [self.source],
                                    "png",
                                    locker=DummyLocker())
        task = self.make_geom_task(geom, SRS(4326), [0, 1, 2, 3, 4])
        seeder = TileWalker(task, self.seed_pool, handle_uncached=True)
        seeder.walk()

        assert len(self.seed_pool.seeded_tiles) == 5
        assert self.seed_pool.seeded_tiles[0] == set([(0, 0)])
        assert self.grid.grid_sizes[1] == (3, 2)
        assert self.seed_pool.seeded_tiles[1] == set([(1, 0), (1, 1), (2, 0),
                                                      (2, 1)])
        assert self.grid.grid_sizes[2] == (8, 4)
        assert self.seed_pool.seeded_tiles[2] == set([(4, 2), (5, 2), (4, 3),
                                                      (5, 3), (3, 3)])
        assert self.grid.grid_sizes[3] == (20, 10)
        assert len(self.seed_pool.seeded_tiles[3]) == 5 * 5 + 2
Пример #14
0
def test_metagrid_tiles_w_meta_size():
    mgrid = MetaGrid(grid=TileGrid(), meta_size=(4, 2))
    assert list(mgrid.meta_tile((1, 2, 2)).tile_patterns) == \
        [((0, 3, 2), (0, 0)), ((1, 3, 2), (256, 0)),
         ((2, 3, 2), (512, 0)), ((3, 3, 2), (768, 0)),
         ((0, 2, 2), (0, 256)), ((1, 2, 2), (256, 256)),
         ((2, 2, 2), (512, 256)), ((3, 2, 2), (768, 256))]
Пример #15
0
    def test_seed_with_res_list(self):
        if not load_wkt: raise SkipTest('no shapely installed')
        # box from 10 10 to 80 80 with small spike/corner to -10 60 (upper left)
        geom = load_wkt(
            "POLYGON((10 10, 10 50, -10 60, 10 80, 80 80, 80 10, 10 10))")

        self.grid = TileGrid(
            SRS(4326),
            bbox=[-180, -90, 180, 90],
            res=[360 / 256, 360 / 720, 360 / 2000, 360 / 5000, 360 / 8000])
        self.tile_mgr = TileManager(self.grid,
                                    MockCache(), [self.source],
                                    'png',
                                    locker=DummyLocker())
        task = self.make_geom_task(geom, SRS(4326), [0, 1, 2, 3, 4])
        seeder = TileWalker(task, self.seed_pool, handle_uncached=True)
        seeder.walk()

        eq_(len(self.seed_pool.seeded_tiles), 5)
        eq_(self.seed_pool.seeded_tiles[0], set([(0, 0)]))
        eq_(self.grid.grid_sizes[1], (3, 2))
        eq_(self.seed_pool.seeded_tiles[1],
            set([(1, 0), (1, 1), (2, 0), (2, 1)]))
        eq_(self.grid.grid_sizes[2], (8, 4))
        eq_(self.seed_pool.seeded_tiles[2],
            set([(4, 2), (5, 2), (4, 3), (5, 3), (3, 3)]))
        eq_(self.grid.grid_sizes[3], (20, 10))
        eq_(len(self.seed_pool.seeded_tiles[3]), 5 * 5 + 2)
Пример #16
0
 def tile_mgr(self, mock_file_cache, tile_locker, mock_wms_client):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     source = WMSSource(mock_wms_client)
     image_opts = ImageOptions(format='image/png')
     return TileManager(grid, mock_file_cache, [source], 'png',
         meta_size=[2, 2], meta_buffer=0, image_opts=image_opts,
         locker=tile_locker,
     )
Пример #17
0
 def setup(self):
     self.tile_dir = tempfile.mkdtemp()
     self.file_cache = MockFileCache(self.tile_dir, 'png', lock_dir=tmp_lock_dir)
     self.grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     self.source = SlowMockSource()
     self.image_opts = ImageOptions(format='image/png')
     self.tile_mgr = TileManager(self.grid, self.file_cache, [self.source], 'png',
         meta_size=[2, 2], meta_buffer=0, image_opts=self.image_opts)
Пример #18
0
 def tile_mgr(self, file_cache, tile_locker):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     client = MockTileClient()
     source = TiledSource(grid, client)
     image_opts = ImageOptions(format='image/png')
     return TileManager(grid, file_cache, [source], 'png',
         image_opts=image_opts,
         locker=tile_locker)
Пример #19
0
 def test_sources_with_mixed_support_for_meta_tiles(self, mock_file_cache, source_base, source_overlay, tile_locker):
     source_base.supports_meta_tiles = False
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     with pytest.raises(ValueError):
         TileManager(grid, file_cache,
             [source_base, source_overlay], 'png',
             meta_size=[2, 2], meta_buffer=0,
             locker=tile_locker)
Пример #20
0
 def tile_mgr(self, mock_file_cache, source_base, source_overlay, tile_locker):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90], origin='ul')
     return TileManager(grid, mock_file_cache,
         [source_base, source_overlay], 'png',
         meta_size=[2, 2], meta_buffer=0,
         locker=tile_locker,
         bulk_meta_tiles=True,
     )
Пример #21
0
 def layer(self, mock_file_cache, mock_wms_client, tile_locker):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     source = WMSSource(mock_wms_client)
     image_opts = ImageOptions(resampling='nearest')
     tile_mgr = TileManager(grid, mock_file_cache, [source], 'png',
         meta_size=[2, 2], meta_buffer=0, image_opts=image_opts,
         locker=tile_locker)
     return CacheMapLayer(tile_mgr, image_opts=default_image_opts)
Пример #22
0
 def setup(self):
     self.grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     self.source = TiledSource(self.grid, None)
     self.tile_mgr = TileManager(self.grid,
                                 MockCache(), [self.source],
                                 "png",
                                 locker=DummyLocker())
     self.seed_pool = MockSeedPool()
Пример #23
0
 def test_metatile_bbox(self):
     mgrid = MetaGrid(grid=TileGrid(), meta_size=(2, 2))
     meta_tile = mgrid.meta_tile((0, 0, 2))
     assert meta_tile.bbox == (-20037508.342789244, -20037508.342789244, 0.0, 0.0)
     meta_tile = mgrid.meta_tile((1, 1, 2))
     assert meta_tile.bbox == (-20037508.342789244, -20037508.342789244, 0.0, 0.0)
     meta_tile = mgrid.meta_tile((4, 5, 3))
     assert_almost_equal_bbox(meta_tile.bbox, (0.0, 0.0, 10018754.171394622, 10018754.171394622))
Пример #24
0
 def tile_mgr(self, mock_file_cache, tile_locker, source_base, source_overlay):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     image_opts = ImageOptions(format='image/png')
     return TileManager(grid, mock_file_cache,
         [source_base, source_overlay], 'png',
         image_opts=image_opts,
         locker=tile_locker,
     )
Пример #25
0
 def test_w_resolution(self):
     res = [1, 0.5, 0.2]
     grid = TileGrid(is_geodetic=True,
                     bbox=(-10, 30, 10, 40),
                     tile_size=(20, 20),
                     res=res)
     assert grid.grid_sizes[0] == (1, 1)
     assert grid.grid_sizes[1] == (2, 1)
     assert grid.grid_sizes[2] == (5, 3)
Пример #26
0
 def tile_mgr(self, file_cache, tile_locker):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     client = MockTileClient()
     source = TiledSource(grid, client)
     tile_mgr = TileManager(grid,
                            file_cache, [source],
                            'png',
                            locker=tile_locker)
     return tile_mgr
Пример #27
0
 def layer(self, mock_file_cache, source, tile_locker):
     grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     image_opts = ImageOptions(resampling='nearest', format='png')
     tile_mgr = TileManager(grid, mock_file_cache, [source], 'png',
         meta_size=[1, 1], meta_buffer=0, image_opts=image_opts,
         locker=tile_locker)
     layer = CacheMapLayer(tile_mgr, image_opts=default_image_opts)
     layer.extent = BBOXCoverage([0, 0, 90, 45], SRS(4326)).extent
     return layer
Пример #28
0
 def setup(self):
     self.file_cache = MockFileCache('/dev/null', 'png', lock_dir=tmp_lock_dir)
     self.grid = TileGrid(SRS(4326), bbox=[-180, -90, 180, 90])
     self.client = MockWMSClient()
     self.source = WMSSource(self.client)
     self.image_opts = ImageOptions(resampling='nearest')
     self.tile_mgr = TileManager(self.grid, self.file_cache, [self.source], 'png',
         meta_size=[2, 2], meta_buffer=0, image_opts=self.image_opts)
     self.layer = CacheMapLayer(self.tile_mgr, image_opts=default_image_opts)
Пример #29
0
 def __init__(self, db_session, srs, target_dir, couch_url, couch_port):
     self.db_session = db_session
     self.couch_url = couch_url
     self.couch_port = couch_port
     self.service_srs = srs
     self.sources = {}
     self.caches = {}
     self.layers = []
     self.yaml_file = os.path.join(target_dir, 'mapproxy.yaml')
     self.grid = TileGrid(SRS(3857))
Пример #30
0
 def test_above_first_res(self):
     grid = TileGrid(res=[1000, 500, 250, 100, 50],
                     threshold_res=[1100, 750])
     grid.stretch_factor = 1.1
     eq_(grid.closest_level(1200), 0)
     eq_(grid.closest_level(1100), 0)
     eq_(grid.closest_level(1000), 0)
     eq_(grid.closest_level(800), 0)
     eq_(grid.closest_level(750.1), 0)
     eq_(grid.closest_level(750), 1)