From 15d0dde408e1312f3d1b37fd38878054dd19d0aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20K=C3=BCpper?= Date: Fri, 8 Nov 2024 12:16:53 +0100 Subject: [PATCH] acquisition/create ArtticDEM vrt: warn if you stumble upon potentially wrong inputs --- .../src/darts_acquisition/arcticdem.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/darts-acquisition/src/darts_acquisition/arcticdem.py b/darts-acquisition/src/darts_acquisition/arcticdem.py index 8379b26..2eec4cb 100644 --- a/darts-acquisition/src/darts_acquisition/arcticdem.py +++ b/darts-acquisition/src/darts_acquisition/arcticdem.py @@ -38,7 +38,7 @@ def download_arcticdem_extend(dem_data_dir: Path): logger.info(f"Download completed in {time.time() - start:.2f} seconds") -def create_arcticdem_vrt(dem_data_dir: Path, vrt_target_dir: Path): +def create_arcticdem_vrt(dem_data_dir: Path, vrt_target_dir: Path): # noqa: C901 """Create a VRT file from ArcticDEM data. Args: @@ -82,16 +82,32 @@ def create_arcticdem_vrt(dem_data_dir: Path, vrt_target_dir: Path): if len(non_writable_files) > 0: raise OSError(f"cannot write to {', '.join([f.name for f in non_writable_files])}") + # memorize if any files weren't written + file_written = dict.fromkeys(subdirs.keys(), False) + for name, subdir in subdirs.items(): output_file_path = vrt_target_dir / f"{name}.vrt" # check the file first if we can write to it ds_path = dem_data_dir / subdir + if not ds_path.exists(): + logger.warning(f"{ds_path.absolute()} does NOT exist!") + continue + filelist = [str(f.resolve()) for f in ds_path.glob("*.tif")] + if len(filelist) < 1: + logger.warning(f"NO files found in {ds_path.absolute()}") + continue + logger.debug(f"Found {len(filelist)} files for {name} at {ds_path}.") logger.debug(f"Writing VRT to '{output_file_path.resolve()}'") src_nodata = "nan" if name == "slope" else 0 opt = gdal.BuildVRTOptions(srcNodata=src_nodata, VRTNodata=0) gdal.BuildVRT(str(output_file_path.resolve()), filelist, options=opt) + file_written[name] = True + + for name, is_written in file_written.items(): + if not is_written: + logger.warning(f"VRT file for {name} was NOT created.") logger.debug(f"Creation of VRT took {time.time() - start_time:.2f}s")