Skip to contents

Whilst pastclim is mostly designed to handle palaeoclimate time series, it can also be used to manipulate present reconstructions and future projections. Currently, it uses the WorldClim datasets, but it could easily be adapted to use other sources such as CHELSA.

Present reconstructions

Present-day reconstructions for WorldClim v2.1 are based on the mean for the period 1970-2000, and are available at multiple resolutions of 10 arc-minutes, 5 arc-minutes, 2.5 arc-minute and 0.5 arc-minutes. The resolution of interest can be obtained by changing the ending of the dataset name WorldClim_2.1_RESm, e.g. WorldClim_2.1_10m or WorldClim_2.1_5m (currently, only 10m and 5m are currently available in pastclim). In pastclim, the datasets are given a date of 1985 CE (the mid-point of the period of interest), corresponding to a time_bp of 35. There are 19 “bioclimatic” variables, as well as monthly estimates for minimum, mean, and maximum temperature, and precipitation.

So, the annual variables for the 10m arc-minutes dataset are:

library(pastclim)
#> Loading required package: terra
#> terra 1.7.59
get_vars_for_dataset("WorldClim_2.1_10m")
#>  [1] "bio01"    "bio02"    "bio03"    "bio04"    "bio05"    "bio06"   
#>  [7] "bio07"    "bio08"    "bio09"    "bio10"    "bio11"    "bio12"   
#> [13] "bio13"    "bio14"    "bio15"    "bio16"    "bio17"    "bio18"   
#> [19] "bio19"    "altitude"

And the monthly variables

get_vars_for_dataset("WorldClim_2.1_10m", monthly = TRUE, annual = FALSE)
#>  [1] "temperature_01"     "temperature_02"     "temperature_03"    
#>  [4] "temperature_04"     "temperature_05"     "temperature_06"    
#>  [7] "temperature_07"     "temperature_08"     "temperature_09"    
#> [10] "temperature_10"     "temperature_11"     "temperature_12"    
#> [13] "precipitation_01"   "precipitation_02"   "precipitation_03"  
#> [16] "precipitation_04"   "precipitation_05"   "precipitation_06"  
#> [19] "precipitation_07"   "precipitation_08"   "precipitation_09"  
#> [22] "precipitation_10"   "precipitation_11"   "precipitation_12"  
#> [25] "temperature_min_01" "temperature_min_02" "temperature_min_03"
#> [28] "temperature_min_04" "temperature_min_05" "temperature_min_06"
#> [31] "temperature_min_07" "temperature_min_08" "temperature_min_09"
#> [34] "temperature_min_10" "temperature_min_11" "temperature_min_12"
#> [37] "temperature_max_01" "temperature_max_02" "temperature_max_03"
#> [40] "temperature_max_04" "temperature_max_05" "temperature_max_06"
#> [43] "temperature_max_07" "temperature_max_08" "temperature_max_09"
#> [46] "temperature_max_10" "temperature_max_11" "temperature_max_12"

We can manipulate data in the usual way. We start by downloading the dataset:

download_dataset(
  dataset = "WorldClim_2.1_10m",
  bio_variables = c("bio01", "bio02", "altitude")
)

We can then use region_slice to extract the data as a SpatRaster:

climate_present <- region_slice(
  time_ce = 1985,
  bio_variables = c("bio01", "bio02", "altitude"),
  dataset = "WorldClim_2.1_10m"
)

Future projections

Future projections are based on the models in CMIP6, downscaled and de-biased using WorldClim 2.1 for the present as a baseline. Monthly values of minimum temperature, maximum temperature, and precipitation, as well as 19 bioclimatic variables were processed for 23 global climate models (GCMs), and for four Shared Socio-economic Pathways (SSPs): 126, 245, 370 and 585. Model and SSP can be chosen by changing the ending of the dataset name WorldClim_2.1_GCM_SSP_RESm.

A complete list of available combinations can be obtained with:

list_available_datasets()
#>   [1] "Example"                                 
#>   [2] "Beyer2020"                               
#>   [3] "Krapp2021"                               
#>   [4] "Barreto2023"                             
#>   [5] "WorldClim_2.1_10m"                       
#>   [6] "WorldClim_2.1_5m"                        
#>   [7] "WorldClim_2.1_ACCESS-CM2_ssp126_10m"     
#>   [8] "WorldClim_2.1_ACCESS-CM2_ssp126_5m"      
#>   [9] "WorldClim_2.1_ACCESS-CM2_ssp245_10m"     
#>  [10] "WorldClim_2.1_ACCESS-CM2_ssp245_5m"      
#>  [11] "WorldClim_2.1_ACCESS-CM2_ssp370_10m"     
#>  [12] "WorldClim_2.1_ACCESS-CM2_ssp370_5m"      
#>  [13] "WorldClim_2.1_ACCESS-CM2_ssp585_10m"     
#>  [14] "WorldClim_2.1_ACCESS-CM2_ssp585_5m"      
#>  [15] "WorldClim_2.1_BCC-CSM2-MR_ssp126_10m"    
#>  [16] "WorldClim_2.1_BCC-CSM2-MR_ssp126_5m"     
#>  [17] "WorldClim_2.1_BCC-CSM2-MR_ssp245_10m"    
#>  [18] "WorldClim_2.1_BCC-CSM2-MR_ssp245_5m"     
#>  [19] "WorldClim_2.1_BCC-CSM2-MR_ssp370_10m"    
#>  [20] "WorldClim_2.1_BCC-CSM2-MR_ssp370_5m"     
#>  [21] "WorldClim_2.1_BCC-CSM2-MR_ssp585_10m"    
#>  [22] "WorldClim_2.1_BCC-CSM2-MR_ssp585_5m"     
#>  [23] "WorldClim_2.1_CMCC-ESM2_ssp126_10m"      
#>  [24] "WorldClim_2.1_CMCC-ESM2_ssp126_5m"       
#>  [25] "WorldClim_2.1_CMCC-ESM2_ssp245_10m"      
#>  [26] "WorldClim_2.1_CMCC-ESM2_ssp245_5m"       
#>  [27] "WorldClim_2.1_CMCC-ESM2_ssp370_10m"      
#>  [28] "WorldClim_2.1_CMCC-ESM2_ssp370_5m"       
#>  [29] "WorldClim_2.1_CMCC-ESM2_ssp585_10m"      
#>  [30] "WorldClim_2.1_CMCC-ESM2_ssp585_5m"       
#>  [31] "WorldClim_2.1_EC-Earth3-Veg_ssp126_10m"  
#>  [32] "WorldClim_2.1_EC-Earth3-Veg_ssp126_5m"   
#>  [33] "WorldClim_2.1_EC-Earth3-Veg_ssp245_10m"  
#>  [34] "WorldClim_2.1_EC-Earth3-Veg_ssp245_5m"   
#>  [35] "WorldClim_2.1_EC-Earth3-Veg_ssp370_10m"  
#>  [36] "WorldClim_2.1_EC-Earth3-Veg_ssp370_5m"   
#>  [37] "WorldClim_2.1_EC-Earth3-Veg_ssp585_10m"  
#>  [38] "WorldClim_2.1_EC-Earth3-Veg_ssp585_5m"   
#>  [39] "WorldClim_2.1_FIO-ESM-2-0_ssp126_10m"    
#>  [40] "WorldClim_2.1_FIO-ESM-2-0_ssp126_5m"     
#>  [41] "WorldClim_2.1_FIO-ESM-2-0_ssp245_10m"    
#>  [42] "WorldClim_2.1_FIO-ESM-2-0_ssp245_5m"     
#>  [43] "WorldClim_2.1_FIO-ESM-2-0_ssp370_10m"    
#>  [44] "WorldClim_2.1_FIO-ESM-2-0_ssp370_5m"     
#>  [45] "WorldClim_2.1_FIO-ESM-2-0_ssp585_10m"    
#>  [46] "WorldClim_2.1_FIO-ESM-2-0_ssp585_5m"     
#>  [47] "WorldClim_2.1_GFDL-ESM4_ssp126_10m"      
#>  [48] "WorldClim_2.1_GFDL-ESM4_ssp126_5m"       
#>  [49] "WorldClim_2.1_GFDL-ESM4_ssp245_10m"      
#>  [50] "WorldClim_2.1_GFDL-ESM4_ssp245_5m"       
#>  [51] "WorldClim_2.1_GFDL-ESM4_ssp370_10m"      
#>  [52] "WorldClim_2.1_GFDL-ESM4_ssp370_5m"       
#>  [53] "WorldClim_2.1_GFDL-ESM4_ssp585_10m"      
#>  [54] "WorldClim_2.1_GFDL-ESM4_ssp585_5m"       
#>  [55] "WorldClim_2.1_GISS-E2-1-G_ssp126_10m"    
#>  [56] "WorldClim_2.1_GISS-E2-1-G_ssp126_5m"     
#>  [57] "WorldClim_2.1_GISS-E2-1-G_ssp245_10m"    
#>  [58] "WorldClim_2.1_GISS-E2-1-G_ssp245_5m"     
#>  [59] "WorldClim_2.1_GISS-E2-1-G_ssp370_10m"    
#>  [60] "WorldClim_2.1_GISS-E2-1-G_ssp370_5m"     
#>  [61] "WorldClim_2.1_GISS-E2-1-G_ssp585_10m"    
#>  [62] "WorldClim_2.1_GISS-E2-1-G_ssp585_5m"     
#>  [63] "WorldClim_2.1_HadGEM3-GC31-LL_ssp126_10m"
#>  [64] "WorldClim_2.1_HadGEM3-GC31-LL_ssp126_5m" 
#>  [65] "WorldClim_2.1_HadGEM3-GC31-LL_ssp245_10m"
#>  [66] "WorldClim_2.1_HadGEM3-GC31-LL_ssp245_5m" 
#>  [67] "WorldClim_2.1_HadGEM3-GC31-LL_ssp370_10m"
#>  [68] "WorldClim_2.1_HadGEM3-GC31-LL_ssp370_5m" 
#>  [69] "WorldClim_2.1_HadGEM3-GC31-LL_ssp585_10m"
#>  [70] "WorldClim_2.1_HadGEM3-GC31-LL_ssp585_5m" 
#>  [71] "WorldClim_2.1_INM-CM5-0_ssp126_10m"      
#>  [72] "WorldClim_2.1_INM-CM5-0_ssp126_5m"       
#>  [73] "WorldClim_2.1_INM-CM5-0_ssp245_10m"      
#>  [74] "WorldClim_2.1_INM-CM5-0_ssp245_5m"       
#>  [75] "WorldClim_2.1_INM-CM5-0_ssp370_10m"      
#>  [76] "WorldClim_2.1_INM-CM5-0_ssp370_5m"       
#>  [77] "WorldClim_2.1_INM-CM5-0_ssp585_10m"      
#>  [78] "WorldClim_2.1_INM-CM5-0_ssp585_5m"       
#>  [79] "WorldClim_2.1_IPSL-CM6A-LR_ssp126_10m"   
#>  [80] "WorldClim_2.1_IPSL-CM6A-LR_ssp126_5m"    
#>  [81] "WorldClim_2.1_IPSL-CM6A-LR_ssp245_10m"   
#>  [82] "WorldClim_2.1_IPSL-CM6A-LR_ssp245_5m"    
#>  [83] "WorldClim_2.1_IPSL-CM6A-LR_ssp370_10m"   
#>  [84] "WorldClim_2.1_IPSL-CM6A-LR_ssp370_5m"    
#>  [85] "WorldClim_2.1_IPSL-CM6A-LR_ssp585_10m"   
#>  [86] "WorldClim_2.1_IPSL-CM6A-LR_ssp585_5m"    
#>  [87] "WorldClim_2.1_MIROC6_ssp126_10m"         
#>  [88] "WorldClim_2.1_MIROC6_ssp126_5m"          
#>  [89] "WorldClim_2.1_MIROC6_ssp245_10m"         
#>  [90] "WorldClim_2.1_MIROC6_ssp245_5m"          
#>  [91] "WorldClim_2.1_MIROC6_ssp370_10m"         
#>  [92] "WorldClim_2.1_MIROC6_ssp370_5m"          
#>  [93] "WorldClim_2.1_MIROC6_ssp585_10m"         
#>  [94] "WorldClim_2.1_MIROC6_ssp585_5m"          
#>  [95] "WorldClim_2.1_MPI-ESM1-2-HR_ssp126_10m"  
#>  [96] "WorldClim_2.1_MPI-ESM1-2-HR_ssp126_5m"   
#>  [97] "WorldClim_2.1_MPI-ESM1-2-HR_ssp245_10m"  
#>  [98] "WorldClim_2.1_MPI-ESM1-2-HR_ssp245_5m"   
#>  [99] "WorldClim_2.1_MPI-ESM1-2-HR_ssp370_10m"  
#> [100] "WorldClim_2.1_MPI-ESM1-2-HR_ssp370_5m"   
#> [101] "WorldClim_2.1_MPI-ESM1-2-HR_ssp585_10m"  
#> [102] "WorldClim_2.1_MPI-ESM1-2-HR_ssp585_5m"   
#> [103] "WorldClim_2.1_MRI-ESM2-0_ssp126_10m"     
#> [104] "WorldClim_2.1_MRI-ESM2-0_ssp126_5m"      
#> [105] "WorldClim_2.1_MRI-ESM2-0_ssp245_10m"     
#> [106] "WorldClim_2.1_MRI-ESM2-0_ssp245_5m"      
#> [107] "WorldClim_2.1_MRI-ESM2-0_ssp370_10m"     
#> [108] "WorldClim_2.1_MRI-ESM2-0_ssp370_5m"      
#> [109] "WorldClim_2.1_MRI-ESM2-0_ssp585_10m"     
#> [110] "WorldClim_2.1_MRI-ESM2-0_ssp585_5m"      
#> [111] "WorldClim_2.1_UKESM1-0-LL_ssp126_10m"    
#> [112] "WorldClim_2.1_UKESM1-0-LL_ssp126_5m"     
#> [113] "WorldClim_2.1_UKESM1-0-LL_ssp245_10m"    
#> [114] "WorldClim_2.1_UKESM1-0-LL_ssp245_5m"     
#> [115] "WorldClim_2.1_UKESM1-0-LL_ssp370_10m"    
#> [116] "WorldClim_2.1_UKESM1-0-LL_ssp370_5m"     
#> [117] "WorldClim_2.1_UKESM1-0-LL_ssp585_10m"    
#> [118] "WorldClim_2.1_UKESM1-0-LL_ssp585_5m"     
#> [119] "HYDE_3.3_baseline"

So, if we are interested in the the HadGEM3-GC31-LL model, with ssp set to 245 and at 10 arc-minutes, we can get the available variables:

get_vars_for_dataset(dataset = "WorldClim_2.1_HadGEM3-GC31-LL_ssp245_10m")
#>  [1] "bio01" "bio02" "bio03" "bio04" "bio05" "bio06" "bio07" "bio08" "bio09"
#> [10] "bio10" "bio11" "bio12" "bio13" "bio14" "bio15" "bio16" "bio17" "bio18"
#> [19] "bio19"

We can now download “bio01” and “bio02” for that dataset with:

download_dataset(
  dataset = "WorldClim_2.1_HadGEM3-GC31-LL_ssp245_10m",
  bio_variables = c("bio01", "bio02")
)

The dataset are averages over 20 year periods (2021-2040, 2041-2060, 2061-2080, 2081-2100). In pastclim, the midpoints of the periods (2030, 2050, 2070, 2090) are used as the time stamps. All 4 periods are automatically downloaded for each combination of GCM model and SSP, and can be selected as usual by defining the time in region_slice.

future_slice <- region_slice(
  time_ce = 2030,
  dataset = "WorldClim_2.1_HadGEM3-GC31-LL_ssp245_10m",
  bio_variables = c("bio01", "bio02")
)

Alternatively, it is possible to get the full time series of 4 slices with:

future_series <- region_series(
  dataset = "WorldClim_2.1_HadGEM3-GC31-LL_ssp245_10m",
  bio_variables = c("bio01", "bio02")
)

It is possible to simply use time_ce(dataset = "WorldClim_2.1_HadGEM3-GC31-LL_ssp245_10m") to get the available time points for that dataset.

Help for the WorldClim datasets (modern and future) can be accessed with help("WorldClim_2.1")