aaClimate {climetrics} | R Documentation |
Changes in the Area of Analogous Climate
Description
To quantify the change in area of analogous climates (classes),the change in area occupied by a given class between time 1 (t1) and time 2 (t2) periods is quantified.
Usage
aaClimate(precip,tmin, tmax, tmean,t1,t2)
aaClimateC(c1,c2)
Arguments
precip |
A time series of precipitation as a Raster or Raster Time Series object |
tmin |
A time series of minimum temperature as a Raster or Raster Time Series object |
tmax |
A time series of maximum temperature as a Raster or Raster Time Series object |
tmean |
A time series of mean temperature as a Raster or Raster Time Series object; if not provided, it will be calculated from tmin and tmax |
t1 |
a chanracter or a numeric vector, specifying the index of raster layers for time 1 |
t2 |
a chanracter or a numeric vector, specifying the index of raster layers for time 2 |
c1 |
A single layer Raster layer contains Climate classes (e.g., Koppen Geiger climate classification) for time 1 |
c2 |
A single layer Raster layer contains Climate classes (e.g., Koppen Geiger climate classification) for time 2 |
Details
For a given cell with a given climate class, the change in area of analogous climates represented the ratio (in percentage) of the difference between time 2 and time 1 area of that class to the time 1 area of the same class. Positive values indicated gains in area, negative values indicated losses, and null values reflect no change.
The aaClimate first uses apply.months
function to generate the monthly mean of climate parameter (results a Raster object with 12 layers correspond to 12 months) over each time period (t1 and t2); then uses the kgc
function to generate the Koppen Geiger climate classification for each time period. Then the changes in the area of each class is calculated between time 1 and time 2. If the climate classification (regions) are available for time 1 and time 2, then the aaClimateC
can be used instead.
Value
A single Raster layer (RasterLayer or SpatRaster depending on the input)
Author(s)
Shirin Taheri; Babak Naimi
taheri.shi@gmail.com; naimi.b@gmail.com
Examples
#-------
filePath <- system.file("external/", package="climetrics") # path to the dataset folder
# read the climate variables using the terra package (you can use the raster package as well):
pr <- rast(paste0(filePath,'/precip.tif'))
tmin <- rast(paste0(filePath,'/tmin.tif'))
tmax <- rast(paste0(filePath,'/tmax.tif'))
tmean <- rast(paste0(filePath,'/tmean.tif'))
pr # has 360 layers corresponds to months of the years 1991-2020
n <- readRDS(paste0(filePath,'/dates.rds')) # read corresponding dates
class(n)
length(n)
head(n) # Dates corresponds to the layers in climate variables (pr, tmin, tmax, tmean)
####################
# use rts function in the rts package to make a raster time series:
pr.t <- rts(pr,n)
tmin.t <- rts(tmin,n)
tmax.t <- rts(tmax,n)
tmean.t <- rts(tmean,n)
#------
pr.t # see the summary report of the raster time series object
###########################
# test of the metric:
#---------
#---------
# t1 (time1) = '1991/1990' takes all layers correspond to years between 1991-01-01 to 2000-12-31
# t2 (time2) = '2010/2020' takes all layers correspond to years between 2010-01-01 to 2020-12-31
aa <- aaClimate(precip=pr.t,tmin=tmin.t,tmax=tmax.t,tmean=tmean.t,t1='1991/2000',t2='2010/2020')
plot(aa,main="Changes in the area of Analogous Climates")
########
# Alternatively, if the climate in both times are available as climate classes
# (e.g., Koppen Geiger climate classification), changes in the area of analogous
# climate can be quantified using the aaClimateC function:
# Here, we first generate Koppen Geiger climate classification for time 1 and time 2, separately,
# To do so, we need the monthly average of climate variables (over years for each month):
# take the average of climate variables for each month over different years:
p12.1 <- apply.months(pr.t[['1991/2000']],'mean')
p12.2 <- apply.months(pr.t[['2010/2020']],'mean')
p12.1 # has 12 layers corresponding to 12 months
plot(p12.1)
#--
tmin12.1 <- apply.months(tmin.t[['1991/2000']],'mean')
tmin12.2 <- apply.months(tmin.t[['2010/2020']],'mean')
#--
tmax12.1 <- apply.months(tmax.t[['1991/2000']],'mean')
tmax12.2 <- apply.months(tmax.t[['2010/2020']],'mean')
#--
tmean12.1 <- apply.months(tmean.t[['1991/2000']],'mean')
tmean12.2 <- apply.months(tmean.t[['2010/2020']],'mean')
#--
##-------- now, the kgc function can be used to generate the climate classification map:
k1 <- kgc(p=p12.1,tmin = tmin12.1,tmax=tmax12.1, tmean = tmean12.1)
k2 <- kgc(p=p12.2,tmin = tmin12.2,tmax=tmax12.2, tmean = tmean12.2)
plot(k1, main= "Koppen Geiger climate classification - 1995")
plot(k2, main= "Koppen Geiger climate classification - 2015")
# Now, given the k1 and k2 climate classes, the changes in area of each class between two times
# are calculated using the aaClimateC function:
aa <- aaClimateC(k1,k2)
plot(aa)