From e1e1e2ff2661c009882fa1b20665682fa74bd056 Mon Sep 17 00:00:00 2001 From: Andreas Gattringer <andreas.gattringer@univie.ac.at> Date: Sun, 18 Jun 2023 20:03:48 +0200 Subject: [PATCH] butterflies: save overlay grid --- .../butterflies/butterflies_action_helpers.c | 3 +++ src/modules/butterflies/butterflies_actions.c | 15 +++++++++++++ src/modules/butterflies/butterflies_actions.h | 3 +++ .../butterflies/butterflies_filenames.c | 22 +++++++++++++++++++ .../butterflies/butterflies_filenames.h | 1 + 5 files changed, 44 insertions(+) diff --git a/src/modules/butterflies/butterflies_action_helpers.c b/src/modules/butterflies/butterflies_action_helpers.c index 7b5cfa9..e551e1a 100644 --- a/src/modules/butterflies/butterflies_action_helpers.c +++ b/src/modules/butterflies/butterflies_action_helpers.c @@ -40,6 +40,7 @@ void bf_register_actions(struct cats_configuration *conf) register_action_function(conf, bf_action_dispersal, "butterfly_action_dispersal", "egg dispersal"); register_action_function(conf, bf_action_save_grid, "bf_action_save_grid", "output"); register_action_function(conf, bf_action_save_eggs_grid, "bf_action_save_egg_grid", "egg output"); + register_action_function(conf, bf_action_save_overlay, "bf_action_save_overlay_grid", "overlay output"); register_action_function(conf, bf_action_stats_gather, "bf_action_stats_gather", "gather stats"); register_action_function(conf, bf_action_stats_reset, "bf_action_stats_reset", "reset stats"); register_action_function(conf, bf_action_stats_write, "bf_action_stats_write", "write stats"); @@ -58,8 +59,10 @@ void bf_add_actions(struct cats_configuration *conf) append_action(conf, bf_action_stats_reset, ALL_STAGES, "resetting butterfly statistics", module_name); append_action_by_name(conf, "action_load_environments", ALL_STAGES, "environment update", module_name); append_action_by_name(conf, "action_overlay_update", ALL_STAGES, "overlay update", module_name); + append_action(conf, bf_action_overlay_update, ALL_STAGES, "updating resource layer", module_name); append_action(conf, bf_action_generation_update, ALL_STAGES, "update generations", module_name); + append_action(conf, bf_action_save_overlay, ALL_STAGES, "save overlay", module_name); for (int32_t generation = data->generations_max; generation > 0; generation--) { diff --git a/src/modules/butterflies/butterflies_actions.c b/src/modules/butterflies/butterflies_actions.c index 50e91b0..a59032a 100644 --- a/src/modules/butterflies/butterflies_actions.c +++ b/src/modules/butterflies/butterflies_actions.c @@ -96,6 +96,21 @@ enum action_status bf_action_save_grid(struct cats_grid *grid, struct cats_confi return ACTION_RUN; } +enum action_status bf_action_save_overlay(struct cats_grid *grid, struct cats_configuration *conf) +{ + int32_t id = grid->id; + char *filename = bf_population_filename(conf, grid); + int module_id = CATS_MODULE_ID; + + struct grid_data_butterflies *module_data = grid->grid_modules[module_id].module_data; + + struct grid_wrapper data = gridwrapper(module_data->info_layer, grid->dimension); + save_grid_to_gdal(&data, GDT_Int32, conf, filename, conf->param[id].species_name); + free(filename); + return ACTION_RUN; +} + + enum action_status bf_action_save_eggs_grid(struct cats_grid *grid, struct cats_configuration *conf) { diff --git a/src/modules/butterflies/butterflies_actions.h b/src/modules/butterflies/butterflies_actions.h index 29b87ac..8149f3c 100644 --- a/src/modules/butterflies/butterflies_actions.h +++ b/src/modules/butterflies/butterflies_actions.h @@ -24,4 +24,7 @@ enum action_status bf_action_generation_start(struct cats_grid *grid, __attribut enum action_status bf_action_generation_update(struct cats_grid *grid, struct cats_configuration *conf); enum action_status bf_action_save_eggs_grid(struct cats_grid *grid, struct cats_configuration *conf); + +enum action_status bf_action_save_overlay(struct cats_grid *grid, struct cats_configuration *conf) + #endif //CATS_BUTTERFLIES_ACTIONS_H diff --git a/src/modules/butterflies/butterflies_filenames.c b/src/modules/butterflies/butterflies_filenames.c index 3af222a..6f71a7f 100644 --- a/src/modules/butterflies/butterflies_filenames.c +++ b/src/modules/butterflies/butterflies_filenames.c @@ -63,6 +63,28 @@ char *bf_population_eggs_filename(struct cats_configuration *conf, struct cats_g return filename; } + +char *bf_population_overlay_filename(struct cats_configuration *conf, struct cats_grid *grid) +{ + assert(grid != NULL); + assert(conf != NULL); + assert(conf->grid_count == 1); + + + struct string_array *path = get_output_directory(conf, "butterfly-overlay"); // FIXME MAKE DIRECTORY + + char *extension = get_extension(conf, "overlay"); + struct string_array *name = standard_output_file_name(conf, NULL, NULL, NULL); + char *filename = assemble_filename(path, name, "_", extension); + + free_string_array(&path); + free_string_array(&name); + free(extension); + + return filename; +} + + char *bf_stats_filename(struct cats_configuration *conf, struct cats_grid *grid) { struct string_array *path = get_output_directory(conf, "stats"); diff --git a/src/modules/butterflies/butterflies_filenames.h b/src/modules/butterflies/butterflies_filenames.h index 0473281..79c42e5 100644 --- a/src/modules/butterflies/butterflies_filenames.h +++ b/src/modules/butterflies/butterflies_filenames.h @@ -5,4 +5,5 @@ char *bf_population_eggs_filename(struct cats_configuration *conf, struct cats_grid *grid); char *bf_population_filename(struct cats_configuration *conf, struct cats_grid *grid); char *bf_stats_filename(struct cats_configuration *conf, struct cats_grid *grid); +char *bf_population_overlay_filename(struct cats_configuration *conf, struct cats_grid *grid); #endif //CATS_BUTTERFLIES_FILENAMES_H -- GitLab