Samples deepest depth values from a SpatialPointsDataFrame and generates a RasterLayer.




A SpatialPointsDataFrame object from which bottom variables will be sampled. See Details for more about format.


A RasterLayer designed to approximate sea bottom measurements for modeling species' distributions and/or niches.


rawPointData is a SpatialPointsDataFrame object that contains measurements of a single environmental variable (e.g. salinity, temperature, etc.) with x, y, and z coordinates. The measurements in the data.frame should be organized so that each column is a depth slice, increasing in depth from left to right. The function was designed around the oceanographic data shapefiles supplied by the World Ocean Atlas ( The function selects the "deepest" (rightmost) measurement at each x, y coordinate pair that contains data. These measurements are then rasterized at the resolution and extent of the x,y coordinates.



# Create point grid
coords <- data.frame(x = rep(seq(1:5), times = 5),
                    y = unlist(lapply(1:5, FUN = function(x) {
                      rep(x, times = 5)})))

# Create data and add NAs to simulate uneven bottom depths
dd <- data.frame(SURFACE = 1:25,
                d5M = 6:30,
                d10M = 11:35,
                d25M = 16:40)
dd$d25M[c(1:5, 18:25)] <- NA
dd$d10M[c(3:5, 21:23)] <- NA
dd$d5M[c(4, 22)] <- NA

# Create SpatialPointsDataFrame
sp <- sp::SpatialPointsDataFrame(coords = coords,
                            data = dd)

# Here's the function
result <- bottomRaster(rawPointData = sp)