| Title: | Climate Classification According to Several Indices |
|---|---|
| Description: | Classification of climate according to Koeppen - Geiger, of aridity indices, of continentality indices, of water balance after Thornthwaite, of viticultural bioclimatic indices. Drawing climographs: Thornthwaite, Peguy, Bagnouls-Gaussen. |
| Authors: | Emanuele Eccel [aut], Fabio Zottele [aut, cre], Emanuele Cordano [aut], Giambattista Toller [aut], Fondazione Edmund Mach [cph] |
| Maintainer: | Fabio Zottele <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 2.1.1 |
| Built: | 2026-05-27 07:04:26 UTC |
| Source: | https://github.com/cran/ClimClass |
Calculates aridity according to several indices.
arid( clim_norm, coeff_rad = NULL, coeff_Hargr = rep(0.75, 12), monthly = FALSE, indices = 1:6 )arid( clim_norm, coeff_rad = NULL, coeff_Hargr = rep(0.75, 12), monthly = FALSE, indices = 1:6 )
clim_norm |
climatic normals |
coeff_rad |
mean monthly solar radiation; used only for Thornthwaite's annual index Im. Default is |
coeff_Hargr |
(vector of monthly) correction coefficient(s) for Hargreaves' equation |
monthly |
logic. Sets calculation to the monthly mode if |
indices |
set of aridity indices to be listed. Default is all indices (1 to 6 for annual, 1 to 2 for monthly). |
clim_norm is a monthly data frame of climate normals, with column names: "P", "Tn", "Tx", "Tm" (precipitation, minimum, maximum and mean temperature, respectively). It can be the output of function climate.
Monthly potential evapotranspiration (PE) is calculated via the Hargreaves' formula (Hargreaves and Samani, 1985):
PE = (0.0023*(clim_norm$Tx - clim_norm$Tn)^(0.5)*(clim_norm$Tm+17.8)*coeff_rad)* lmv * coeff_Hargr
where Tn, Tx, Tm are min, max, and mean temperatures, respectively, and lmv is the number of days in any month.
coeff_rad and coeff_Hargr are needed only by Thornthwaite's annual index Im and UNEP's Ai index, whose PE term is calculated via Hargreaves' equation.
coeff_rad corresponds to the mean monthly extra-atmospheric radiation (see function ExAtRa).
coeff_Hargr is either a single value or a vector of 12 coefficients to adjust Hargreaves' estimation of potential evapotranspiration (implemented in Im and Ai indices). From calibration in 6 stations from the same network of Trent_climate, its average value is 0.75.
When monthly is TRUE, a data frame with monthly detail is generated for one station, instead of a synthetic single-line data frame.
indices' values are the following:
1 De Martonne - Ia (annual or monthly). De Martonne, 1925.
2 Thornthwaite - Im (annual or monthly). Thornthwaite, 1948.
3 Emberger - Q (annual only). Emberger, 1955.
4 Lang - R (annual only) - only for positive mean annual temperature. Lang, R., 1920.
5 Rivas-Martinez - Io (annual only). Rivas - Martinez, website http://www.globalbioclimatics.org/
6 UNEP - Ai (annual only). UNEP, 1997.
A reference for the aridity degree for any index is given in the list object arid_ind_tables (see Trent_climate.
Either a single-line data frame (when monthly = FALSE) with the desired aridity index(es), or a data frame (monthly = TRUE), with monthly values of the desired index(es).
Emanuele Eccel
De Martonne E., 1925: Traite de Geographie Physique: 3 tomes, Paris.
Emberger, L., 1955. Une classification biogeographique des climats. Receuil des travaux des laboratoires de botanique, geologie et zoologie de la faculte des sciences de l'universite de Montpellier (Serie Botanique), Fascicule 7, 3-43.
Hargreaves, G.H., and Samani, Z.A., 1985. Reference crop evapotranspiratin from temperature. Applied Engineering in Agriculture, 1(2):96-99
Lang, R., 1920. Verwitterung und Bodenbildung als Einfuehrung in die Bodenkunde. Schweizerbart Science Publishers, Stuttgart
Rivas-Martinez - http://www.globalbioclimatics.org/
Thornthwaite, C. W., 1948: An Approach toward a Rational Classification of Climate. Geographical Review, Vol. 38, No. 1(Jan.):55-94.
UNEP (United Nations Environment Programme), 1997. World atlas of desertification 2ED. UNEP, London.
data(Trent_climate) # clima_81_10 is a list of data frames having climatic means of temperature and precipitation # as required by the aridity indices algorithms, each one referring to one station. # It can be the output of function climate. # coeff_rad is a monthly vector of average daily extra-atmospheric solar radiation, # calculated e.g. by function ExAtRa.data(Trent_climate) # clima_81_10 is a list of data frames having climatic means of temperature and precipitation # as required by the aridity indices algorithms, each one referring to one station. # It can be the output of function climate. # coeff_rad is a monthly vector of average daily extra-atmospheric solar radiation, # calculated e.g. by function ExAtRa.
Used for reference in aridity indices assessment (see function arid and
references for data sources).
data(Trent_climate)data(Trent_climate)
List formed by six data frames.
Tranforms a data frame (see example dataset) into a data frame format like 'datcli' in 'climatol' package
as.datcli( df, station, MonthField = "month", PrecField = "P", MinTempField = "Tn", MaxTempField = "Tx", MeanTempField = "Tm", AbsMinTempField = "AbsTn", AbsMinTempOffset = 4, StationField = "station" )as.datcli( df, station, MonthField = "month", PrecField = "P", MinTempField = "Tn", MaxTempField = "Tx", MeanTempField = "Tm", AbsMinTempField = "AbsTn", AbsMinTempOffset = 4, StationField = "station" )
df |
data frame or list |
station |
name |
MonthField |
character string for month field in |
PrecField |
character string for Mean Precipitation field in |
MinTempField |
character string for Mean Daily Minimum Temperature field in |
MaxTempField |
character string for Mean Daily Maximum Temperature field in |
MeanTempField |
character string for Mean Daily Maximum Temperature field in |
AbsMinTempField |
character string for Absolute Monthly Minimum Temperature field in |
AbsMinTempOffset |
estimated offset between Average Min Temperature and Absolute Min Temperature. |
StationField |
character string for Station field in |
Emanuele Cordano
### Not Run!! # Install 'climatol' from 'https://www.climatol.eu/' first ### Then load the package, uncomment and run the following line # library(climatol) library(stringr) data(Trent_climate) TrentinoClimateDf <- do.call(rbind,clima_81_10) names <- rownames(TrentinoClimateDf) TrentinoClimateDf$station <- unlist(lapply(X=str_split(names,pattern="[.]"),FUN=function(x) {x[1]})) station <- "T0129" datcli <- as.datcli(TrentinoClimateDf,station=station) ### Not Run!! # Install 'climatol' from 'https://www.climatol.eu/' first ### Then load the package, uncomment and run the following line # diagwl(datcli,est=station,alt=100,per="Period",mlab="en") ## plots a Walter-Lieth's climograph### Not Run!! # Install 'climatol' from 'https://www.climatol.eu/' first ### Then load the package, uncomment and run the following line # library(climatol) library(stringr) data(Trent_climate) TrentinoClimateDf <- do.call(rbind,clima_81_10) names <- rownames(TrentinoClimateDf) TrentinoClimateDf$station <- unlist(lapply(X=str_split(names,pattern="[.]"),FUN=function(x) {x[1]})) station <- "T0129" datcli <- as.datcli(TrentinoClimateDf,station=station) ### Not Run!! # Install 'climatol' from 'https://www.climatol.eu/' first ### Then load the package, uncomment and run the following line # diagwl(datcli,est=station,alt=100,per="Period",mlab="en") ## plots a Walter-Lieth's climograph
Plots Bagnouls - Gaussen climatic charts of precipitation and temperature. Conventionally, in this chart the scale of precipitation has a double extension with respect to the scale of temperature (Bagnouls and Gaussen, 1953).
bagn_gau( clim_norm_sta, save_dir = NULL, format = NULL, main_title = NULL, st_name = NULL, trace_grid = TRUE, tick_step = 20, bar_width = 30, bar_col = "grey", trace_0.line = TRUE, ... )bagn_gau( clim_norm_sta, save_dir = NULL, format = NULL, main_title = NULL, st_name = NULL, trace_grid = TRUE, tick_step = 20, bar_width = 30, bar_col = "grey", trace_0.line = TRUE, ... )
clim_norm_sta |
data frame with climatic normals |
save_dir |
name of destination directory for graphs (if any). |
format |
graphical format of graphs; default is NULL. |
main_title |
main title for all charts; e.g., it may include references to station id. Default is |
st_name |
name to be included into graphs titles. Only for file output. Default is |
trace_grid |
logic. If |
tick_step |
step for Y axis (precipitation). Default is 20 (mm) |
bar_width |
width of bars in the chart. Default is 30. |
bar_col |
color of bars. Default is "grey". |
trace_0.line |
logic. If |
... |
arguments to be passed to methods, such as graphical parameters (see |
clim_norm_sta can be e.g. one element of the output of function climate. See examples.
If format is NULL (default), graphs are sent to the console. Otherwise, a file is produced and saved. format is used only if the graphs are to be sent to files. Values allowed are: "png", "jpeg", "tiff", "bmp".
If one or more data are missing, the chart is not processed.
Most graphic parameters for functions plot, axis, and mtext are accepted.
Bagnouls - Gaussen's charts of precipitation and temperature.
A conflict is generated if parameters already used by the function are passed (e.g. col - use col.main, col.axis, ..., instead).
Emanuele Eccel
Bagnouls, F., and Gaussen, H., 1953: Saison seche et indice xerothermique. Docum. pour les Cartes des Prod. Veget. Serie: Generalite, 1 (1953), pp. 1-49
data(Trent_climate) # clima_81_10 can be generated from monthly time series by function "climate". par(ask=TRUE) for(sta in 1:length(clima_81_10)) { bagn_gau(clim_norm_sta= clima_81_10 [[sta]], main_title=paste(names(clima_81_10[sta]), " 1981-2010") , bar_width=40) }data(Trent_climate) # clima_81_10 can be generated from monthly time series by function "climate". par(ask=TRUE) for(sta in 1:length(clima_81_10)) { bagn_gau(clim_norm_sta= clima_81_10 [[sta]], main_title=paste(names(clima_81_10[sta]), " 1981-2010") , bar_width=40) }
Climatic normals of precipitation and temperature (minimum, maximum, and mean) for the
climatic period 1981 - 2010. It has been calculated by function climate.
data(Trent_climate)data(Trent_climate)
A list (one table for each station) of 28 monthly climatic normals
Creates climate mean monthly values from a monthly series of temperature and precipitation.
climate(series, first.yr = NULL, last.yr = NULL, max.perc.missing)climate(series, first.yr = NULL, last.yr = NULL, max.perc.missing)
series |
the monthly series of temperature and precipitation. |
first.yr |
first year of the period over which climatology is calculated |
last.yr |
last year of the period over which climatology is calculated |
max.perc.missing |
maximum acceptable percentage of missing data in the averaging period from |
series is a data frame with years, months, temperature (and precipitation) values. Names in series columns must include: year, month, Tn and Tx (minimum and maximum temperatures, respectively) or, as an alternative, Tm (mean temperatures).
If first.yr or last.yr are NULL (default), the lowest and highest values in series are taken as the period.
A data frame with climatic monthly values of: precipitation, minimum and maximum temperatures (if existing in series), mean temperature (either averaged from existing values in series, or calculated by the function as (Tn + Tx)/2), absolute minimum monthly temperature.
Emanuele Eccel
data(Trent_climate) # clima_81_10 is a list of data frames of the type series, # each one referring to one station # having climatic means of temperature and precipitation clima_81_10<-lapply(lista_cli, FUN=climate, first.yr=1981, last.yr=2010, max.perc.missing=15)data(Trent_climate) # clima_81_10 is a list of data frames of the type series, # each one referring to one station # having climatic means of temperature and precipitation clima_81_10<-lapply(lista_cli, FUN=climate, first.yr=1981, last.yr=2010, max.perc.missing=15)
"Radiative energy coefficients" for Hargreaves' equation, corresponding to the
daily extra-atmospheric solar radiation energy. It is the output of function
ExAtRa.
data(Trent_climate)data(Trent_climate)
An array of 12 numerics
Calculates climate continentality / oceanicity according to several indices.
contin( clim_norm, latitude = NULL, elevation = NULL, Michalet_correction = FALSE, indices = 1:5 )contin( clim_norm, latitude = NULL, elevation = NULL, Michalet_correction = FALSE, indices = 1:5 )
clim_norm |
climatic normals |
latitude |
station latitude in degrees. Used in Gorczynski's and Conrad's classifications (indices 1 and 2). Default is |
elevation |
station elevation in m. Used in Gams' classification (index 3). Default is |
Michalet_correction |
logic: if |
indices |
set of aridity indices to be listed. Default is all indices (1 to 5). |
clim_norm is a monthly data frame of climate normals, with column names: "P", "Tn", "Tx", "Tm" (precipitation, minimum, maximum and mean temperature, respectively). It can be the output of function climate.
indices' values are the following:
1: Gorczynski - K.G. (Gorczynski, L., 1920).
2: Conrad - K.C. (Conrad, 1946).
3: Gams - alpha. (Gams, H., 1932). For Michalet's correction: Michalet and Souchier, 1991.
4: Rivas-Martinez - Ic. (Rivas - Martinez, web page).
5: Amann - H. (Amann, 1929)
A reference for the continentality / oceanicity degree is given in the list object continental_ind_tables of data set Trent_climate.
If Michalet's correction is applied to Gams' hygric continentality index, the value of precipitation is proportionally diminished for elevations below 900 m a.s.l. See also Lebourgeoise, 2010.
A single-line data frame with the desired continentality index(es).
Emanuele Eccel
Amann, J., 1929: L'hygrothermie du climat, facteur determinant la repartition des especes atlantiques. Revue Bryol., 56:126-133.
Conrad, V., 1946: Usual formulas of continentality and their limits of validity. Transactions, American Geophysical Union, Volume 27, Issue 5, p. 663-664.
Gams, H., 1932: Die klimatische Begrenzung von Pflanzenarealen und die Verteilung der hygrischen Kontinentalitaet in den Alpen. Zeitschr. Ges. Erdkunde, Berlin.
Gorczynski, L., 1920: Sur le calcul du degre de continentalisme et son application dans la climatologie. Geografiska Annaler 2, 324-331.
Lebourgeoise, F., 2010: Cours de bioclimatologie a l'usage des forestiers. Departement SIAFEE, UFR Forets, Arbres et Milieux Naturels. ENGREF, Nancy Cedex.
Michalet, R., and Souchier, B., 1991: Une approche synthetique biopedoclimatique del montagnes mediterraneennes: l'exemple du Maroc septemptrional. Thesis, Univ. J. Fourier, Grenoble, 273 pp.
Rivas-Martinez: http://www.globalbioclimatics.org/.
data(Trent_climate) # clima_81_10 is a list of data frames having climatic means of temperature and precipitation as # required by the aridity indices algorithms, each one referring to one station. # It can be the output of function climate. # creates a data frame with all the continentality indices for all stations in clima_81_10 latit<-coord_elev$North elev<-coord_elev$Elevation contin_I<-NULL for(i in 1:length(clima_81_10)) { contin_I[[i]]<-contin(clima_81_10[[i]], latitude=latit[i], elevation=elev[i], Michalet_correction=TRUE) } names(contin_I)<-names(clima_81_10)data(Trent_climate) # clima_81_10 is a list of data frames having climatic means of temperature and precipitation as # required by the aridity indices algorithms, each one referring to one station. # It can be the output of function climate. # creates a data frame with all the continentality indices for all stations in clima_81_10 latit<-coord_elev$North elev<-coord_elev$Elevation contin_I<-NULL for(i in 1:length(clima_81_10)) { contin_I[[i]]<-contin(clima_81_10[[i]], latitude=latit[i], elevation=elev[i], Michalet_correction=TRUE) } names(contin_I)<-names(clima_81_10)
Used for reference in continentality/oceanicity indices assessment (see function
contin and references for data sources).
data(Trent_climate)data(Trent_climate)
List of 4 data frames
Coordinates and elevation for each station in the data set. Coordinates are geographical and elevation is measured in meters above mean sea level.
data(Trent_climate)data(Trent_climate)
Data frame of 40 observations of 4 variables
Calculates Extra-Atmospheric Radiation. Called by function arid for Thornthwaite's index.
ExAtRa(DOY, latitude, Gsc = 0.082, unit = "mm", T = 12)ExAtRa(DOY, latitude, Gsc = 0.082, unit = "mm", T = 12)
DOY |
day of the year. |
latitude |
latitude in degrees (negative for S emishpere). |
Gsc |
solar constant in MJ m-2 min-1 (default: 0.0820). |
unit |
unit for solar radiation. Accepted values are "mm" and "MJ". |
T |
temperature in degrees C. Default is 12. |
If unit = "mm", the calculated value represents the water height evaporated by solar radiation, calculated by the latent heat for vaporization. Otherwise (unit = "MJ") output is the solar radiation energy in MJ.
Temperature T is used only for the assessment of latent heat of vaporization, when unit = "mm".
The daily extra-atmospheric solar radiation energy, espressed either in MJ or in mm of evaporated water.
Emanuele Eccel
data(Trent_climate) # creates a vector with middle days for every month in a year quinci <- paste(15,"/",1:12,"/",2014,sep="") posixlt <- strptime(quinci, format="%d/%m/%Y") yDay <- posixlt$yday+1 # field yday starts from 0 latitude<-46 # generates 12 values, one for each month coeff_rad<- ExAtRa(DOY=yDay,latitude=latitude, unit="mm")data(Trent_climate) # creates a vector with middle days for every month in a year quinci <- paste(15,"/",1:12,"/",2014,sep="") posixlt <- strptime(quinci, format="%d/%m/%Y") yDay <- posixlt$yday+1 # field yday starts from 0 latitude<-46 # generates 12 values, one for each month coeff_rad<- ExAtRa(DOY=yDay,latitude=latitude, unit="mm")
General climate classification after Koeppen - Geiger.
koeppen_geiger( clim_norm, A_B_C_special_sub.classes = FALSE, clim.resume_verbose = TRUE, class.nr = FALSE )koeppen_geiger( clim_norm, A_B_C_special_sub.classes = FALSE, clim.resume_verbose = TRUE, class.nr = FALSE )
clim_norm |
average values (climate normals) for the desired period. |
A_B_C_special_sub.classes |
logical. Sets if calculations have to consider sub-classes based on rain features in climate types A, B, and C (see details). Default is |
clim.resume_verbose |
logical. If |
class.nr |
logical. If |
clim_norm is a monthly data frame of climate normals, with column names: "P", "Tn", "Tx", "Tm" (precipitation, minimum, maximum and mean temperature, respectively). It can be the output of function climate.
Koeppen - Geiger's classification is based on Trewartha and Lyle, 1980. The function also holds for Southern emisphere, except for the "Gange" sub-type ("Ag" and "Cg"). Type "H" (highland climate) and sub-types "Bn" and "Cn" (where n stands for Nebel) are never attributed, being based on a qualitative description in the quoted reference.
Sub-type "w" (wet-and-dry) or "m" (monsoon) in climate "A" is set according to the definition after Encyclopaedia Britannica (http://www.britannica.com/EBchecked/topic/322068/Koppen-climate-classification): if P in the 4 driest months is less than 1/5 of the wettest months and if both the 4 driest and wettest months are split over non-contiguous seasons (either 2 months per season or 1 and 3 months per season), then sub-type is "".
For climate "A", the letter "m" is attributed to the first sub-type.
Climates "Cx" have P[May + June] >= 1.3 P [Aug. + Sept.] in N emisphere, and P[Nov. + Dec.] >= 1.3 P[Febr. + March] in S emisphere.
A_B_C_special_sub.classes, if TRUE, adds a letter to the second sub-type of climates: "i" or "g" (climate A), "w" or "s" (climate B), and "i", "g", or "x" (climate C).
The returned data frame contains the following fields:
T_w.m = temperature of the warmest month (degrees C)
T_c.m = temperature of the coldest month (degrees C)
T_avg = average temperature (degrees C)
P_tot = total precipitation depth (mm)
P_wint = precipitation depth in the 6 coldest (winter) months (mm)
P_summ = precipitation depth in the 6 warmest (summer) months (mm)
P_d.m = precipitation depth in the driest month (mm)
P_d.m.summ = precipitation depth in the driest month of "summer" half of the year (mm)
P_d.m.wint = precipitation depth in the driest month of "winter" half of the year (mm)
P_w.m = precipitation depth in the wettest month (mm)
P_w.m.summ = precipitation depth in the driest month of "summer" half of the year (mm)
P_w.m.wint = precipitation depth in the wettest month of "winter" half of the year (mm)
T_4th_w.m = temperature of the 4th warmest month (degrees C)
class = climatic class. If class.nr=FALSE (default), it results from the merging of "climate" (A to E) and sub-type(s).
If class.nr=TRUE the class comes from the sum of the numeric equivalent of "type" (A,..E) + "first sub type" (only first letter),
according to the following scheme:
A B C D E
10 20 30 40 50
f W s s T –> 1
w S w w F –> 2
m f f –> 3
(e.g: Af = 11, Cw = 32, EF = 52)
A one-line data frame reporting a resume of climatic features useful for the classification (if clim.resume_verbose is TRUE), and one last field (1 type - or "climate" - plus 1 or 2 sub-types) reporting Koeppen - Geiger's climate classification. See details.
Emanuele Eccel
Trewartha, G.T. and Lyle, H.H., 1980: An Introduction to Climate. MacGraw - Hill, 5th Ed. Appendix: Koeppen's Classification of Climates.
data(Trent_climate) # clima_81_10 is a list of data frames having climatic means of temperature and precipitation as # required by Koeppen - Geiger classification, each one referring to one station. # It can be the output of function climate. class_clim_l<-lapply(clima_81_10, FUN=koeppen_geiger, A_B_C_special_sub.classes=TRUE)data(Trent_climate) # clima_81_10 is a list of data frames having climatic means of temperature and precipitation as # required by Koeppen - Geiger classification, each one referring to one station. # It can be the output of function climate. class_clim_l<-lapply(clima_81_10, FUN=koeppen_geiger, A_B_C_special_sub.classes=TRUE)
A list of 28 data frames (one for each station of the meteorological network), with monthly time series of precipitation and temperature (minimum and maximum).
data(Trent_climate)data(Trent_climate)
List of 28 elements, each is a data frame of 5 variables and 636 observations
Calculation of OIV bio-climatic indices for viticulture (ref.: http://www.oiv.int/oiv/info/enresolution2012?lang=en).
oiv_ind( daily_Tn = NULL, daily_Tx = NULL, daily_Tm = NULL, daily_P = NULL, first.yr = NULL, last.yr = NULL, subs_missing = TRUE, coeff_HI = 1.04, quant_Tn_rest = 0.5, quant_Tn_veg = 0.5, quant_Tx_veg = 0.5, indices = 1:10 )oiv_ind( daily_Tn = NULL, daily_Tx = NULL, daily_Tm = NULL, daily_P = NULL, first.yr = NULL, last.yr = NULL, subs_missing = TRUE, coeff_HI = 1.04, quant_Tn_rest = 0.5, quant_Tn_veg = 0.5, quant_Tx_veg = 0.5, indices = 1:10 )
daily_Tn |
series of daily minimum temperature (data frame). Must include the following columns (and names): "year", "month", "day" and one or more station id(s), each column one Tn series. |
daily_Tx |
series of daily maximum temperature (data frame). Must include the following columns (and names): "year", "month", "day" and one or more station id(s), each column one Tx series. |
daily_Tm |
series of daily mean temperature (data frame). Must include the following columns (and names): "year", "month", "day" and one or more station id(s), each column one Tm series. |
daily_P |
series of daily precipitation (data frame). Must include the following columns (and names): "year", "month", "day" and one or more station id(s), each column one P series. |
first.yr |
first year of the period over which indices are calculated |
last.yr |
last year of the period over which indices are calculated |
subs_missing |
logical: if |
coeff_HI |
Huglin's daylength correction, as long as the number of stations, or a single coeffient; in this case it is recycled on all stations. See details. |
quant_Tn_rest |
quantile (0..1) for the choice of the position of the representative year in the series, referred to the minimum temperature during "rest" period. Default is 0.5 (median) |
quant_Tn_veg |
quantile (0..1) for the choice of the position of the representative year in the series, referred to the minimum temperature during the "vegetative" period. Default is 0.5 (median) |
quant_Tx_veg |
quantile (0..1) for the choice of the position of the representative year in the series, referred to the maximum temperature during the "vegetative" period. Default is 0.5 (median) |
indices |
set of OIV indices to be listed. Default is all indices (1 to 10). See details for numbered list of indices. |
General info about OIV indices can be sought at http://www.oiv.int/oiv/info/enresolution2012?lang=en.
In general, if first.yr or last.yr are NULL (default), the lowest and highest values in series are taken as begin and end of calculation period.
A coherence check is done on input of start / end years.
If any input is missing, corresponding indices are not be calculated. If daily_Tm is missing and both daily_Tn and daily_Tx are passed to the function,
daily_Tm is calculated as the mean of daily_Tn and daily_Tx.
OIV indices are the following:
Tm_veg: 1 - mean temperature during vegetation period. The latter is April - October (N emisphere) or October - April (S emisphere). The case (N or S) is automatically recognised by temperature data.
WI: 2 - Winkler index (degree days with a 10 C base, summation over vegetative period), see note on Tm_veg. Ref: Amerine and Winkler, 1944.
BEDD: 3 - biologically active degree days. Degree days with a lower threhold of 10 C and an upper threshold at 19 C. Ref: Gladstone, 2004.
HI: 4 - heliothermic Huglin index. A degree day summation of the average between mean and maximum temperature above 10 C, corrected by a coefficient of daylength duration.
The coefficient is given by the author in a table according to latitude. If one value is given, it is used for all stations. Default is 1.04 (lat. 44-46). Ref.: Huglin, P., 1978
CNI: 5 - cool night index. Mean of September (N emisphere) or March (S emisphere) minimum temperatures. Ref.: Tonietto and Carbonneau, 2004.
FSI: 6 - Fregoni's simplified index. Given by the product between the summation of thermal range (Tx - Tn) and the number of days with Tm > 10 C, for 30 days before ripening.
The period before ripening is taken as September (N emisphere) or March (S emisphere). Ref.: Fregoni et Pezzutto, 2000.
BI: 7 - Branas' hydrothermic index. The only index not included in OIV list, used for fungine infection proneness.
It is given by the product of precipitation (mm) by the mean temperature (C) during the period April - October (N emisphere) or October - April (S emisphere). Ref: Eynard and Dal Masso, 1990.
Tn_rest: 8 - minimum temperature during rest period. Useful for assessing winter severity. The rest period is November - March (N emisphere) or May - September (S emisphere).
The case (N or S) is automatically recognised by temperature data.
Tn_veg: 9 - minimum temperature during vegetative period. Useful for assessing spring frosts. See note on Tm_veg for periods.
Tx_veg: 10 - maximum temperature during vegetative period. Useful for assessing summer hot spells. See note on Tm_veg for periods.
quant_Tn_rest, quant_Tn_veg, quant_Tx_veg define the statistical rank of the year to be chosen as representative for assessing Tn_rest,
Tn_veg, and Tx_veg, respectfully. 0.5 (default) is the median year, 0 is the minimum (lowest temperature), 1 is the maximum (highest temperature).
The only missing index among those selected by OIV is Riou's Drought Index, which is calculated by function RDI on monthly series.
A table (one line per station) reporting OIV bioclimatic indices. The Branas' index is added.
Emanuele Eccel
Amerine, M.A., and Winkler, A.J., 1944. Composition and quality of musts and wines of California grapes. Hilgardia. 15(6): 493-673.
Eccel, E., Zollo, A.L., Mercogliano, P., Zorer, R., 2016: Simulations of quantitative shift in bio-climatic indices in the viticultural areas of Trentino (Italian Alps) by an open source R package. Computers and Electronics in Agriculture 127 (2016) 92-100.
Eynard, I. e Dal Masso, G., 1990: Viticoltura moderna. Manuale pratico. Hoepli Milano. 778 pp.
Fregoni, C., et Pezzutto, S., 2000 : Principes et premieres approches de l'indice bioclimatique de qualite Fregoni, Progr.Agric.Vitic. 117: 390-396.
Gladstones, J.S., 2004: Climate and Australian Viticulture. In 'Viticulture. Volume 1-Resources'. (Eds Dry PR, Coombe BG) pp. 90-118.
Huglin, M.P., 1978: Nouveau mode d'evaluation des possibilites heliothermiques d'un milieu viticole. Comptes Rendus de l'Academie de l'Agriculture de France. 64: 1117-1126.
Tonietto, J., and Carbonneau, A., 2004. A multicriteria climatic classification system for grape-growing regions worldwide. Agricultural and Forest Meteorology. 124(1/2): 81-97.
data(Trent_climate) oiv_ind(daily_Tn=Tn,daily_Tx=Tx, daily_P=P, first.yr=1981, last.yr=2010, subs_missing=FALSE)data(Trent_climate) oiv_ind(daily_Tn=Tn,daily_Tx=Tx, daily_P=P, first.yr=1981, last.yr=2010, subs_missing=FALSE)
The daily data frame of precipitation for a number of stations. It is used in function
oiv_ind
data(Trent_climate)data(Trent_climate)
Data frame: 19358 obervations of 39 variables (stations)
Representation of Peguy Climograph from monthly weather data (Mean Temperature, Precipitation)
peguy( data = NULL, TemperatureTriangleCoords = c(0, 23.4, 15), PrecipitationTriangleCoords = c(0, 40, 200), ylab = "Precipitation[mm]", xlab = "Mean Temperature [degC]", lambda.label = 1.75, climate.label = c("Temperate", "Cool", "Arid", "Hot"), xyField = c("Tn", "P"), pointsField = "month", StationsField = "station", color.scale = "monthly", ... )peguy( data = NULL, TemperatureTriangleCoords = c(0, 23.4, 15), PrecipitationTriangleCoords = c(0, 40, 200), ylab = "Precipitation[mm]", xlab = "Mean Temperature [degC]", lambda.label = 1.75, climate.label = c("Temperate", "Cool", "Arid", "Hot"), xyField = c("Tn", "P"), pointsField = "month", StationsField = "station", color.scale = "monthly", ... )
data |
input dataset with climatological monthly weather data |
TemperatureTriangleCoords |
Temperature coordinates for triangle vertices in the Peguy Climograph. Default coordinates are expressed in Celsius Degrees. |
PrecipitationTriangleCoords |
Precipitation coordinates for triangle vertices in the Peguy Climograph. Default coordinates are expressed in millimeters. |
xlab, ylab
|
xy axis labels |
lambda.label |
numeric value used to locate climate attribute labels |
climate.label |
string vector containing climate attributes. Default is |
xyField |
column names of |
pointsField |
column name of |
StationsField |
column name of |
color.scale |
character scale indicating a use of a specific color scale. Default is |
... |
further arguments |
Emanuele Cordano
Peguy, C.P. (1970) Precis de climatologie, ed. Masson, Paris.
library(stringr) data(Trent_climate) TrentinoClimateDf <- do.call(rbind,clima_81_10) names <- rownames(TrentinoClimateDf) TrentinoClimateDf$station <- unlist(lapply(X=str_split(names,pattern="[.]"),FUN=function(x) {x[1]})) data <- TrentinoClimateDf[TrentinoClimateDf$station %in% unique(TrentinoClimateDf$station)[1:3],] p <- peguy(data=data)library(stringr) data(Trent_climate) TrentinoClimateDf <- do.call(rbind,clima_81_10) names <- rownames(TrentinoClimateDf) TrentinoClimateDf$station <- unlist(lapply(X=str_split(names,pattern="[.]"),FUN=function(x) {x[1]})) data <- TrentinoClimateDf[TrentinoClimateDf$station %in% unique(TrentinoClimateDf$station)[1:3],] p <- peguy(data=data)
'plot' method implementation for 12-month quantile climate charts from output of function thornthwaite (Thornthwaite and Mather's water balance).
## S3 method for class 'thornthwaite' plot( x, save_dir = NULL, format = NULL, variables = c("Precipitation", "Et0", "Storage", "Prec. - Evap.", "Deficit", "Surplus"), title = TRUE, trace_grid = TRUE, st_name = NULL, u_y_scale_magn = 0.2, l_y_scale_magn = 0, leg_pos = "topleft", ... )## S3 method for class 'thornthwaite' plot( x, save_dir = NULL, format = NULL, variables = c("Precipitation", "Et0", "Storage", "Prec. - Evap.", "Deficit", "Surplus"), title = TRUE, trace_grid = TRUE, st_name = NULL, u_y_scale_magn = 0.2, l_y_scale_magn = 0, leg_pos = "topleft", ... )
x |
a list of quantile data frames of water balance variables to be plotted, as output of function |
save_dir |
name of destination directory for graphs (if any). Default is |
format |
graphic format of graphs; default is NULL (charts are sent to console). |
variables |
character vector of variables to be plotted. |
title |
logic. If |
trace_grid |
logic. If |
st_name |
name to be included into graphs titles. If NULL (default), no title is written. |
u_y_scale_magn |
magnification of range above upper limit, to set upper y-scale limit; default is 0. |
l_y_scale_magn |
magnification of range below lower limit, to set lower y-scale limit; default is 0.1. |
leg_pos |
legend position. Default is "topleft". If NULL, no legend is added. |
... |
arguments to be passed to methods, such as graphical parameters (see |
Default for plot variables is all those calculated by function thornthwaite: "Precipitation", "Et0", "Storage", "Prec. - Evap.", "Deficit", "Surplus". See function thornthwaite for details on variables.
If format is NULL (default), graphs are sent to the console. Otherwise, a file is produced and saved to the save_dir directory. Values allowed are: "png", "jpeg", "tiff", "bmp".
l_y_scale_magn and u_y_scale_magn are the magnification coefficients (lower and upper, respectively), for y scale. If rng is the range between maximum and minimum values in all sets of series within a plot, the lower limit for y scale will be (rng * l_y_scale_magn) below the lower value, and the upper limit will be (rng * u_y_scale_magn) above the upper value of series.
Allowed values for leg_pos are the same of x in function legend.
Most graphic parameters for functions plot and legend are accepted.
Charts of quantiles for water balance variables (12-month climatic values). They can be sent to the console or saved as graphic files.
A conflict is generated if parameters already used by the function are passed (e.g. x for legend: use leg_pos instead).
Emanuele Eccel
data(Trent_climate) # quantiles is the list ("thornthwaite" S3 object)of quantile tables generated # by function thornthwaite; # it is the second element of the output list, # which can be split into two separate lists (see function thornthwaite) sta <- 1 # 1st station in the list of quantile tables q_list=quantiles[[sta]] class(q_list) <- "thornthwaite" ## q_list is coerced to a "thornthwaite" S3 object plot(q_list, st_name=names(quantiles)[sta], variables=c("Precipitation", "Et0"), leg_pos = "topleft", col=c(1:6,1), pch=c(1:6,16), lty=1, horiz=TRUE, y.intersp=0.1)data(Trent_climate) # quantiles is the list ("thornthwaite" S3 object)of quantile tables generated # by function thornthwaite; # it is the second element of the output list, # which can be split into two separate lists (see function thornthwaite) sta <- 1 # 1st station in the list of quantile tables q_list=quantiles[[sta]] class(q_list) <- "thornthwaite" ## q_list is coerced to a "thornthwaite" S3 object plot(q_list, st_name=names(quantiles)[sta], variables=c("Precipitation", "Et0"), leg_pos = "topleft", col=c(1:6,1), pch=c(1:6,16), lty=1, horiz=TRUE, y.intersp=0.1)
The second list (quantiles) in thornt_lst organized according to stations.
See Examples in function thornthwaite for its construction.
data(Trent_climate)data(Trent_climate)
Data frame of 28 observations of 4 variables
Calculation of Riou's drought index described in OIV bio-climatic indices for viticulture (see references)
RDI( series, clim_norm = NULL, first.yr = NULL, last.yr = NULL, TAW = 200, coeff_rad, coeff_Hargr = rep(0.75, 12), quant = c(0, 0.1, 0.5) )RDI( series, clim_norm = NULL, first.yr = NULL, last.yr = NULL, TAW = 200, coeff_rad, coeff_Hargr = rep(0.75, 12), quant = c(0, 0.1, 0.5) )
series |
series of mean monthly weather values |
clim_norm |
the reference climatic values for each month, used for gap filling. Default is |
first.yr |
of the period over which water balance is calculated. Default is |
last.yr |
of the period over which water balance is calculated. Default is |
TAW |
total available water content of soil |
coeff_rad |
vector of solar radiation coefficients (12 values) for calculation of potential evapotranspiration |
coeff_Hargr |
(vector of monthly) correction coefficient(s) for Hargreaves' equation |
quant |
vector of quantiles for the statistical ranking of the year representative for balance (0..1) |
For full description of algorithm see OIV standards at http://www.oiv.int/oiv/info/enresolution2012?lang=en and the references: Riou, 1994; Tonietto, 1999.
Evapotranspiration is calculated by Hargreaves' equation (see arid).
series is a data frame of the monthly series (means) of: cumulated precipitation (mm), minimum temperature, maximum temperature, mean temperature (optional)
- all in deg. C. Includes the following columns (and names): "year", "month", "P", "Tn", "Tx", "Tm" (optional), for precipitation, minimum, maximum and
mean temperature, respectively. If Tm is missing it is calculated as (Tn + Tx)/2. Format is the same of lista_cli.
clim_norm is a monthly data frame of 12 climate normals, with the same column names of series, except "year".
It can be the output of function climate. If clim_norm is not NULL, any missing value in
the monthly series is substituted by the corresponding climatic value in clim_norm.
A default value of 200 mm for TAW is suggested by the authors of the index. It can be changed according to the known
pedological features of soil.
coeff_rad corresponds to the mean monthly extra-atmospheric radiation (see function ExAtRa). It is required in Hargreaves' equation.
coeff_Hargr is either a single value or a vector of 12 coefficients to adjust Hargreaves' estimation of potential evapotranspiration.
From calibration in 6 stations from the same network of Trent_climate, its average value is 0.75.
quant_vector a vector of minimum one element. 0 yields minimum absolute case, 0.5 the median. Values range from 0 to 1 (inappropropriate if > 0.5).
The algorithm described in OIV assesses water balance at the last month of the ripenining period, early autumn. However, in humid or sub-humid climates the driest period for soil generally falls in summer. For this reason, the output table reports both cases ("harvest" time value and monthly minimum over the season, "WB_harv" and "WB_min", respectfully). Harvest time is conventionally September (N emisphere) or March (S emisphere).
A two-column table reporting Riou's drought indices for each quantile chosen (one line each, minimum is 1). Both "harvest time" and minimum values are calculated (see details).
Emanuele Eccel
Riou, C. 1994. Le determinisme climatique de la maturation du raisin: application au zonage de la teneur en sucre dans la Communaute Europeenne (E. Commission, ed.). Office des Publications Officielles des Communautes Europeennes, Luxembourg, 322p.
Tonietto, J. 1999. Les Macroclimats Viticoles Mondiaux et l'Influence du Mesoclimat sur la Typicite de la Syrah et du Muscat de Hambourg dans le Sud de la France Methodologie de Caracterisation. These de doctorat, Ecole Nationale Superieure Agronomique de Montpellier, Montpellier (France), 216p.
data(Trent_climate) RDI(lista_cli[[1]], clim_norm=clima_81_10[[1]], first.yr=1981, last.yr=2010, coeff_rad=coeff_rad)data(Trent_climate) RDI(lista_cli[[1]], clim_norm=clima_81_10[[1]], first.yr=1981, last.yr=2010, coeff_rad=coeff_rad)
For every station, the first element (a list, Thornth._W._bal) reports the monthly
series of water balance quantities for the station, each in one data frame (see function
thornthwaite for details). The second list (quantiles) reports the
monthly quantiles for the same quantities.
data(Trent_climate)data(Trent_climate)
S3 object: a "hyperlist" (list of lists of lists), one list of lists for each station
Calculates Thornthwaite and Mather's water balance from monthly series of precipitation and temperature. Aimed at a classification of a site's climate according to its water balance features.
thornthwaite( series, latitude, clim_norm = NULL, first.yr = NULL, last.yr = NULL, quant = c(0, 0.1, 0.25, 0.5, 0.75, 0.9, 1), snow.init = 20, Tsnow = -1, TAW = 100, fr.sn.acc = 0.95, snow_melt_coeff = 1 )thornthwaite( series, latitude, clim_norm = NULL, first.yr = NULL, last.yr = NULL, quant = c(0, 0.1, 0.25, 0.5, 0.75, 0.9, 1), snow.init = 20, Tsnow = -1, TAW = 100, fr.sn.acc = 0.95, snow_melt_coeff = 1 )
series |
the monthly series of temperature and precipitation. |
latitude |
latitude of the station in degrees. |
clim_norm |
climatic normals. |
first.yr |
first year of the period over which water balance is calculated. Default is |
last.yr |
last year of the period over which water balance is calculated. Default is |
quant |
vector of quantiles for which water balance has to be assessed. Default is: min, 10th, 25th 50th, 75th, 90th, max. |
snow.init |
initial water equivalent for snowpack (mm). Default is 20. |
Tsnow |
maximum temperature (monthly mean) for precipitation to be treated as snowfall. Default is -1 degree C. |
TAW |
maximum (field capacity) for soil water retention, and initial soil water content (mm). Default is 100. |
fr.sn.acc |
fraction of snow that contributes to snowpack (0-1). 1 - fr.sn.acc is treated as liquid monthly precipitation Default is 0.95. |
snow_melt_coeff |
monthly coefficient(s) for snowmelt. Default is 1. |
The algorithm for the calculation of water balance is adapted from Thornthwaite, 1948; Thornthwaite and Mather, 1955; Thornthwaite and Mather, 1957.
series is a data frame with years, months, temperature and precipitation values. Names in series columns must include: year, month, Tn and Tx (minimum and maximum temperatures, respectively) or, as an alternative, Tm (mean temperatures), and P (mandatory).
clim_norm is a monthly data frame of climate normals, with column names: "P", "Tn", "Tx", "Tm" (precipitation, minimum, maximum and mean temperature, respectively). It can be the output of function climate. If clim_norm is not NULL, any missing value in the monthly series is substituted by the corresponding climatic value in clim_norm.
At any winter season, the maximum monthly snowpack height is attained in the last month before "spring" conditions (Tm >= Tsnow), even if a month with Tm < Tsnow may occur later.
snow_melt_coeff is (are) the coefficient(s) for snow melt fraction(s) at any month where the condition for melting exists. If snow_melt_coeff = 1 (default), all the melting occurs in the first month when Tm >= Tsnow; if it is a vector, melting is spread over more than one month. If the sum of coefficients is less than 1, the residual melting occurs in one further month.
The output function is a list of two lists of data frames (balance and quantile). In both lists, data frame (and names) are the following (all variables in mm):
Precipitation (repeats input values);
Et0 (potential evapotranspiration);
Storage (water stored in soil);
Prec. - Evap. (difference between precipitation and potential evapotranspiration);
Deficit (difference between potential and real evapotranspiration, due to water unavailability in soil);
Surplus (water surplus in soil, routed to runoff).
Please, refer to the quoted references for details.
This function requires the function daylength from the geosphere package.
A thornthwaite S3 object, consisting on a list of two lists. The first (name: W_balance) is a list of data frames containing the monthly series of all indices, the second (name: quantiles) the relevant quantiles. See details for meanings of single variables.
Giambattista Toller and Emanuele Eccel
Thornthwaite, C. W., 1948: An Approach toward a Rational Classification of Climate. Geographical Review, Vol. 38, No. 1(Jan.):55-94.
Thornthwaite, C. W., and Mather, J.R., 1955: The water balance. Publications in Climatology, Volume 8(1), Laboratory of Climatology
Thornthwaite, C. W., and Mather, J.R., 1957: Instructions and tables for computing potential evapotranspiration and the water balance. Publications in climatology, Volume 10(3), Laboratory of Climatology
climate, ExAtRa, plot.thornthwaite
data(Trent_climate) # lista_cli is a list of data frames of the type "series", # each one referring to one station - see function "climate". # clima_81_10 is a list of data frames having climatic means # of temperature and precipitation, each one referring to one station. # It can be the output of function "climate". library(geosphere) # required for function daylength thornt_lst<-NULL lista_cli <- lista_cli[1:3] ## lista_cli is reduced to diminish elapsed time of execution! for(k in 1 : length(lista_cli[1:3])) { thornt_lst[[k]]<-thornthwaite(series=lista_cli[[k]], clim_norm=clima_81_10[[k]], latitude = 46, first.yr=1981, last.yr=2010, snow_melt_coeff=c(0.5,0.5 ) ) } names(thornt_lst)<-names(lista_cli) # splits list into two lists W_balance<-NULL; quantiles<-NULL for(k in 1 : length(lista_cli)) { W_balance[[k]]<-thornt_lst[[k]]$W_balance quantiles[[k]]<-thornt_lst[[k]]$quantiles } names(W_balance)<-names(thornt_lst); names(quantiles)<-names(thornt_lst)data(Trent_climate) # lista_cli is a list of data frames of the type "series", # each one referring to one station - see function "climate". # clima_81_10 is a list of data frames having climatic means # of temperature and precipitation, each one referring to one station. # It can be the output of function "climate". library(geosphere) # required for function daylength thornt_lst<-NULL lista_cli <- lista_cli[1:3] ## lista_cli is reduced to diminish elapsed time of execution! for(k in 1 : length(lista_cli[1:3])) { thornt_lst[[k]]<-thornthwaite(series=lista_cli[[k]], clim_norm=clima_81_10[[k]], latitude = 46, first.yr=1981, last.yr=2010, snow_melt_coeff=c(0.5,0.5 ) ) } names(thornt_lst)<-names(lista_cli) # splits list into two lists W_balance<-NULL; quantiles<-NULL for(k in 1 : length(lista_cli)) { W_balance[[k]]<-thornt_lst[[k]]$W_balance quantiles[[k]]<-thornt_lst[[k]]$quantiles } names(W_balance)<-names(thornt_lst); names(quantiles)<-names(thornt_lst)
The daily data frame of mean daily temperature for a number of stations, used in function
oiv_ind
data(Trent_climate)data(Trent_climate)
Data frame: 19358 obervations of 15 variables (stations)
The daily data frame of minimum daily temperature for a number of stations, used in function
oiv_ind
data(Trent_climate)data(Trent_climate)
Data frame: 19358 obervations of 15 variables (stations)
A group of datasets used consistently throughout the ClimClass manual and examples. It is used as reference definition of the climate for the Trentino region, Italy. It includes monthly series of temperature and precipitation, and reference tables for the definition of aridity and continentality/oceanicity
data(Trent_climate)data(Trent_climate)
Series like "Txxxx" were supplied by the Autonomous Province of Trento - Meteotrentino (I). Series like "FEMxx" were supplied by Fondazione Edmund Mach, San Michele all'Adige (I).
The daily data frame of maximum daily temperature for a number of stations, used in function
oiv_ind
data(Trent_climate)data(Trent_climate)
Data frame: 19358 obervations of 15 variables (stations)
Is the first list (W_balance) in thornt_lst organized according to stations.
See Examples in function thornthwaite for its construction.
data(Trent_climate)data(Trent_climate)
List of 28 elements, each is a data frame of 5 variables and 636 observations