diff --git a/SEPTREFHUM.py b/SEPTREFHUM.py index cbf2ebe46500af2ab0db0eeb6b31843cef878707..59c93d8bbdb3833481bcbb98949772a3b7097df0 100755 --- a/SEPTREFHUM.py +++ b/SEPTREFHUM.py @@ -30,6 +30,7 @@ import pytz import netCDF4 as nc import configparser import logging +import shutil # Paths config # Create a .env file from dotenv-sample @@ -40,14 +41,14 @@ config.read("SEPTREFHUM.cfg") # Paths to weather data model_id = os.getenv("MODEL_ID") +home_dir = os.getenv("HOME_DIR") infile_path = os.getenv("WEATHER_DATA_DIR") infile_archive_path = os.getenv("ARCHIVE_WEATHER_DATA_DIR") # Used for iterating the weather data files filename_pattern = os.getenv("FILENAME_PATTERN") # Date format of weather data filenames filename_dateformat = os.getenv("FILENAME_DATEFORMAT") -# Path to store generated GeoTIFF files -outfile_path = os.getenv("DATA_DIR") + # Names of weather parameters in NetCDF files RR = os.getenv("RR") UM = os.getenv("UM") @@ -60,9 +61,17 @@ if len(sys.argv) > 1: else: year = today.year -# Where to store intermediary calculations +weather_data_path = weather_data_dir +if year != today.year: + weather_data_path = f"{archive_weather_data_dir}{year}/" + +# Path to store intermediary calculations tmpfile_path = f"tmp/{year}/" +# Paths to store generated result files +outfile_path = f"os.getenv('DATA_DIR'){year}/" +mapfile_outdir = f"os.getenv('MAPFILE_DIR'){year}/" + TEMPERATURE_THRESHOLD = 8.0 DEBUG = False if os.getenv("DEBUG") is None or os.getenv("DEBUG").lower() == "false" else True @@ -87,10 +96,10 @@ if last_wh_date is not None: logging.info(f"Last date of WH calculations is {last_wh_date}. Start date = {start_date}") weatherdata_files = glob.glob(f"{infile_path}{filename_pattern}") -if DEBUG: - logging.info(f"{infile_path}{filename_pattern}") - logging.info("What are the weatherdata files?") - logging.info(weatherdata_files) +logging.debug(f"{infile_path}{filename_pattern}") +logging.debug("What are the weatherdata files?") +logging.debug(weatherdata_files) + for file_path in sorted(weatherdata_files): # TODO: When filename/pattern is configurable: make the string search adaptable file_name = os.path.basename(file_path) @@ -98,7 +107,7 @@ for file_path in sorted(weatherdata_files): try: wh_sum_date = local_timezone.localize(datetime.strptime(file_name, filename_dateformat)) except ValueError as e: - logging.info(e) + logging.error(e) continue # Only process files from the three last days (if this is not a work from scratch) @@ -247,18 +256,22 @@ template = env.get_template("mapfile/template.j2") output = template.render({ "model_id":model_id, "timestep_dates": timestep_dates, - "mapserver_data_dir": os.getenv("MAPSERVER_DATA_DIR"), - "mapserver_mapfile_dir": os.getenv("MAPSERVER_MAPFILE_DIR"), + "mapserver_data_dir": f"{os.getenv('MAPSERVER_DATA_DIR')}{year}/", + "mapserver_mapfile_dir": f"{os.getenv('MAPSERVER_MAPFILE_DIR')}{year}/", "mapserver_log_file": os.getenv("MAPSERVER_LOG_FILE"), "mapserver_image_path": os.getenv("MAPSERVER_IMAGE_PATH"), "mapserver_extent": os.getenv("MAPSERVER_EXTENT"), "languages": languages, "language_codes": language_codes }) -mapfile_outdir = os.getenv("MAPFILE_DIR") -with open(f"{mapfile_outdir}/{model_id}.map", 'w') as f: + +with open(f"{mapfile_outdir}{model_id}.map", 'w') as f: f.write(output) +query_template = os.path.join(home_dir, "mapfile/query_template.xml") +query_template_whs = os.path.join(home_dir, "mapfile/query_template_WHS.xml") +shutil.copy(query_template, mapfile_outdir) +shutil.copy(query_template_whs, mapfile_outdir) # Remove all temporary/intermediary files subprocess.run(f"rm {tmpfile_path}wh_3daysum*.nc", shell=True)