Plates and coastlines reconstruction

true

Goals and introduction

The purpose of this vignette is to demonstrate the newly implemented elements of the chronosphere. The primary feature of the package is to load published datasets of deep time paleogeography and implement functions that ease interacting with them. Paleogeographic data are available through the GPlates Web Service and through the repositories of the chronosphere package. For instructions on installing the package, please click here.

Plate reconstructions

The ‘static plate’ polygons (plates rotated with time) can be accessed directly from the GPlates Web Service using the reconstruct() function. For the demo we have chosen two ages that reflect a good match between PaleoDB occurrences and landmass distribution.

maps <- reconstruct("plates", age=c(300,295))

The function call create a list class object with as many elements as many ages are given. Have a look at the object:

maps
## $`300`
## class       : SpatialPolygonsDataFrame 
## features    : 87 
## extent      : -180, 180, -90, 69.6  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
## variables   : 1
## names       : FID 
## min values  :   0 
## max values  :  86 
## 
## $`295`
## class       : SpatialPolygonsDataFrame 
## features    : 86 
## extent      : -180, 180, -90, 71.61  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
## variables   : 1
## names       : FID 
## min values  :   0 
## max values  :  85

The different elements corresponding to each age can be accessed separately with:

# accessing the first polygon object (300 Ma)
ma300 <- maps[[1]]
ma300
## class       : SpatialPolygonsDataFrame 
## features    : 87 
## extent      : -180, 180, -90, 69.6  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
## variables   : 1
## names       : FID 
## min values  :   0 
## max values  :  86

The new ma300 object behaves like a regular SpatialPolygonsDataFrame object from the sp package. You can use its default methods to plot and manipulate the object

#plot
plot(ma300, col="gray")

The different elements can also be accessed by referring to their ages with character subscripts, i.e. quotation marks are required.

ma295 <- maps[["295"]]

plot(ma295, col="gray")

Coastlines

Coastlines can also be reconstructed via the web service. These can be accessed with.

coast <- reconstruct("coastlines", age=c(300,295))

This object has the same structure as the maps object before, and also has named elements, that you can use for subsetting:

ma295 <- maps[["295"]]
coast295 <- coast[["295"]]

Plotting works with the methods implemented in the sp package:

plot(ma295, col="gray", border=NA)
lines(coast295)

The reconstruct() function allows reconstructions with multiple plate tectonic models. The default setting is PALEOMAP that refers to the PaleoMAP project of C. Scotese (v3, 2018), but other models are available such as that of Seton et al. (2012).

Environmental variables

The primary goal of the package is to make raster-type environmental variables available directly from the R environment. These are hosted on a remote server, and can be downloaded whenever required. You can get the list of the currently available maps with the function dataindex().

ind <- dataindex()
## This function is deprecated, and will be removed in chronosphere v0.3.0.
## Please use datasets() instead.
head(ind)
##                                                  name        dat        var res
## 1                    PALEOMAP Digital Elevation model   paleomap        dem 1.0
## 2                    PALEOMAP Paleoatlas Paleorasters   paleomap paleoatlas 0.1
## 3                    PALEOMAP Paleoatlas Paleorasters   paleomap paleoatlas 0.5
## 4                               Paleobiology Database       pbdb             NA
## 5                               Paleobiology Database       pbdb             NA
## 6 Continent Fragmentation index of Zaffos et al. 2017 timeseries   fragment  NA
##                 ver rotation     licence proj4string     date        type
## 1          20190719       NA CC-BY-NC-ND          NA 20180811 RasterArray
## 2        20160216v3       NA CC-BY-NC-ND          NA 20160216 RasterArray
## 3        20160216v3       NA CC-BY-NC-ND          NA 20160216 RasterArray
## 4          20191122       NA       CC-BY          NA 20191122  data.frame
## 5          20200217       NA       CC-BY          NA 20200217  data.frame
## 6 zaffos_et_al_2017       NA  not formal          NA 20170317  data.frame
##   format separator public chronosphere.version
## 1     nc             TRUE                0.2.0
## 2     nc             TRUE                0.2.0
## 3     nc             TRUE                0.2.0
## 4    rds             TRUE                0.2.0
## 5    rds             TRUE                0.2.0
## 6    csv     comma   TRUE                0.2.0
##                                                                    url
## 1 https://www.earthbyte.org/paleodem-resource-scotese-and-wright-2018/
## 2           https://www.earthbyte.org/paleomap-paleoatlas-for-gplates/
## 3           https://www.earthbyte.org/paleomap-paleoatlas-for-gplates/
## 4                                              https://paleobiodb.org/
## 5                                              https://paleobiodb.org/
## 6                      https://github.com/UW-Macrostrat/PNAS_201702297
##                                                                                                                                                                                                                      citation
## 1                                         Scotese, C. R. Wright, N. (2018). PALEOMAP Paleodigital Elevation Models (PaleoDEMS) for the Phanerozoic. URL: https://www.earthbyte.org/paleodem-resource-scotese-and-wright-2018/
## 2                                                          Scotese, C. R. (2016) Tutorial: PALEOMAP PaleoAtlas for GPlates and the PaleoData Plotter Program. URL: https://www.earthbyte.org/paleomap-paleoatlas-for-gplates/
## 3                                                          Scotese, C. R. (2016) Tutorial: PALEOMAP PaleoAtlas for GPlates and the PaleoData Plotter Program. URL: https://www.earthbyte.org/paleomap-paleoatlas-for-gplates/
## 4                                                                                                                       Please remember to acknowledge the Paleobiology Database (http://paleobiodb.org) in your publication.
## 5                                                                                                                       Please remember to acknowledge the Paleobiology Database (http://paleobiodb.org) in your publication.
## 6 Zaffos, A., Finnegan, S., & Peters, S. E. (2017). Plate tectonic regulation of global marine animal diversity. Proceedings of the National Academy of Sciences, 114(22), 5653–5658. https://doi.org/10.1073/pnas.1702297114
##                                                   comment
## 1                                                        
## 2 \\Caradocian map omitted -  same date as Darriwillian\\
## 3                                      Resampled from 0.1
## 4                                                        
## 5                                                        
## 6

Currently the available variables are limited to the PaleoDEM (Scotese and Wright, 2018) and PaleoRaster series. The registry object includes the the name of the dataset, the name of the variable in question, spatial resolution, if applicable and the variables version. These are input parameters to the fetch() function, that downloads and attached the selected data. The PaleoDEMS can be downloaded using the following command. Note: the argument dat represents the downloaded dataset and var represents the desired variable. All available ages will be downloaded with the above function call.

dems <- fetch(dat="paleomap", var="dem")
## If you use the data in publications, please cite its
## reference, as well as that of the 'chronosphere' package.
## - Scotese, C. R. Wright, N. (2018). PALEOMAP Paleodigital Elevation Models (PaleoDEMS) for the Phanerozoic. URL: https://www.earthbyte.org/paleodem-resource-scotese-and-wright-2018/
dems
## class         : RasterArray 
## RasterLayer properties: 
## - dimensions  : 181, 361  (nrow, ncol)
## - resolution  : 1, 1  (x, y)
## - extent      : -180.5, 180.5, -90.5, 90.5  (xmin, xmax, ymin, ymax)
## - coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
## Array properties: 
## - dimensions   : 109  (vector)
## - num. layers    : 109
## - proxy:
##          0         5        10        15        20        25        30        35 
##   "dem_0"   "dem_5"  "dem_10"  "dem_15"  "dem_20"  "dem_25"  "dem_30"  "dem_35" 
##        40        45        50        55        60        65        70        75 
##  "dem_40"  "dem_45"  "dem_50"  "dem_55"  "dem_60"  "dem_65"  "dem_70"  "dem_75" 
##        80        85        90        95       100       105       110       115 
##  "dem_80"  "dem_85"  "dem_90"  "dem_95" "dem_100" "dem_105" "dem_110" "dem_115" 
##       120       125       130       135       140       145       150       155 
## "dem_120" "dem_125" "dem_130" "dem_135" "dem_140" "dem_145" "dem_150" "dem_155" 
##       160       165       170       175       180       185       190       195 
## "dem_160" "dem_165" "dem_170" "dem_175" "dem_180" "dem_185" "dem_190" "dem_195" 
##       200       205       210       215       220       225       230       235 
## "dem_200" "dem_205" "dem_210" "dem_215" "dem_220" "dem_225" "dem_230" "dem_235" 
##       240       245       250       255       260       265       270       275 
## "dem_240" "dem_245" "dem_250" "dem_255" "dem_260" "dem_265" "dem_270" "dem_275" 
##       280       285       290       295       300       305       310       315 
## "dem_280" "dem_285" "dem_290" "dem_295" "dem_300" "dem_305" "dem_310" "dem_315" 
##       320       325       330       335       340       345       350       355 
## "dem_320" "dem_325" "dem_330" "dem_335" "dem_340" "dem_345" "dem_350" "dem_355" 
##       360       365       370       375       380       385       390       395 
## "dem_360" "dem_365" "dem_370" "dem_375" "dem_380" "dem_385" "dem_390" "dem_395" 
##       400       405       410       415       420       425       430       435 
## "dem_400" "dem_405" "dem_410" "dem_415" "dem_420" "dem_425" "dem_430" "dem_435" 
##       440       445       450       455       460       465       470       475 
## "dem_440" "dem_445" "dem_450" "dem_455" "dem_460" "dem_465" "dem_470" "dem_475" 
##       480       485       490       495       500       505       510       515 
## "dem_480" "dem_485" "dem_490" "dem_495" "dem_500" "dem_505" "dem_510" "dem_515" 
##       520       525       530       535       540 
## "dem_520" "dem_525" "dem_530" "dem_535" "dem_540"

The function returns an object of the RasterArray class. This S4 class (still under intense development) is built on RasterStacks and simulates base R arrays with RasterLayers as elements. In other words, you can organize and subset individual RasterLayers as if they were simple logical/numeric/character values that can be combined to build vectors, matrices, or multidimensional arrays. Typing the object name to the console will display the proxy object that symbolizes the structure of the RasterArray representing every RasterLayer with its name.

The dems object is a one-dimensional array (practically a vector), where every element is a time slice-specific RasterLayer (DEM). Subsetting rules are implemented to access these elements the same way as you would do it with base R objects. For instance, if you want to get the first element, you can use:

dems[1]
## class      : RasterLayer 
## dimensions : 181, 361, 65341  (nrow, ncol, ncell)
## resolution : 1, 1  (x, y)
## extent     : -180.5, 180.5, -90.5, 90.5  (xmin, xmax, ymin, ymax)
## crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
## source     : C:/Users/nussa/AppData/Local/Temp/Rtmpeom7H4/1_dem_20190719/1_dem_20190719_0.nc 
## names      : dem_0 
## zvar       : z

which immediately reduces to a simple RasterLayer, so you can treat it as such:

plot(dems[1])

The elements have the ages of the DEMs as names, and can also be subsetted as regular R vectors.

plot(dems["300"])

To access additional variables, you only have to vary the dat, var and sometimes the res arguments of the package, depending on the resolutions are available.

pr <- fetch(dat="paleomap", var="paleoatlas", res=0.5)
## If you use the data in publications, please cite its
## reference, as well as that of the 'chronosphere' package.
## - Scotese, C. R. (2016) Tutorial: PALEOMAP PaleoAtlas for GPlates and the PaleoData Plotter Program. URL: https://www.earthbyte.org/paleomap-paleoatlas-for-gplates/
pr
## class         : RasterArray 
## RasterLayer properties: 
## - dimensions  : 360, 720  (nrow, ncol)
## - resolution  : 0.5, 0.5  (x, y)
## - extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
## - coord. ref. : +proj=longlat 
## Array properties: 
## - dimensions  : 89, 3  (nrow, ncol)
## - num. layers    : 267
## - proxy:
##      paleoatlas_R       paleoatlas_G       paleoatlas_B      
## 0   "paleoatlas_0_R"   "paleoatlas_0_G"   "paleoatlas_0_B"  
## 1   "paleoatlas_1_R"   "paleoatlas_1_G"   "paleoatlas_1_B"  
## 4   "paleoatlas_4_R"   "paleoatlas_4_G"   "paleoatlas_4_B"  
## 6   "paleoatlas_6_R"   "paleoatlas_6_G"   "paleoatlas_6_B"  
## 10  "paleoatlas_10_R"  "paleoatlas_10_G"  "paleoatlas_10_B" 
## 15  "paleoatlas_15_R"  "paleoatlas_15_G"  "paleoatlas_15_B" 
## 20  "paleoatlas_20_R"  "paleoatlas_20_G"  "paleoatlas_20_B" 
## 25  "paleoatlas_25_R"  "paleoatlas_25_G"  "paleoatlas_25_B" 
## 30  "paleoatlas_30_R"  "paleoatlas_30_G"  "paleoatlas_30_B" 
## 35  "paleoatlas_35_R"  "paleoatlas_35_G"  "paleoatlas_35_B" 
## 40  "paleoatlas_40_R"  "paleoatlas_40_G"  "paleoatlas_40_B" 
## 45  "paleoatlas_45_R"  "paleoatlas_45_G"  "paleoatlas_45_B" 
## 50  "paleoatlas_50_R"  "paleoatlas_50_G"  "paleoatlas_50_B" 
## 55  "paleoatlas_55_R"  "paleoatlas_55_G"  "paleoatlas_55_B" 
## 60  "paleoatlas_60_R"  "paleoatlas_60_G"  "paleoatlas_60_B" 
## 66  "paleoatlas_66_R"  "paleoatlas_66_G"  "paleoatlas_66_B" 
## 70  "paleoatlas_70_R"  "paleoatlas_70_G"  "paleoatlas_70_B" 
## 75  "paleoatlas_75_R"  "paleoatlas_75_G"  "paleoatlas_75_B" 
## 80  "paleoatlas_80_R"  "paleoatlas_80_G"  "paleoatlas_80_B" 
## 90  "paleoatlas_90_R"  "paleoatlas_90_G"  "paleoatlas_90_B" 
## 95  "paleoatlas_95_R"  "paleoatlas_95_G"  "paleoatlas_95_B" 
## 100 "paleoatlas_100_R" "paleoatlas_100_G" "paleoatlas_100_B"
## 105 "paleoatlas_105_R" "paleoatlas_105_G" "paleoatlas_105_B"
## 110 "paleoatlas_110_R" "paleoatlas_110_G" "paleoatlas_110_B"
## 115 "paleoatlas_115_R" "paleoatlas_115_G" "paleoatlas_115_B"
## 120 "paleoatlas_120_R" "paleoatlas_120_G" "paleoatlas_120_B"
## 125 "paleoatlas_125_R" "paleoatlas_125_G" "paleoatlas_125_B"
## 130 "paleoatlas_130_R" "paleoatlas_130_G" "paleoatlas_130_B"
## 135 "paleoatlas_135_R" "paleoatlas_135_G" "paleoatlas_135_B"
## 140 "paleoatlas_140_R" "paleoatlas_140_G" "paleoatlas_140_B"
## 145 "paleoatlas_145_R" "paleoatlas_145_G" "paleoatlas_145_B"
## 150 "paleoatlas_150_R" "paleoatlas_150_G" "paleoatlas_150_B"
## 155 "paleoatlas_155_R" "paleoatlas_155_G" "paleoatlas_155_B"
## 160 "paleoatlas_160_R" "paleoatlas_160_G" "paleoatlas_160_B"
## 165 "paleoatlas_165_R" "paleoatlas_165_G" "paleoatlas_165_B"
## 170 "paleoatlas_170_R" "paleoatlas_170_G" "paleoatlas_170_B"
## 175 "paleoatlas_175_R" "paleoatlas_175_G" "paleoatlas_175_B"
## 180 "paleoatlas_180_R" "paleoatlas_180_G" "paleoatlas_180_B"
## 185 "paleoatlas_185_R" "paleoatlas_185_G" "paleoatlas_185_B"
## 190 "paleoatlas_190_R" "paleoatlas_190_G" "paleoatlas_190_B"
## 195 "paleoatlas_195_R" "paleoatlas_195_G" "paleoatlas_195_B"
## 200 "paleoatlas_200_R" "paleoatlas_200_G" "paleoatlas_200_B"
## 210 "paleoatlas_210_R" "paleoatlas_210_G" "paleoatlas_210_B"
## 220 "paleoatlas_220_R" "paleoatlas_220_G" "paleoatlas_220_B"
## 230 "paleoatlas_230_R" "paleoatlas_230_G" "paleoatlas_230_B"
## 240 "paleoatlas_240_R" "paleoatlas_240_G" "paleoatlas_240_B"
## 245 "paleoatlas_245_R" "paleoatlas_245_G" "paleoatlas_245_B"
## 250 "paleoatlas_250_R" "paleoatlas_250_G" "paleoatlas_250_B"
## 255 "paleoatlas_255_R" "paleoatlas_255_G" "paleoatlas_255_B"
## 260 "paleoatlas_260_R" "paleoatlas_260_G" "paleoatlas_260_B"
## 270 "paleoatlas_270_R" "paleoatlas_270_G" "paleoatlas_270_B"
## 275 "paleoatlas_275_R" "paleoatlas_275_G" "paleoatlas_275_B"
## 280 "paleoatlas_280_R" "paleoatlas_280_G" "paleoatlas_280_B"
## 290 "paleoatlas_290_R" "paleoatlas_290_G" "paleoatlas_290_B"
## 295 "paleoatlas_295_R" "paleoatlas_295_G" "paleoatlas_295_B"
## 300 "paleoatlas_300_R" "paleoatlas_300_G" "paleoatlas_300_B"
## 305 "paleoatlas_305_R" "paleoatlas_305_G" "paleoatlas_305_B"
## 310 "paleoatlas_310_R" "paleoatlas_310_G" "paleoatlas_310_B"
## 315 "paleoatlas_315_R" "paleoatlas_315_G" "paleoatlas_315_B"
## 320 "paleoatlas_320_R" "paleoatlas_320_G" "paleoatlas_320_B"
## 330 "paleoatlas_330_R" "paleoatlas_330_G" "paleoatlas_330_B"
## 340 "paleoatlas_340_R" "paleoatlas_340_G" "paleoatlas_340_B"
## 350 "paleoatlas_350_R" "paleoatlas_350_G" "paleoatlas_350_B"
## 360 "paleoatlas_360_R" "paleoatlas_360_G" "paleoatlas_360_B"
## 370 "paleoatlas_370_R" "paleoatlas_370_G" "paleoatlas_370_B"
## 380 "paleoatlas_380_R" "paleoatlas_380_G" "paleoatlas_380_B"
## 390 "paleoatlas_390_R" "paleoatlas_390_G" "paleoatlas_390_B"
## 395 "paleoatlas_395_R" "paleoatlas_395_G" "paleoatlas_395_B"
## 400 "paleoatlas_400_R" "paleoatlas_400_G" "paleoatlas_400_B"
## 410 "paleoatlas_410_R" "paleoatlas_410_G" "paleoatlas_410_B"
## 415 "paleoatlas_415_R" "paleoatlas_415_G" "paleoatlas_415_B"
## 420 "paleoatlas_420_R" "paleoatlas_420_G" "paleoatlas_420_B"
## 425 "paleoatlas_425_R" "paleoatlas_425_G" "paleoatlas_425_B"
## 430 "paleoatlas_430_R" "paleoatlas_430_G" "paleoatlas_430_B"
## 440 "paleoatlas_440_R" "paleoatlas_440_G" "paleoatlas_440_B"
## 445 "paleoatlas_445_R" "paleoatlas_445_G" "paleoatlas_445_B"
## 450 "paleoatlas_450_R" "paleoatlas_450_G" "paleoatlas_450_B"
## 460 "paleoatlas_460_R" "paleoatlas_460_G" "paleoatlas_460_B"
## 470 "paleoatlas_470_R" "paleoatlas_470_G" "paleoatlas_470_B"
## 480 "paleoatlas_480_R" "paleoatlas_480_G" "paleoatlas_480_B"
## 490 "paleoatlas_490_R" "paleoatlas_490_G" "paleoatlas_490_B"
## 500 "paleoatlas_500_R" "paleoatlas_500_G" "paleoatlas_500_B"
## 510 "paleoatlas_510_R" "paleoatlas_510_G" "paleoatlas_510_B"
## 520 "paleoatlas_520_R" "paleoatlas_520_G" "paleoatlas_520_B"
## 530 "paleoatlas_530_R" "paleoatlas_530_G" "paleoatlas_530_B"
## 540 "paleoatlas_540_R" "paleoatlas_540_G" "paleoatlas_540_B"
## 600 "paleoatlas_600_R" "paleoatlas_600_G" "paleoatlas_600_B"
## 690 "paleoatlas_690_R" "paleoatlas_690_G" "paleoatlas_690_B"
## 750 "paleoatlas_750_R" "paleoatlas_750_G" "paleoatlas_750_B"

This function call downloads a RasterArray of the PaleoMap Paleoatlas raster series with the resolution of 0.5 degrees. This RasterArray has 3 columns, each corresponding to one of the RGB channels.

You can refer to the 300Ma map by referring to the row of this RasterArray and then you can plot it with the function mapplot()

pa300 <- pr["300", ]
mapplot(pa300, rgb=TRUE)

Note: in the future the SpArray class will also be implemented, building R arrays from SpatialPolygonsDataFrame objects.

Previous