From 16778c631255b052a1c030ff91f8330c41cccf61 Mon Sep 17 00:00:00 2001 From: Rosie Wood Date: Thu, 23 Jan 2025 15:45:14 +0000 Subject: [PATCH] skip missing maps --- mapreader/download/sheet_downloader.py | 17 ++++++++++++----- mapreader/download/tile_merging.py | 8 +++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/mapreader/download/sheet_downloader.py b/mapreader/download/sheet_downloader.py index 07e4f8c8..fc277f1f 100644 --- a/mapreader/download/sheet_downloader.py +++ b/mapreader/download/sheet_downloader.py @@ -530,7 +530,7 @@ def _download_map( existing_id: str | bool, download_in_parallel: bool = True, overwrite: bool = False, - force: bool = False, + error_on_missing_map=True, ) -> str | bool: """ Downloads a single map sheet and saves as png file. @@ -545,8 +545,8 @@ def _download_map( Whether to download tiles in parallel, by default ``True``. overwrite : bool, optional Whether to overwrite existing maps, by default ``False``. - force : bool, optional - Whether to force the download or ask for confirmation, by default ``False``. + error_on_missing_map : bool, optional + Whether to raise an error if a map sheet is missing, by default True. Returns ------- @@ -563,13 +563,16 @@ def _download_map( map_name = existing_id[:-4] # remove file extension (assuming .png) img_path, success = self.merger.merge( - feature["grid_bb"], file_name=map_name, overwrite=overwrite + feature["grid_bb"], + file_name=map_name, + overwrite=overwrite, + error_on_missing_map=error_on_missing_map, ) if success: print(f'[INFO] Downloaded "{img_path}"') else: - print(f'[WARNING] Download of "{img_path}" was unsuccessful.') + print("[WARNING] Download unsuccessful.") # Try to remove the temporary folder try: @@ -686,6 +689,7 @@ def _download_map_sheets( overwrite: bool | None = False, download_in_parallel: bool = True, force: bool = False, + error_on_missing_map: bool = True, **kwargs: dict | None, ): """Download map sheets from features. @@ -704,6 +708,8 @@ def _download_map_sheets( Whether to download tiles in parallel, by default ``True``. force : bool, optional Whether to force the download or ask for confirmation, by default ``False``. + error_on_missing_map : bool, optional + Whether to raise an error if a map sheet is missing, by default True. **kwargs : dict, optional Keyword arguments to pass to the :meth:`~.download.sheet_downloader.SheetDownloader._save_metadata` @@ -759,6 +765,7 @@ def _download_map_sheets( existing_id, download_in_parallel=download_in_parallel, overwrite=overwrite, + error_on_missing_map=error_on_missing_map, ) if img_path is not False: metadata_path = f"{path_save}/{metadata_fname}" diff --git a/mapreader/download/tile_merging.py b/mapreader/download/tile_merging.py index 7ff315be..057ac9a5 100644 --- a/mapreader/download/tile_merging.py +++ b/mapreader/download/tile_merging.py @@ -148,6 +148,7 @@ def merge( grid_bb: GridBoundingBox, file_name: str | None = None, overwrite: bool = False, + error_on_missing_map: bool = True, ) -> str | bool: """Merges cells contained within GridBoundingBox. @@ -167,7 +168,12 @@ def merge( """ os.makedirs(self.output_folder, exist_ok=True) - tile_size = self._load_tile_size(grid_bb) + try: + tile_size = self._load_tile_size(grid_bb) + except FileNotFoundError as err: + if error_on_missing_map: + raise err + return False, False merged_image = Image.new( "RGBA", (len(grid_bb.x_range) * tile_size, len(grid_bb.y_range) * tile_size)