def check_zoom_levels(gpkg, mapproxy_configuration): try: grid = mapproxy_configuration.caches.get("default").conf.get("grids")[0] tile_size = mapproxy_configuration.grids.get(grid).conf.get("tile_size") tile_grid = mapproxy_configuration.grids.get(grid).tile_grid() for table_name in get_tile_table_names(gpkg): actual_zoom_levels = get_zoom_levels_table(gpkg, table_name) gpkg_tile_matrix = get_table_tile_matrix_information(gpkg, table_name) for actual_zoom_level in actual_zoom_levels: if actual_zoom_level not in [level.get("zoom_level") for level in gpkg_tile_matrix]: res = tile_grid.resolution(actual_zoom_level) grid_sizes = tile_grid.grid_sizes[actual_zoom_level] with sqlite3.connect(gpkg) as conn: conn.execute( """ INSERT OR REPLACE INTO gpkg_tile_matrix (table_name, zoom_level, matrix_width, matrix_height, tile_width, tile_height, pixel_x_size, pixel_y_size) VALUES(?, ?, ?, ?, ?, ?, ?, ?)""", ( table_name, actual_zoom_level, grid_sizes[0], grid_sizes[1], tile_size[0], tile_size[1], res, res, ), ) except Exception as e: logger.error("Problem in check_zoom_levels: {}".format(e)) logger.error("Check provider MapProxy configuration.")
def test_get_tile_table_names(self, sqlite3): expected_table_names = ["test1", "test2"] mock_table_names = [(expected_table_names[0],), (expected_table_names[1],)] gpkg = "/test/file.gpkg" sqlite3.connect().__enter__().execute.return_value = mock_table_names return_table_names = get_tile_table_names(gpkg) sqlite3.connect().__enter__().execute.assert_called_once_with( "SELECT table_name FROM gpkg_contents WHERE data_type = 'tiles';") self.assertEqual(expected_table_names, return_table_names)
def check_zoom_levels(gpkg, mapproxy_configuration): try: grid = mapproxy_configuration.caches.get('cache').conf.get('grids')[0] tile_size = mapproxy_configuration.grids.get(grid).conf.get('tile_size') tile_grid = mapproxy_configuration.grids.get(grid).tile_grid() for table_name in get_tile_table_names(gpkg): actual_zoom_levels = get_zoom_levels_table(gpkg, table_name) gpkg_tile_matrix = get_table_tile_matrix_information(gpkg, table_name) for actual_zoom_level in actual_zoom_levels: if actual_zoom_level not in [level.get('zoom_level') for level in gpkg_tile_matrix]: res = tile_grid.resolution(actual_zoom_level) grid_sizes = tile_grid.grid_sizes[actual_zoom_level] with sqlite3.connect(gpkg) as conn: conn.execute(""" INSERT OR REPLACE INTO gpkg_tile_matrix (table_name, zoom_level, matrix_width, matrix_height, tile_width, tile_height, pixel_x_size, pixel_y_size) VALUES(?, ?, ?, ?, ?, ?, ?, ?)""", (table_name, actual_zoom_level, grid_sizes[0], grid_sizes[1], tile_size[0], tile_size[1], res, res)) except Exception as e: logger.error('Problem in check_zoom_levels: {}'.format(e))