diff --git a/tile_gen/generate_tiles.py b/tile_gen/generate_tiles.py index daeca8b114b83c33494b9ec4b5dceebd7c7a4bc9..5fef7c8e4d68f4117481a26c5ddfac31c39d39d2 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)