knitr::opts_chunk$set(echo=T, warning=F, comment=NA, message=F, fig.path="figures/")
rISIMIP
is an R package for accessing and analysing data provided by the Inter-sectoral Impact Model Intercomparison Project (ISIMIP). Data from the different simulation rounds (ISIMIP2a, ISIMIP2b, ISIMIP3a, ISIMIP3b) is available from here. For more information on the different data types and data input and output products have a look at the ISIMIP Website. The package currently consists of two functions:
readISIMIP()
reads and pre-processes ISIMIP datalistISIMIP()
creates a list of requested ISIMIP data filesYou can learn more about them in vignette("rISIMIP")
.
An example of extracting country-specific data from ISIMIP2b can be found in vignette("country-specific")
.
To use the package, install it directly from GitHub using the remotes
package:
# Install remotes if not previously installed if(!"remotes" %in% installed.packages()[,"Package"]) install.packages("remotes") # Install rISIMIP from Github if not previously installed if(!"rISIMIP" %in% installed.packages()[,"Package"]) remotes::install_github("RS-eco/rISIMIP", build_vignettes = TRUE)
If you encounter a bug or if you have any problems, please file an issue on Github.
# Load rISIMIP package library(rISIMIP)
The function listISIMIP
just lists all climate files for the desired time period, model and variable. The files can then be put into the aggregateNC
function of the processNC
package for processing the required NetCDF files.
# List urban area files for histsoc scenario - ISIMIP2b listISIMIP(path="I:/", version="ISIMIP2b", type="landuse", scenario="histsoc", var="urbanareas", startyear=1861, endyear=2005) # List crop data files for histsoc scenario - ISIMIP3b listISIMIP(path="I:/", version="ISIMIP3b", type="landuse", scenario="histsoc", var="5crops", startyear=1861, endyear=2005)
Note: The path must lead to a file directory on your computer, which contains the required ISIMIP files. You can download the required ISIMIP data files from: https://esg.pik-potsdam.de/search/isimip/
With readISIMIP
you can read one or multiple ISIMIP datafiles into a raster stack.
# Read urban area file for 2005soc scenario - ISIMIP2b (urbanareas_1970_1999 <- readISIMIP(path="I:/", type="landuse", scenario="2005soc", var="urbanareas", startyear=1970, endyear=1999)) # Read pasture file for 2015soc scenario - ISIMIP3b (pastures_1970_1999 <- readISIMIP(path="I:/", type="landuse", scenario="2015soc", var="pastures", startyear=1970, endyear=1999))
However, this is not useful if you are interested in long time periods, as one datafile is about 7 GB in size and you will quickly run into memory limitations.
rISIMIP
contains various pre-processed data. See the data-raw folder for how we derived the included datasets.
Annual global mean temperature as well as the 31-year running mean were calculated for each GCM and four RCPs (RCP2.6, RCP4.5, RCP6.0 and RCP8.5). Furthermore, the year when the 31-year runnning mean of global mean temperature crosses a certain temperature threshold has been calculated. The data has been provided by ISIMIP and a summary of it can be accessed from the vignette("temperature-thresholds")
vignette and is also available from the ISIMIP Website.
The landseamask used by ISIMIP has been included in the package and can be accessed by:
data("landseamask_generic")
The code for calculating global bioclimatic data from ISIMIP2b and ISIMIP3b mnodel output can be found in vignette("global-landonly")
and vignette("global-landonly-isimip3b")
respectively.
Current and future bioclimatic data for three 30-yr periods (1995, 2050, 2080) was derived from the EWEMBI (https://esg.pik-potsdam.de/search/isimip/?project=ISIMIP2b&product=input_secondary&dataset_type=Climate+atmosphere+observed) and ISIMIP2b data (https://esg.pik-potsdam.de/search/isimip/?project=ISIMIP2b&product=input&dataset_type=Climate+atmosphere+simulated) and is included in this package.
EWEMBI - 1995
data("bioclim_ewembi_1995_landonly") library(dplyr); library(sf); library(ggplot2) data(outline, package="ggmap2") outline <- sf::st_as_sf(outline) col_val <- scales::rescale(unique(c(seq(min(bioclim_ewembi_1995_landonly$bio1), 0, length=5), seq(0, max(bioclim_ewembi_1995_landonly$bio1), length=5)))) bioclim_ewembi_1995_landonly %>% select(x,y,bio1) %>% ggplot() + geom_tile(aes(x=x, y=y, fill=bio1)) + geom_sf(data=outline, fill="transparent", colour="black") + scale_fill_gradientn(name="tmean (°C)", colours=rev(colorRampPalette( c("#00007F", "blue", "#007FFF", "cyan", "white", "yellow", "#FF7F00", "red", "#7F0000"))(255)), na.value="transparent", values=col_val, limits=c(min(bioclim_ewembi_1995_landonly$bio1)-2, max(bioclim_ewembi_1995_landonly$bio1)+2)) + coord_sf(expand=F, xlim=c(min(bioclim_ewembi_1995_landonly$x), max(bioclim_ewembi_1995_landonly$x)), ylim=c(min(bioclim_ewembi_1995_landonly$y), max(bioclim_ewembi_1995_landonly$y)), ndiscr=0) + theme_classic() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text = element_blank(), plot.background = element_rect(fill = "transparent"), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent", colour=NA))
RCP2.6 - 2080
data("bioclim_gfdl-esm2m_rcp26_2080_landonly") data("bioclim_hadgem2-es_rcp26_2080_landonly") data("bioclim_ipsl-cm5a-lr_rcp26_2080_landonly") data("bioclim_miroc5_rcp26_2080_landonly") bioclim_rcp26_2080_landonly <- bind_rows(`bioclim_gfdl-esm2m_rcp26_2080_landonly`, `bioclim_hadgem2-es_rcp26_2080_landonly`, `bioclim_ipsl-cm5a-lr_rcp26_2080_landonly`, `bioclim_miroc5_rcp26_2080_landonly`) %>% select(x,y,bio1) %>% group_by(x,y) %>% summarise(bio1=mean(bio1, na.rm=T)) col_val <- scales::rescale(unique(c(seq(min(bioclim_rcp26_2080_landonly$bio1), 0, length=5), seq(0, max(bioclim_rcp26_2080_landonly$bio1), length=5)))) ggplot() + geom_tile(data=bioclim_rcp26_2080_landonly, aes(x=x, y=y, fill=bio1)) + geom_sf(data=outline, fill="transparent", colour="black") + scale_fill_gradientn(name="tmean (°C)", colours=rev(colorRampPalette( c("#00007F", "blue", "#007FFF", "cyan", "white", "yellow", "#FF7F00", "red", "#7F0000"))(255)), na.value="transparent", values=col_val, limits=c(min(bioclim_rcp26_2080_landonly$bio1)-2, max(bioclim_rcp26_2080_landonly$bio1)+2)) + coord_sf(expand=F, xlim=c(min(bioclim_rcp26_2080_landonly$x), max(bioclim_rcp26_2080_landonly$x)), ylim=c(min(bioclim_rcp26_2080_landonly$y), max(bioclim_rcp26_2080_landonly$y)), ndiscr=0) + theme_classic() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text = element_blank(), plot.background = element_rect(fill = "transparent"), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent", colour=NA))
RCP6.0 - 2080
data("bioclim_gfdl-esm2m_rcp60_2080_landonly") data("bioclim_hadgem2-es_rcp60_2080_landonly") data("bioclim_ipsl-cm5a-lr_rcp60_2080_landonly") data("bioclim_miroc5_rcp60_2080_landonly") bioclim_rcp60_2080_landonly <- bind_rows(`bioclim_gfdl-esm2m_rcp60_2080_landonly`, `bioclim_hadgem2-es_rcp60_2080_landonly`, `bioclim_ipsl-cm5a-lr_rcp60_2080_landonly`, `bioclim_miroc5_rcp60_2080_landonly`) %>% select(x,y,bio1) %>% group_by(x,y) %>% summarise(bio1=mean(bio1, na.rm=T)) col_val <- scales::rescale(unique(c(seq(min(bioclim_rcp60_2080_landonly$bio1), 0, length=5), seq(0, max(bioclim_rcp60_2080_landonly$bio1), length=5)))) ggplot() + geom_tile(data=bioclim_rcp60_2080_landonly, aes(x=x, y=y, fill=bio1)) + geom_sf(data=outline, fill="transparent", colour="black") + scale_fill_gradientn(name="tmean (°C)", colours=rev(colorRampPalette( c("#00007F", "blue", "#007FFF", "cyan", "white", "yellow", "#FF7F00", "red", "#7F0000"))(255)), na.value="transparent", values=col_val, limits=c(min(bioclim_rcp60_2080_landonly$bio1)-2, max(bioclim_rcp60_2080_landonly$bio1)+2)) + coord_sf(expand=F, xlim=c(min(bioclim_rcp60_2080_landonly$x), max(bioclim_rcp60_2080_landonly$x)), ylim=c(min(bioclim_rcp60_2080_landonly$y), max(bioclim_rcp60_2080_landonly$y)), ndiscr=0) + theme_classic() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text = element_blank(), plot.background = element_rect(fill = "transparent"), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent", colour=NA))
RCP8.5 - 2080
data("bioclim_gfdl-esm2m_rcp85_2080_landonly") data("bioclim_hadgem2-es_rcp85_2080_landonly") data("bioclim_ipsl-cm5a-lr_rcp85_2080_landonly") data("bioclim_miroc5_rcp85_2080_landonly") bioclim_rcp85_2080_landonly <- bind_rows(`bioclim_gfdl-esm2m_rcp85_2080_landonly`, `bioclim_hadgem2-es_rcp85_2080_landonly`, `bioclim_ipsl-cm5a-lr_rcp85_2080_landonly`, `bioclim_miroc5_rcp85_2080_landonly`) %>% select(x,y,bio1) %>% group_by(x,y) %>% summarise(bio1=mean(bio1, na.rm=T)) col_val <- scales::rescale(unique(c(seq(min(bioclim_rcp85_2080_landonly$bio1), 0, length=5), seq(0, max(bioclim_rcp85_2080_landonly$bio1), length=5)))) ggplot() + geom_tile(data=bioclim_rcp85_2080_landonly, aes(x=x, y=y, fill=bio1)) + geom_sf(data=outline, fill="transparent", colour="black") + scale_fill_gradientn(name="tmean (°C)", colours=rev(colorRampPalette( c("#00007F", "blue", "#007FFF", "cyan", "white", "yellow", "#FF7F00", "red", "#7F0000"))(255)), na.value="transparent", values=col_val, limits=c(min(bioclim_rcp85_2080_landonly$bio1)-2, max(bioclim_rcp85_2080_landonly$bio1)+2)) + coord_sf(expand=F, xlim=c(min(bioclim_rcp85_2080_landonly$x), max(bioclim_rcp85_2080_landonly$x)), ylim=c(min(bioclim_rcp85_2080_landonly$y), max(bioclim_rcp85_2080_landonly$y)), ndiscr=0) + theme_classic() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text = element_blank(), plot.background = element_rect(fill = "transparent"), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent", colour=NA))
Current and future bioclimatic data for five 30-yr periods (1995, 2000, 2005, 2050, 2080) was derived from the GSWP3-W5E5 and ISIMIP3b data (https://esg.pik-potsdam.de/search/isimip/?project=ISIMIP3b&product=input&dataset_type=Climate+atmosphere+simulated) and is included in this package.
GSWP3_W5E5 - 2005
data("bioclim_gswp3-w5e5_obsclim_2005_landonly") library(dplyr); library(sf); library(ggplot2) data(outline, package="ggmap2") outline <- sf::st_as_sf(outline) col_val <- scales::rescale(unique(c(seq(min(`bioclim_gswp3-w5e5_obsclim_2005_landonly`$bio1), 0, length=5), seq(0, max(`bioclim_gswp3-w5e5_obsclim_2005_landonly`$bio1), length=5)))) `bioclim_gswp3-w5e5_obsclim_2005_landonly` %>% select(x,y,bio1) %>% ggplot() + geom_tile(aes(x=x, y=y, fill=bio1)) + geom_sf(data=outline, fill="transparent", colour="black") + scale_fill_gradientn(name="tmean (°C)", colours=rev(colorRampPalette( c("#00007F", "blue", "#007FFF", "cyan", "white", "yellow", "#FF7F00", "red", "#7F0000"))(255)), na.value="transparent", values=col_val, limits=c(min(`bioclim_gswp3-w5e5_obsclim_2005_landonly`$bio1)-2, max(`bioclim_gswp3-w5e5_obsclim_2005_landonly`$bio1)+2)) + coord_sf(expand=F, xlim=c(min(`bioclim_gswp3-w5e5_obsclim_2005_landonly`$x), max(`bioclim_gswp3-w5e5_obsclim_2005_landonly`$x)), ylim=c(min(`bioclim_gswp3-w5e5_obsclim_2005_landonly`$y), max(`bioclim_gswp3-w5e5_obsclim_2005_landonly`$y)), ndiscr=0) + theme_classic() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text = element_blank(), plot.background = element_rect(fill = "transparent"), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent", colour=NA))
SSP126 - 2080
data("bioclim_gfdl-esm4_ssp126_2080_landonly") data("bioclim_ipsl-cm6a-lr_ssp126_2080_landonly") data("bioclim_mpi-esm1-2-hr_ssp126_2080_landonly") data("bioclim_mri-esm2-0_ssp126_2080_landonly") data("bioclim_ukesm1-0-ll_ssp126_2080_landonly") bioclim_ssp126_2080_landonly <- bind_rows(`bioclim_gfdl-esm4_ssp126_2080_landonly`, `bioclim_ipsl-cm6a-lr_ssp126_2080_landonly`, `bioclim_mpi-esm1-2-hr_ssp126_2080_landonly`, `bioclim_mri-esm2-0_ssp126_2080_landonly`, `bioclim_ukesm1-0-ll_ssp126_2080_landonly`) %>% select(x,y,bio1) %>% group_by(x,y) %>% summarise(bio1=mean(bio1, na.rm=T)) col_val <- scales::rescale(unique(c(seq(min(bioclim_ssp126_2080_landonly$bio1), 0, length=5), seq(0, max(bioclim_ssp126_2080_landonly$bio1), length=5)))) ggplot() + geom_tile(data=bioclim_ssp126_2080_landonly, aes(x=x, y=y, fill=bio1)) + geom_sf(data=outline, fill="transparent", colour="black") + scale_fill_gradientn(name="tmean (°C)", colours=rev(colorRampPalette( c("#00007F", "blue", "#007FFF", "cyan", "white", "yellow", "#FF7F00", "red", "#7F0000"))(255)), na.value="transparent", values=col_val, limits=c(min(bioclim_ssp126_2080_landonly$bio1)-2, max(bioclim_ssp126_2080_landonly$bio1)+2)) + coord_sf(expand=F, xlim=c(min(bioclim_ssp126_2080_landonly$x), max(bioclim_ssp126_2080_landonly$x)), ylim=c(min(bioclim_ssp126_2080_landonly$y), max(bioclim_ssp126_2080_landonly$y)), ndiscr=0) + theme_classic() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text = element_blank(), plot.background = element_rect(fill = "transparent"), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent", colour=NA))
SSP370 - 2080
data("bioclim_gfdl-esm4_ssp370_2080_landonly") data("bioclim_ipsl-cm6a-lr_ssp370_2080_landonly") data("bioclim_mpi-esm1-2-hr_ssp370_2080_landonly") data("bioclim_mri-esm2-0_ssp370_2080_landonly") data("bioclim_ukesm1-0-ll_ssp370_2080_landonly") bioclim_ssp370_2080_landonly <- bind_rows(`bioclim_gfdl-esm4_ssp370_2080_landonly`, `bioclim_ipsl-cm6a-lr_ssp370_2080_landonly`, `bioclim_mpi-esm1-2-hr_ssp370_2080_landonly`, `bioclim_mri-esm2-0_ssp370_2080_landonly`, `bioclim_ukesm1-0-ll_ssp370_2080_landonly`) %>% select(x,y,bio1) %>% group_by(x,y) %>% summarise(bio1=mean(bio1, na.rm=T)) col_val <- scales::rescale(unique(c(seq(min(bioclim_ssp370_2080_landonly$bio1), 0, length=5), seq(0, max(bioclim_ssp370_2080_landonly$bio1), length=5)))) ggplot() + geom_tile(data=bioclim_ssp370_2080_landonly, aes(x=x, y=y, fill=bio1)) + geom_sf(data=outline, fill="transparent", colour="black") + scale_fill_gradientn(name="tmean (°C)", colours=rev(colorRampPalette( c("#00007F", "blue", "#007FFF", "cyan", "white", "yellow", "#FF7F00", "red", "#7F0000"))(255)), na.value="transparent", values=col_val, limits=c(min(bioclim_ssp370_2080_landonly$bio1)-2, max(bioclim_ssp370_2080_landonly$bio1)+2)) + coord_sf(expand=F, xlim=c(min(bioclim_ssp370_2080_landonly$x), max(bioclim_ssp370_2080_landonly$x)), ylim=c(min(bioclim_ssp370_2080_landonly$y), max(bioclim_ssp370_2080_landonly$y)), ndiscr=0) + theme_classic() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text = element_blank(), plot.background = element_rect(fill = "transparent"), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent", colour=NA))
SSP585 - 2080
data("bioclim_gfdl-esm4_ssp585_2080_landonly") data("bioclim_ipsl-cm6a-lr_ssp585_2080_landonly") data("bioclim_mpi-esm1-2-hr_ssp585_2080_landonly") data("bioclim_mri-esm2-0_ssp585_2080_landonly") data("bioclim_ukesm1-0-ll_ssp585_2080_landonly") bioclim_ssp585_2080_landonly <- bind_rows(`bioclim_gfdl-esm4_ssp585_2080_landonly`, `bioclim_ipsl-cm6a-lr_ssp585_2080_landonly`, `bioclim_mpi-esm1-2-hr_ssp585_2080_landonly`, `bioclim_mri-esm2-0_ssp585_2080_landonly`, `bioclim_ukesm1-0-ll_ssp585_2080_landonly`) %>% select(x,y,bio1) %>% group_by(x,y) %>% summarise(bio1=mean(bio1, na.rm=T)) col_val <- scales::rescale(unique(c(seq(min(bioclim_ssp585_2080_landonly$bio1), 0, length=5), seq(0, max(bioclim_ssp585_2080_landonly$bio1), length=5)))) ggplot() + geom_tile(data=bioclim_ssp585_2080_landonly, aes(x=x, y=y, fill=bio1)) + geom_sf(data=outline, fill="transparent", colour="black") + scale_fill_gradientn(name="tmean (°C)", colours=rev(colorRampPalette( c("#00007F", "blue", "#007FFF", "cyan", "white", "yellow", "#FF7F00", "red", "#7F0000"))(255)), na.value="transparent", values=col_val, limits=c(min(bioclim_ssp585_2080_landonly$bio1)-2, max(bioclim_ssp585_2080_landonly$bio1)+2)) + coord_sf(expand=F, xlim=c(min(bioclim_ssp585_2080_landonly$x), max(bioclim_ssp585_2080_landonly$x)), ylim=c(min(bioclim_ssp585_2080_landonly$y), max(bioclim_ssp585_2080_landonly$y)), ndiscr=0) + theme_classic() + theme(axis.title = element_blank(), axis.line = element_blank(), axis.ticks = element_blank(), axis.text = element_blank(), plot.background = element_rect(fill = "transparent"), legend.background = element_rect(fill = "transparent"), legend.box.background = element_rect(fill = "transparent", colour=NA))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.