Understanding essential input files
understanding_input_files.Rmd
In this vignette, we will cover the contents for all the essential inputs used to build damage functions for a farm. As an example, we will build damage functions for a winery.
The winery in our example is shown in the image below. It is composed of 10 plots and 5 different grape varieties which each have different yields, prices and crop calendars.
Typology folder
Crop vulnerability
The typology
folder is mainly used to declare the
correspondance between a crop and its vulnerability type. This
correspondance takes the form of a data.frame which loaded by default
from a file named floodam.csv
file in the typology folder.
This data.frame contains 2 columns:
-
type1
indicates which crop vulnerability should be used fortype2
crop -
type2
indicates the name of the crop
In our example, it looks like this:
type1 | type2 |
---|---|
vineyard | variety_1 |
vineyard | variety_2 |
vineyard | variety_3 |
vineyard | variety_4 |
vineyard | variety_5 |
vineyard | vineyard_floodam |
As you can see, all vineyard varieties have the basic
vineyard
vulnerability. An optional supplementary row
indicates a crop named vineyard_floodam
which has been
added to the example to show the difference between the basic
vineyard
damage function in floodam.agri
and
the ones specific to the winery.
Note that you do not have the obligation of creating the typology
folder or the floodam.csv
file. If you wish to do so, you
will have to specify the typo
argument when calling
prepare_culture()
, prepare_calendar()
and
prepare_action_value()
.
Crop names (optional)
An optional file that can be added to the typology
folder named title.culture.csv
is gives the correspondance
between the “floodam” crop names and names that should be used for
graphical visualisation. In our example, the correspondance data.frame
looks like this:
code | titre |
---|---|
variety_1 | Early vineyard 1 |
variety_2 | Early vineyard 2 |
variety_3 | Medium vineyard |
variety_4 | Late vineyard 2 |
variety_5 | Late vineyard 2 |
vineyard_floodam | Default vineyard |
Stat folder
The stat
folder is used to keep files which give crops
calendars, yields and various costs (treatment costs, harvest cost,
selling prices, etc.). There is no need to include
vineyard_floodam
, to add any of these files because they
will be found by default in your library’s installation folder.
Yields
Yields can be found in a file for which the name can be customized
but should start with stat.<customized_name>.csv
. If
yields for several years are specified, a mean of all available data
will be calculated.
-
culture
: name of crop -
yield.<year_n>
: yield for a specific year -
yield.<year_n+x>
: yield for another year (optional)
Below is a table showing the one used in our example.
culture | yield.2020 | yield.2021 |
---|---|---|
variety_1 | 50 | 55 |
variety_2 | 60 | 80 |
variety_3 | 70 | 70 |
variety_4 | 80 | NA |
variety_5 | 90 | 100 |
Crop calendars
Crop calendars can be found in a file which must be named
calendar.csv
. It is a data.frame which contains 3
columns:
-
culture
: name of crop -
phase
: name of cropping stages, can either be a physiological stage (“maturity”) or a specific task (i.e. “harvest”) -
start.week
: starting date of phase (in week)
In our example, it looks like this:
Action values
Action values can be found in a file which must be named
action.value.table.csv
. It is a data.frame which contain
informations needed to evaluate costs of tasks to be performed when
flooded or not. By default, there are the following 17 columns named
accordingly to damagement files (see damagement section):
-
culture
: name of crop -
harvest
: harvest cost (€/ha) -
sowing
: sowing cost (€/ha) -
treatment
: cost of one treatment (€/ha) -
replanting
: replanting cost (€/ha) -
oversowing
: oversowing cost, generally half the sowing cost (€/ha) -
chemical.harvest
: cost of chemical harvest (€/ha) -
late.yield.loss
: late yield loss rate when there is only one late yield defined (rate between 0 and 1) -
late.yield.loss1
: first rate of late yield loss when there are several late yields defined (rate between 0 and 1) -
late.yield.loss2
: second rate of late yield loss when there are several late yields defined (rate between 0 and 1) -
treatment.dose.fruitset
: number of doses for the treatments in case of flood at the ‘fruitset’ phase -
treatment.dose.veraison
: number of doses for the treatments in case of flood at the ‘veraison’ phase -
cut1.rate
: first harvest cutting loss rate (rate between 0 and 1) -
cut2.rate
: second harvest cutting loss rate (rate between 0 and 1) -
cut3.rate
: third harvest cutting loss rate (rate between 0 and 1) -
half.rate
: harvest loss rate (rate between 0 and 1) -
sale.price
: crop sale price (€/ql, €/ql dried matter, €/hl)
Below is the content of this table in our example. Only the columns concerning the vineyard crop are shown:
culture | harvest | treatment | replanting | treatment.dose.fruitset | treatment.dose.veraison | sale.price |
---|---|---|---|---|---|---|
variety_1 | 595 | 80 | 26584 | 4 | 2 | 40 |
variety_2 | 595 | 80 | 26584 | 4 | 2 | 50 |
variety_3 | 595 | 80 | 26584 | 4 | 2 | 60 |
variety_4 | 595 | 80 | 26584 | 4 | 2 | 70 |
variety_5 | 595 | 80 | 26584 | 4 | 2 | 80 |
As you can see, in this example, we only modified the
sale.price
of each grape variety.
Damagement folder
The damagement
folder is used to keep files which give
vulnerability rules for each crop. Vulnerability files for base
floodam
crops are delivered in your library installation
folder. In our example we will use the basic vulnerability rules for the
vineyard crop which will be found by default thanks to the specified
correspondance of crops and their vulnerability in
floodam.csv
or in the typo
argument (see
above).
For each crop, there is a folder in which there are four files:
-
action.csv
: rules for the calculation of action costs in case of flooding. -
damaging.complement.csv
: complementary information todamaging.core.csv
to build the damage functions. -
damaging.core.csv
: core damage functions. -
rule.csv
: rules for calculating loss of plant or yield.
Creating the damage functions
You are now briefed to understand damage functions are built ! You can run the code below to build the damage functions for this winery and view the results with the available functions to produce plots.
Step 1: declaring paths
#> Loading required package: floodam.agri
library(floodam.agri)
#> Setting up environment paths (inputs and outputs)
output = file.path(tempdir(), "winery")
input = setNames(
system.file("extdata", "vignettes", "winery", package = "floodam.agri"),
"winery"
) # setting a name to input helps keep track of where data has been found
path = init_path(
output = output,
input = input,
default = TRUE # default value, TRUE is obligatory to fetch the default
# damagement files
)
Step 2: preparing data
#> Extracting damagement files to output
prepare_culture(path)
#> Extracting and copying calendars to output
prepare_calendar(path)
#> Building weight files
prepare_typology(path)
#> Preparing necessary action values and yields
prepare_action_value(path)
floodam.agri
comes with a default visualisation function
called plot_crop_calendar()
which creates a plot of the
different physiological phases for a set of crops. Use it to compare
calendars as shown in the chunk below:
plot_crop_calendar(
path,
title_culture = TRUE,
reference = "vineyard_floodam", # the reference crop appears above other crops
order_phase = "harvest" # order crops by harvest date
)
Step 3.1: calculate_damaging()
Use calculate_damaging
to build raw damage functions.
For the purpose of our example, we will simplify the default flood
resolution so that the running time is shorter by changing the loaded
global data stored in the LEVEL
variable.
#> Simplifying LEVEL
level = LEVEL
level[["duration"]] = seq(0, 5, 1)
level[["height"]] = seq(0, 100, 10)
#> Calculating damage function
damaging = calculate_damaging(
path,
culture = NULL,
level = level,
update.hazard = TRUE,
retrieve = TRUE
)
#> Update of culture damaging functions:
#> Processing variety_1... Finished in 1.05 secs
#> Processing variety_2... Finished in 1.06 secs
#> Processing variety_3... Finished in 1.03 secs
#> Processing variety_4... Finished in 1.05 secs
#> Processing variety_5... Finished in 1.06 secs
#> Processing vineyard_floodam... Finished in 1.05 secs
#> ... processed in 6.30 secs
Step 3.2: combine_damaging()
Use combine_damaging
to combine the raw damage functions
in one file along with associated hazard parameters.
#> Combine damage into one file for each damage type
combine = combine_damaging(
path = path,
damage.culture = damaging,
retrieve = "total" # one of c("total", "yield.annual", "yield.differed",
# "replanting", "soil", material")
)
#> Processing combinations of damaging curves... ... Finished in 0.70172 secs
floodam.agri
comes with several default visualisation
functions. For example you can use plot_damage_function()
which creates a plot of the damage curves for a one or more crops. Use
it to compare damage functions as shown in the chunk below:
#> Show plot
plot_damage_function(
path = path,
damage = "total",
legend = TRUE,
main = "Damage curves for all grape varieties of the winery",
current = 1,
duration = 4,
height = 100
)
You can also view disaggregated damage curves thanks to
plot_disaggregated_damage()
. Here is an example of its use
below:
#> Show plot
plot_disaggregated_damage_function(
path = path,
culture = "variety_1",
current = 1,
duration = 4,
height = 100
)
Step 3.3: aggregate_damage()
Use aggregate_damage
to simplify the damage curves by
aggregating weeks into seasons, durations into periods, etc. In the
chunk below we use the default aggregation parameters provided by
floodam.agri
.
#> Aggregate damage
agg_damaging = aggregate_damage(
path,
damage_origin = "total" # default
)
As shown in getting started vignette,
you can use plot_aggregated_damage
to view the damage
curves produced by aggregate_damage()
.
#> Show plot
plot_aggregated_damage(
path = path,
damage = "total.aggregate", # default
culture = "variety_1",
current = "light", # default
duration = c("short", "long"), # default
legend = "include"
)