From eb98aa4dca52b20887b49fe3013427585d9a9bdd Mon Sep 17 00:00:00 2001 From: David Hoese <david.hoese@ssec.wisc.edu> Date: Thu, 16 Jan 2020 10:48:36 -0600 Subject: [PATCH] Add linking/copying to tile generation --- tile_gen/generate_tiles.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tile_gen/generate_tiles.py b/tile_gen/generate_tiles.py index daeca8b..5fef7c8 100644 --- a/tile_gen/generate_tiles.py +++ b/tile_gen/generate_tiles.py @@ -5,6 +5,7 @@ import sys import warnings import logging import subprocess +import shutil import tile_index @@ -43,6 +44,18 @@ def remap_tifs(input_tifs, out_dir, remap_suffix): yield otif +def link_or_copy(input_tifs, out_dir): + """Hardlink input tifs to output directory.""" + for prod_file in input_tifs: + out_file = os.path.join(out_dir, os.path.basename(prod_file)) + try: + os.link(prod_file, out_file) + except OSError: + # on different mounts probably? + shutil.copy2(prod_file, out_file) + yield out_file + + def main(): import argparse parser = argparse.ArgumentParser(description="Take input geotiffs and generate mapserver compatible tiles.") @@ -68,9 +81,12 @@ def main(): shp_fn = args.shape_file.format(product=prod) shp_pathname = os.path.join(out_dir, shp_fn) - # remap if needed if args.remap: + # remap if needed prod_files = list(remap_tifs(prod_files, out_dir, args.remap_suffix)) + else: + # hardlink if needed + prod_files = list(link_or_copy(prod_files, out_dir)) # create shape file tile_index.index(prod_files, shp_pathname) -- GitLab