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, )
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)
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)
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)
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
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))
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')
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, )
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)
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
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))
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, )
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
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))]
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)
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, )
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)
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)
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)
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, )
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)
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()
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))
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, )
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)
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
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
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)
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))
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)