Title: | Determine Thermal Vegetation Periods |
Version: | 0.4.0 |
Description: | Collection of common methods to determine growing season length in a simple manner. Start and end dates of the vegetation periods are calculated solely based on daily mean temperatures and the day of the year. |
License: | GPL (≥ 3) |
URL: | https://rnuske.github.io/vegperiod/, https://github.com/rnuske/vegperiod |
BugReports: | https://github.com/rnuske/vegperiod/issues |
Encoding: | UTF-8 |
NeedsCompilation: | no |
Depends: | R (≥ 3.2.0) |
Imports: | utils |
Suggests: | curl, tinytest |
RoxygenNote: | 7.2.1 |
Packaged: | 2022-11-01 09:25:38 UTC; rnuske |
Author: | Robert Nuske |
Maintainer: | Robert Nuske <robert.nuske@mailbox.org> |
Repository: | CRAN |
Date/Publication: | 2022-11-01 16:30:13 UTC |
Ten years of daily average air temperature
Description
A dataset containing ten years (2001-01-01 - 2010-12-31) of average air temperature measured at the weather station Goettingen. The data is the result of a reanalysis of observed data using the STARS model (cf. Orlowsky et al. 2008). They were provided by Prof. Dr. Peter Werner (PIK).
Usage
data(goe)
Format
A data frame with 3652 rows and 6 variables:
Variable | Description |
date | calendar date as object of class Date |
year | years as integer |
month | month as integer |
day | day of month as integer |
doy | day of year as integer |
t | average air temperature |
Source
Prof. Dr. Peter Werner (PIK)
References
Orlowsky, B., Gerstengarbe, F. W., Werner, P. C. (2008) A resampling scheme for regional climate simulations and its performance compared to a dynamical RCM. Theoretical and Applied Climatology, 92(3–4), 209–223. doi:10.1007/s00704-007-0352-y
Examples
data(goe)
str(goe)
Vegetation Start and End Method "ETCCDI"
Description
The ETCCDI
or StdMeteo
method was defined by Expert Team on Climate Change Detection and Indices and is often known as Growing season Length (GSL) and widely used in climate change studies.
Calculation
Implementation of start
first span of at least 6 consecutive days with daily mean temperature TG > 5°C
# mark days warmer than 5°C df$period <- ifelse(df$Tavg > Tmin, 1, 0) # find first six day span per year start <- tapply(df$period, df$year, FUN=function(x){ sixer <- as.numeric(stats::filter(x, rep(1, 6), sides=1)) doy <- which(!is.na(sixer) & sixer == 6) ifelse(length(doy) == 0, NA, min(doy)) })
Implementation of end
first span after July 1st of 6 consecutive days with TG < 5°C.
# 1. July is DOY 182 and DOY 183 in leap years years <- unique(df$year) leap_year <- ifelse((years%%4==0 & years%%100!=0) | years%%400==0, TRUE, FALSE) jul1 <- ifelse(leap_year, 183L, 182L) # mark days colder than 5°C df$period <- ifelse(df$Tavg < Tmin, 1, 0) # find first six day span per year end <- ifelse(leap_year, 366L, 365L) for(i in seq_along(years)){ temp <- df[df$year == years[i] & df$DOY > jul1[i], ] temp$six <- as.numeric(stats::filter(temp$period, rep(1, 6), sides=1)) possible.end <- temp[!is.na(temp$six) & temp$six == 6, "DOY"] if(length(possible.end) > 0) end[i] <- min(possible.end) }
References
Definition recommended by the CCl/CLIVAR/JCOMM Expert Team on Climate Change Detection and Indices (ETCCDI) http://etccdi.pacificclimate.org/list_27_indices.shtml http://www.climdex.org/indices.html
European Climate Assessment (ECA) http://eca.knmi.nl/indicesextremes/indicesdictionary.php
ETCCDI (2009) Climate Change Indices: Definitions of the 27 core indices. http://etccdi.pacificclimate.org/list_27_indices.shtml Frich, P., Alexander, L., Della-Marta, P., Gleason, B., Haylock, M., Klein Tank, A. and Peterson, T. (2002) Observed coherent changes in climatic extremes during the second half of the twentieth century. Climate Research, 19, 193–212. https://doi.org/10.3354/cr019193. http://www.climateknowledge.org/heat_waves/Doc2004_Frich_Extremes_Index_ClimResearch_2002.pdf
Zhang, X., Alexander, L., Hegerl, G. C., Jones, P., Tank, A. K., Peterson, T. C., Trewin, B. and Zwiers, F. W. (2011) Indices for monitoring changes in extremes based on daily temperature and precipitation data. Wiley Interdisciplinary Reviews: Climate Change, 2(6), 851–870. https://doi.org/10.1002/wcc.147.
Vegetation End Method "LWF-BROOK90"
Description
The method LWF-BROOK90
is -for the sake of convenience- a reimplementation
of the LWF-BROOK90 VBA (version 3.4) variant of "vonWilpert" (Hammel and
Kennel 2001). Their interpretation of von Wilpert (1990) and the somewhat
lower precision of VBA was mimicked.
Calculations
- starting search at June 1st - propose end if 7-day moving average temperature is below 10°C on 5 consecutive days - restart search for end if there is a warm periode (7-day moving average temperature above 10°C for 5 consecutive days - nevertheless the vegetation periode stops latest at DOY 279
References
Hammel, K. and Kennel, M. (2001) Charakterisierung und Analyse der Wasserverfügbarkeit und des Wasserhaushalts von Waldstandorten in Bayern mit dem Simulationsmodell BROOK90. Forstliche Forschungsberichte München.
von Wilpert, K. (1990) Die Jahrringstruktur von Fichten in Abhängigkeit vom Bodenwasserhaushalt auf Pseudogley und Parabraunerde: Ein Methodenkonzept zur Erfassung standortsspezifischer Wasserstreßdispostion. Freiburger Bodenkundliche Abhandlungen.
Vegetation Start Method "Menzel"
Description
The method "Menzel" implements the algorithm described in Menzel (1997). The method is parameterized for 10 common tree species ( Larix decidua, Picea abies (frueh), Picea abies (spaet), Picea abies (noerdl.), Picea omorika, Pinus sylvestris, Betula pubescens, Quercus robur, Quercus petraea, Fagus sylvatica). It needs previous year's chill days.
Calculations
- counting chill days in Nov & Dec of previous year if previous year available else estimate previous year's chill days - count chill days in current year - determine critical temperature per days using regression equation fitted by Menzel 1997 - calculate HeatSum starting from Feb - vegetation start if HeatSum >= criticalTemp
References
Menzel, A. (1997) Phänologie von Waldbäumen unter sich ändernden Klimabedingungen - Auswertung der Beobachtungen in den Internationalen Phänologischen Gärten und Möglichkeiten der Modellierung von Phänodaten. Forstliche Forschungsberichte München.
Vegetation End Method "NuskeAlbert"
Description
The method NuskeAlbert
provides a very simple method which is inspired by
standard climatological procedures but employs a 7 day moving average and
a 5 °C threshold (cf. Walther and Linderholm 2006).
Calculations
2 criteria: temperature & short day criterion
Temperature criterion
7 day moving average of daily mean temperatures end if 5 consecutive days under under 5° C start the search at 1st of July / vegetation start
Short day criterion
last day of the vegetation period is 5th of October
References
Walther, A. and Linderholm, H. W. (2006) A comparison of growing season indices for the Greater Baltic Area. International Journal of Biometeorology, 51(2), 107–118. doi:10.1007/s00484-006-0048-5.
Vegetation Start Method "Ribes uva-crispa"
Description
The method Ribes uva-crispa
is based on leaf-out of gooseberry (Janssen 2009).
It was developed by the Germany's National Meteorological Service
(Deutscher Wetterdienst, DWD) and is more robust against early starts than
common simple meteorological procedures.
Calculation
starting from 18th February sum all day degrees above 0 °C (daily average air temperature). Vegetetaion period starts at the day when 164 is crossed.
# start day: February 18th == 49 doy # only Tavg over 0°C are summed df[df$DOY < 49 | df$Tavg < 0, 'Tavg'] <- 0 # find day where cum day degrees cross 164 start <- tapply(df$Tavg, df$year, FUN=function(x){ x <- cumsum(x) min(which(x > 164)) })
References
Janssen, W. (2009) Definition des Vegetationsanfanges. Internal Report, Deutscher Wetterdienst, Abteilung Agrarmeteorologie.
Vegetation End Method "vonWilpert"
Description
The method vonWilpert
is based on von Wilpert (1990). It was originally
developed for "Picea abies" in the Black Forest but is commonly used for all
tree species throughout Germany. As usual, the rules regarding the soilmatrix
are neglected in this implementation.
Calculations
Orthodox are 3 criteria: short day, temperature and drought criterion we consider -as usual- only short day and temperature citerion
Temperature criterion:
7 day moving average of daily mean temperatures at least 5 consecutive days under 10°C
if afterwards more than 5 consecutive days 7 day moving average over 10°C vegetation period gets restarted
Short day criterion
last day of the vegetation period is DOY 279 (5th of October in leap years)
References
von Wilpert, K. (1990) Die Jahrringstruktur von Fichten in Abhängigkeit vom Bodenwasserhaushalt auf Pseudogley und Parabraunerde: Ein Methodenkonzept zur Erfassung standortsspezifischer Wasserstreßdispostion. Freiburger Bodenkundliche Abhandlungen. Pages 106–108.
Fetch meteo data of DWD weather stations
Description
Fetch observed meteorological data of German weather stations from freely accessible part of the Climate Data Center of Germany's National Meteorological Service (Deutscher Wetterdienst, DWD).
Usage
read.DWDdata(
id,
type = "climate",
period = "recent",
resolution = "daily",
file = NULL,
destdir = NULL,
quiet = FALSE
)
Arguments
id |
integer. A valid station id (cf. read.DWDstations). |
type |
string. Stations can be of type ‘"climate"’ offering a range of meteorological parameters or of type ‘"precipitation"’ solely recording rainfall. There are about 400 ‘climate’ and 2000 ‘precipitation’ stations. |
period |
string specifying a time span. The last 1.5 years are called ‘"recent"’. Data from the individual beginning of measurements up to a year ago are labelled ‘"historical"’. ‘"recent"’ data have not yet gone through the full quality control procedure. ‘"historical"’ data have completed the operational quality control. But be aware there still might be gaps and inhomogeneities. |
resolution |
string. Temporal resolution of the data can be ‘"daily"’ or ‘"monthly"’. ‘"daily"’ being the common resolution. |
file |
a string specifying the location of a dataset. ‘"file"’
may point to a file on a FTP server or on the local file system.
If the file lives on a FTP server the string must start with
|
destdir |
directory (string) where intermediate data (downloaded *.zip file) are stored. If it is NULL (the default) a subdirectory ‘downloaded_packages’ of the session temporary directory will be used (and the files will be deleted at the end of the session). It might be advisable to keep the .zip file since it contains the stations documentation and metadata (e.g. station shift, used devices, downtimes etc.). |
quiet |
If TRUE, suppress status messages (if any), and the progress bar. |
Details
An introduction to the data available at the Climate Data Center can be found in the German Liesmich_intro_CDC_ftp or the translated Readme_intro_CDC_ftp.
The freely accessible part of the Climate Data Center of Germany's National Meteorological Service (Deutscher Wetterdienst, DWD) is part of the DWD's mandate for basic supply of information (termed "Grundversorgung"). These services may be used without any restrictions (no fees will be charged and in general there are no restrictions for the use the data), provided that the source is indicated as laid down in the "GeoNutzV" ordinance. The source reference shall roughly meet the following rules:
Where data are used without modification, the source reference shall read "Source: Deutscher Wetterdienst" or just consist of the DWD logo.
If the data are modified, the source reference shall specify as precisely as possible the extent of such, e.g. "Based on data from Deutscher Wetterdienst, figures rounded".
A more detailed description of the rules can be found in the official and legally binding German Nutzungsbedingungen or the translated Terms of use.
Value
A data.frame with the observed weather data. Beware of gaps and inhomogeneities! ‘colnames’ contains the original header and hence German terms.
Content of 'climate'-data.frame:
Name | Description |
STATIONS_ID | station id |
MESS_DATUM | date |
QN_3 | quality level of next columns (-) |
FX | daily maximum of wind gust (m/s) |
FM | daily mean of wind velocity (m/s) |
QN_4 | quality level of next columns (-) |
RSK | daily precipitation height (mm) |
RSKF | precipitation form (-) |
SDK | daily sunshine duration (h) |
SHK_TAG | daily snow depth (cm) |
NM | daily mean of cloud cover (1/8) |
VPM | daily mean of vapor pressure (hPa) |
PM | daily mean of pressure (hPa) |
TMK | daily mean of temperature (°C) |
UPM | daily mean of relative humidity (%) |
TXK | daily maximum of temperature at 2m height (°C) |
TNK | daily minimum of temperature at 2m height (°C) |
TGK | daily minimum of air temperature at 5cm above ground (°C) |
Content of 'precipitation'-data.frame:
Name | Description |
STATIONS_ID | station id |
MESS_DATUM | date |
QN_6 | quality level of next columns (-) |
RS | daily precipitation height (mm) |
RSF | precipitation form (-) |
SH_TAG | daily height of snow pack (cm) |
References
Freely accessible DWD data available via the Climate Data Center.
Examples
## Not run:
# fetch last 500 days worth of data from station Göttingen
clim <- read.DWDdata(id=1691)
# save data & metadata (documentation about devices, downtimes etc.)
clim <- read.DWDdata(id=1691, destdir='.')
# find and download historical data from the Brocken
stat.hist <- read.DWDstations(period='historical')
brocken.id <- stat.hist[grep("^Brock", stat.hist$name), ]$id
clim.brocken <- read.DWDdata(id=brocken.id, period='historical')
## End(Not run)
Fetch list of DWD weather stations
Description
Get a listing of advertised stations of Germany's National Meteorological Service (Deutscher Wetterdienst, DWD). The list differs for station type, time period and resolution. The list of advertised stations is usually not identical with currently available stations.
Usage
read.DWDstations(type = "climate", period = "recent", resolution = "daily")
Arguments
type |
string. Stations can be of type ‘"climate"’ offering a range of meteorological parameters or of type ‘"precipitation"’ solely recording rainfall. |
period |
string specifying a time span. The last 1.5 years are called ‘"recent"’. Data from the individual beginning of measurements up to a year ago are labelled ‘"historical"’. |
resolution |
string. Temporal resolution of the data can be ‘"daily"’ or ‘"monthly"’. ‘"daily"’ being the common resolution. |
Details
The freely accessible part of the Climate Data Center of Germany's National Meteorological Service (Deutscher Wetterdienst, DWD) is part of DWD's mandate for basic supply of information (termed "Grundversorgung"). This service may be used without any restrictions (no fees will be charged and in general there are no restrictions for the use the data), provided that the source is indicated as laid down in the "GeoNutzV" ordinance. The source reference shall roughly meet the following rules:
Where data are used without modification, the source reference shall read "Source: Deutscher Wetterdienst" or just consist of the DWD logo.
If the data are modified, the source reference shall specify as precisely as possible the extent of such, e.g. "Based on data from Deutscher Wetterdienst, figures rounded".
A more detailed description of the rules can be found in the official and legally binding German Nutzungsbedingungen or the translated Terms of use.
Value
A data.frame with all weather stations. It's not guaranteed that all advertised staions are available for download. Watch out for the end data of observation. Stations with recent data have a current end date. The data.frame contains the variables id, from, to, elev, lat, long, name, state.
References
Freely accessible DWD data available via the Climate Data Center.
Examples
## Not run:
# stations with daily climate data
stations <- read.DWDstations()
# precipitation stations with monthly historical data
precip <- read.DWDstations(type='precip', period='historical',
resolution='monthly')
# list stations with daily data updated within last week
stat.daily <- read.DWDstations(period='recent')
stat.daily.recent <- stat.daily[stat.daily$to > (Sys.Date() - 7), ]
## End(Not run)
Determine vegetation period
Description
Calculate start and end date of vegetation periods based on daily average air temperature and the day of the year (DOY). The sum of day degrees within the vegetation period is included for convenience.
Usage
vegperiod(
dates,
Tavg,
start.method,
end.method,
Tsum.out = FALSE,
Tsum.crit = 0,
species = NULL,
est.prev = 0,
check.data = TRUE
)
Arguments
dates |
vector of calendar dates (objects of class |
Tavg |
vector of daily average air temperatures in degree Celsius.
Same length as |
start.method |
name of method to use for vegetation start. One of
|
end.method |
name of method to use for vegetation end. One of
|
Tsum.out |
boolean. Return the sum of daily mean temperatures above
|
Tsum.crit |
threshold for sum of day degrees. Only daily mean temperatures
|
species |
name of tree species (required if Must be one of |
est.prev |
number of years to estimate previous year's chill
days for the first year (required if
|
check.data |
Performs plausibility checks on the temperature data to ensure that the temperatures have not been multiplied by ten. Plausible range is -35 to +40°C. |
Details
Common methods for determining the onset and end of thermal vegetation
periods are provided, for details see next sections. Popular choices with
regard to forest trees in Germany are Menzel
and vonWilpert
. Climate
change impact studies at NW-FVA are frequently conducted using Menzel
with
"Picea abies (frueh)" and NuskeAlbert
for all tree species; with tree
species specifics accounted for in subsequent statistical models.
Start methods:
The method Menzel
implements the algorithm described in
Menzel (1997). The method is parameterized for 10 common tree species. It
needs previous year's chill days. ETCCDI
resp.
StdMeteo
is a simple threshold based procedure as defined by the
Expert Team on Climate Change Detection and Indices (cf. ETCCDI 2009, Frich
et al. 2002, Zhang et al. 2011) leading to quite early vegetation starts.
This method is widely used in climate change studies. The method
Ribes uva-crispa
is based on leaf-out of gooseberry (Janssen
2009). It was developed by the Germany's National Meteorological Service
(Deutscher Wetterdienst, DWD) and is more robust against early starts than
common simple meteorological procedures.
End methods:
The end method vonWilpert
is based on von Wilpert (1990). It
was originally developed for Picea abies in the Black Forest but is
commonly used for all tree species throughout Germany. As usual, the rules
regarding the soilmatrix are neglected in this implementation.
LWF-BROOK90
is -for the sake of convenience- a
reimplementation of the LWF-BROOK90 VBA (version 3.4) variant of "vonWilpert"
(Hammel and Kennel 2001). Their interpretation of von Wilpert (1990) and the
somewhat lower precision of VBA was mimicked. NuskeAlbert
provide a very simple method which is inspired by standard climatological
procedures but employs a 7 day moving average and a 5 °C threshold (cf.
Walther and Linderholm 2006). ETCCDI
resp. StdMeteo
is a simple threshold based procedure as defined by the Expert Team on
Climate Change Detection and Indices (cf. ETCCDI 2009, Frich et al. 2002,
Zhang et al. 2011) leading to quite late vegetation ends.
Value
A data.frame with year and DOY of start and end day of
vegetation period. If Tsum.out=TRUE
, the data.frame contains an
additional column with the sum of day degrees within vegetation periods.
References
ETCCDI (2009) Climate Change Indices: Definitions of the 27 core indices. http://etccdi.pacificclimate.org/list_27_indices.shtml
Frich, P., Alexander, L., Della-Marta, P., Gleason, B., Haylock, M., Klein Tank, A. and Peterson, T. (2002) Observed coherent changes in climatic extremes during the second half of the twentieth century. Climate Research, 19, 193–212. doi:10.3354/cr019193.
Hammel, K. and Kennel, M. (2001) Charakterisierung und Analyse der Wasserverfügbarkeit und des Wasserhaushalts von Waldstandorten in Bayern mit dem Simulationsmodell BROOK90. Forstliche Forschungsberichte München.
Janssen, W. (2009) Definition des Vegetationsanfanges. Internal Report, Deutscher Wetterdienst, Abteilung Agrarmeteorologie.
Menzel, A. (1997) Phänologie von Waldbäumen unter sich ändernden Klimabedingungen - Auswertung der Beobachtungen in den Internationalen Phänologischen Gärten und Möglichkeiten der Modellierung von Phänodaten. Forstliche Forschungsberichte München.
von Wilpert, K. (1990) Die Jahrringstruktur von Fichten in Abhängigkeit vom Bodenwasserhaushalt auf Pseudogley und Parabraunerde: Ein Methodenkonzept zur Erfassung standortsspezifischer Wasserstreßdispostion. Freiburger Bodenkundliche Abhandlungen.
Walther, A. and Linderholm, H. W. (2006) A comparison of growing season indices for the Greater Baltic Area. International Journal of Biometeorology, 51(2), 107–118. doi:10.1007/s00484-006-0048-5.
Zhang, X., Alexander, L., Hegerl, G. C., Jones, P., Tank, A. K., Peterson, T. C., Trewin, B. and Zwiers, F. W. (2011) Indices for monitoring changes in extremes based on daily temperature and precipitation data. Wiley Interdisciplinary Reviews: Climate Change, 2(6), 851–870. doi:10.1002/wcc.147.
Examples
data(goe)
vegperiod(dates=goe$date, Tavg=goe$t,
start.method="Menzel", end.method="vonWilpert",
species="Picea abies (frueh)", est.prev=5)
# take chill days from first year, which is then dropped
vegperiod(dates=goe$date, Tavg=goe$t, start="Menzel", end="vonWilpert",
species="Picea abies (frueh)", est.prev=0)
# add column with sum of day degrees in vegetation periods
vegperiod(dates=goe$date, Tavg=goe$t, Tsum.out=TRUE,
start="StdMeteo", end="StdMeteo")