Skip to content
Snippets Groups Projects
Commit 4373473b authored by Lene Wasskog's avatar Lene Wasskog
Browse files

feat: Create empty map file before model start date [GRIDV-133]

parent 0de4228f
Branches
No related tags found
No related merge requests found
Pipeline #6153 passed
...@@ -155,6 +155,36 @@ def split_by_date(input_file, prefix): ...@@ -155,6 +155,36 @@ def split_by_date(input_file, prefix):
logging.debug(f"Data for {date} extracted to {output_filename}") logging.debug(f"Data for {date} extracted to {output_filename}")
def create_mapfile(timestep_dates):
languages = []
language_codes = config["i18n"]["languages"].split(",")
for language_code in language_codes:
language = {"language_code": language_code}
if ("i18n.%s" % language_code) in config:
for keyword in config["i18n.%s" % language_code]:
language[keyword] = config["i18n.%s" % language_code][keyword]
languages.append(language)
env = Environment(loader=FileSystemLoader(template_dir))
template = env.get_template(template_file_name)
output = template.render(
{
"model_id": model_id,
"timestep_dates": timestep_dates,
"mapserver_data_dir": f"{os.getenv('MAPSERVER_RESULT_TIF_DIR')}{year}/",
"mapserver_mapfile_dir": f"{os.getenv('MAPSERVER_RESULT_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,
}
)
with open(f"{result_mapfile_year_dir}/{model_id}.map", "w") as f:
f.write(output)
if __name__ == "__main__": if __name__ == "__main__":
script_start_time = time.time() # For logging execution time script_start_time = time.time() # For logging execution time
today = datetime.now().date() # timezone not included, since we are only interested in the year today = datetime.now().date() # timezone not included, since we are only interested in the year
...@@ -186,25 +216,28 @@ if __name__ == "__main__": ...@@ -186,25 +216,28 @@ if __name__ == "__main__":
logging.error(f"Cron run and today is after model period end {model_end_date}. Quit.") logging.error(f"Cron run and today is after model period end {model_end_date}. Quit.")
sys.exit() sys.exit()
logging.info(
f"Model start date {model_start_date}. Model end date {model_end_date}."
)
# Ensure that model is not run before model run period
if today < model_start_date:
logging.error("Model period not started. Create empty mapfile and quit.")
create_mapfile([])
sys.exit()
start_date = model_start_date start_date = model_start_date
if year == today.year and today + timedelta(days=2) <= model_end_date: two_days_from_now = today + timedelta(days=2)
end_date = today + timedelta(days=2) if year == today.year and two_days_from_now < model_end_date:
end_date = two_days_from_now
else: else:
end_date = model_end_date end_date = model_end_date
logging.info(
f"Model start date {model_start_date}. Model end date {model_end_date}."
)
logging.info( logging.info(
f"Attempt to run model {model_id} for year {year}, start date {start_date} and end date {end_date}" f"Attempt to run model {model_id} for year {year}, start date {start_date} and end date {end_date}"
) )
# Ensure that model is not run before model run period
if today < start_date:
logging.error("Model period not started. Quit.")
sys.exit()
if year == today.year: if year == today.year:
weather_data_file = f"{weather_data_dir}{weather_data_filename_pattern.replace('%Y', str(year))}" weather_data_file = f"{weather_data_dir}{weather_data_filename_pattern.replace('%Y', str(year))}"
else: else:
...@@ -307,35 +340,7 @@ if __name__ == "__main__": ...@@ -307,35 +340,7 @@ if __name__ == "__main__":
stdout=devnull, stdout=devnull,
) )
# Generate mapfile create_mapfile(timestep_dates)
# Building data sets for language specific legends
languages = []
language_codes = config["i18n"]["languages"].split(",")
for language_code in language_codes:
language = {"language_code": language_code}
if ("i18n.%s" % language_code) in config:
for keyword in config["i18n.%s" % language_code]:
language[keyword] = config["i18n.%s" % language_code][keyword]
languages.append(language)
env = Environment(loader=FileSystemLoader(template_dir))
template = env.get_template(template_file_name)
output = template.render(
{
"model_id": model_id,
"timestep_dates": timestep_dates,
"mapserver_data_dir": f"{os.getenv('MAPSERVER_RESULT_TIF_DIR')}{year}/",
"mapserver_mapfile_dir": f"{os.getenv('MAPSERVER_RESULT_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,
}
)
with open(f"{result_mapfile_year_dir}/{model_id}.map", "w") as f:
f.write(output)
query_template = os.path.join(home_dir, "mapfile/query_template.xml") query_template = os.path.join(home_dir, "mapfile/query_template.xml")
query_template_temperature = os.path.join(home_dir, "mapfile/query_template_temperature.xml") query_template_temperature = os.path.join(home_dir, "mapfile/query_template_temperature.xml")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment