This tool creates a virtual raster or downloads data for an extent from Cloud Optimized GeoTIFFs (COGs) from the Soil Landscapes of the United States 100-meter (SOLUS100) soil property maps project repository.
Usage
fetchSOLUS(
x = NULL,
depth_slices = c(0, 5, 15, 30, 60, 100, 150),
variables = c("anylithicdpt", "caco3", "cec7", "claytotal", "dbovendry", "ec", "ecec",
"fragvol", "gypsum", "ph1to1h2o", "resdept", "sandco", "sandfine", "sandmed",
"sandtotal", "sandvc", "sandvf", "sar", "silttotal", "soc"),
output_type = c("prediction", "relative prediction interval",
"95% low prediction interval", "95% high prediction interval"),
grid = TRUE,
samples = NULL,
method = c("linear", "constant", "fmm", "natural", "monoH.FC", "step", "slice"),
max_depth = 151,
filename = NULL,
overwrite = FALSE
)Arguments
- x
An R spatial object (such as a SpatVector, SpatRaster, or sf object) or a SoilProfileCollection with coordinates initialized via
aqp::initSpatial<-. Default:NULLreturns the CONUS extent as virtual raster. Ifxis a SpatRaster the coordinate reference system, extent, and resolution are used as a template for the output raster.- depth_slices
character. One or more of:
"0","5","15","30","60","100","150". The "depth slice""all"(used for variables such as"anylithicdpt", and"resdept") is always included if any site-level variables are selected.- variables
character. One or more of:
"anylithicdpt","caco3","cec7","claytotal","dbovendry","ec","ecec","fragvol","gypsum","ph1to1h2o","resdept","sandco","sandfine","sandmed","sandtotal","sandvc","sandvf","sar","silttotal","soc".- output_type
character. One or more of:
"prediction","relative prediction interval","95% low prediction interval","95% high prediction interval"- grid
logical. Default
TRUEreturns a SpatRaster object for an extent.FALSEreturns a SoilProfileCollection. Any other value returns a list object with names"grid"and"spc"containing both result objects.- samples
integer. Number of regular samples to return for SoilProfileCollection output. Default
NULLwill convert all grid cells to a unique profile. Note that for a large extent, this can produce large objects with a very large number of layers (especially withmethodother than"step").- method
character. Used to determine depth interpolation method for SoilProfileCollection output. Default:
"linear". Options include anymethodallowed forapproxfun()orsplinefun()plus"step"and"slice"."step"uses the prediction depths as the top and bottom of each interval to create a piecewise continuous profile to maximum of 200 cm depth (for 150 cm upper prediction depth)."slice"returns a discontinuous profile with 1 cm thick slices at the predicted depths. Both"step"and"slice"return a number of layers equal to length ofdepth_slices, and all other methods return data in interpolated 1cm slices.- max_depth
integer. Maximum depth to interpolate 150 cm slice data to. Default:
151. Interpolation deeper than 151 cm is not possible for methods other than"step"and will result in missing values.- filename
character. Path to write output raster file. Default:
NULLwill keep result in memory (or store in temporary file if memory threshold is exceeded)- overwrite
Overwrite
filenameif it exists? Default:FALSE
Value
A SpatRaster object containing SOLUS grids for specified extent, depths, variables, and product types.
Details
If the input object x is not specified (NULL or missing), a SpatRaster object using the
virtual URLs is returned. The full extent and resolution data set can be then downloaded and
written to file using terra::writeRaster() (or any other processing step specifying an output
file name). When input object x is specified, a SpatRaster object using in memory or local
(temporary file or filename) resources is returned after downloading the data only for the
target extent. In the case where x is a SoilProfileCollection or an sf or SpatVector
object containing point geometries, the result will be a SoilProfileCollection for values
extracted at the point locations. To return both the SpatRaster and SoilProfileCollection
object output in a list, use grid = NULL.
References
Nauman, T. W., Kienast-Brown, S., Roecker, S. M., Brungard, C., White, D., Philippe, J., & Thompson, J. A. (2024). Soil landscapes of the United States (SOLUS): developing predictive soil property maps of the conterminous United States using hybrid training sets. Soil Science Society of America Journal, 88, 2046–2065. doi:10.1002/saj2.20769
Examples
if (FALSE) { # \dontrun{
b <- c(-119.747629, -119.67935, 36.912019, 36.944987)
bbox.sp <- sf::st_as_sf(wk::rct(
xmin = b[1], xmax = b[2], ymin = b[3], ymax = b[4],
crs = sf::st_crs(4326)
))
ssurgo.geom <- soilDB::SDA_spatialQuery(
bbox.sp,
what = 'mupolygon',
db = 'SSURGO',
geomIntersection = TRUE
)
# grid output
res <- fetchSOLUS(
ssurgo.geom,
depth_slices = "0",
variables = c("sandtotal", "silttotal", "claytotal", "cec7"),
output_type = "prediction"
)
terra::plot(res)
# SoilProfileCollection output, using linear interpolation for 1cm slices
# site-level variables (e.g. resdept) added to site data.frame of SPC
res <- fetchSOLUS(
ssurgo.geom,
depth_slices = c("0", "5", "15", "30", "60", "100", "150"),
variables = c("sandtotal", "silttotal", "claytotal", "cec7", "resdept"),
output_type = "prediction",
method = "linear",
grid = FALSE,
samples = 10
)
# plot, truncating each profile to the predicted restriction depth
aqp::plotSPC(trunc(res, 0, res$resdept_p), color = "claytotal_p", divide.hz = FALSE)
} # }