Site and laboratory data from soils sampled in the central Sierra Nevada Region of California.

data(ca630)

Format

List containing:

$site : A data frame containing site information.

user_site_id

national user site id

mlra

the MLRA

county

the county

ssa

soil survey area

lon

longitude, WGS84

lat

latitude, WGS84

pedon_key

national soil profile id

user_pedon_id

local soil profile id

cntrl_depth_to_top

control section top depth (cm)

cntrl_depth_to_bot

control section bottom depth (cm)

sampled_taxon_name

soil series name

$lab : A data frame containing horizon information.

pedon_key

national soil profile id

layer_key

national horizon id

layer_sequence

horizon sequence number

hzn_top

horizon top (cm)

hzn_bot

horizon bottom (cm)

hzn_desgn

horizon name

texture_description

USDA soil texture

nh4_sum_bases

sum of bases extracted by ammonium acetate (pH 7)

ex_acid

exchangeable acidity [method ?]

CEC8.2

cation exchange capacity by sum of cations method (pH 8.2)

CEC7

cation exchange capacity by ammonium acetate (pH 7)

bs_8.2

base saturation by sum of cations method (pH 8.2)

bs_7

base saturation by ammonium acetate (pH 7)

Source

https://ncsslabdatamart.sc.egov.usda.gov/

Details

These data were extracted from the NSSL database. ca630 is a list composed of site and lab data, each stored as data.frame objects. These data are modeled by a 1:many (site:lab) relation, with the pedon_id acting as the primary key in the site table and as the foreign key in the lab table.

Note

These data are out of date. Pending some new data + documentation. Use with caution

Examples


if (FALSE) {
library(tactile)
library(lattice)
library(Hmisc)
library(sp)

# check the data out:
data(ca630)
str(ca630)

# note that pedon_key is the link between the two tables

# make a copy of the horizon data
ca <- ca630$lab

# promote to a SoilProfileCollection class object
depths(ca) <- pedon_key ~ hzn_top + hzn_bot

# add site data, based on pedon_key
site(ca) <- ca630$site

# ID data missing coordinates: '|' is a logical OR
(missing.coords.idx <- which(is.na(ca$lat) | is.na(ca$lon)))

# remove missing coordinates by safely subsetting
if(length(missing.coords.idx) > 0)
  ca <- ca[-missing.coords.idx, ]

# register spatial data
coordinates(ca) <- ~ lon + lat

# assign a coordinate reference system
proj4string(ca) <- '+proj=longlat +datum=NAD83'

# check the result
print(ca)

# aggregate %BS 7 for all profiles into 1 cm slices
a <- slab(ca, fm= ~ bs_7)

# plot median & IQR by 1 cm slice
xyplot(
top ~ p.q50, 
data = a, 
lower=a$p.q25, 
upper=a$p.q75,
alpha=0.5,
ylim=c(160,-5), 
scales = list(alternating = 1, y = list(tick.num = 7)),
panel = panel.depth_function, 
prepanel = prepanel.depth_function,
ylab='Depth (cm)', xlab='Base Saturation at pH 7',
par.settings = tactile.theme(superpose.line = list(col = 'black', lwd = 2))
)

# aggregate %BS at pH 8.2 for all profiles by MLRA, along 1 cm slices
# note that mlra is stored in @site
a <- slab(ca, mlra ~ bs_8.2)

# keep only MLRA 18 and 22
a <- subset(a, subset=mlra %in% c('18', '22'))

# plot median & IQR by 1 cm slice, using different colors for each MLRA
xyplot(
top ~ p.q50, 
groups = factor(mlra), 
data = a,
lower=a$p.q25, 
upper=a$p.q75,
alpha=0.25,
sync.colors = TRUE,
ylim=c(160,-5), 
scales = list(alternating = 1, y = list(tick.num = 7)),
panel = panel.depth_function, 
prepanel = prepanel.depth_function,
ylab='Depth (cm)', xlab='Base Saturation at pH 7',
par.settings = tactile.theme(superpose.line = list(lwd = 2)),
auto.key = list(lines = TRUE, points = FALSE, columns = 2)
)


# extract a SPDF with horizon data along a slice at 25 cm
s.25 <- slice(ca, fm=25 ~ bs_7 + CEC7 + ex_acid)
spplot(
s.25, zcol=c('bs_7','CEC7','ex_acid'), 
par.settings = tactile.theme,
layout = c(3,1)
)

# note that the ordering is preserved:
all.equal(s.25$pedon_key, profile_id(ca))

# extract a data.frame with horizon data at 10, 20, and 50 cm
s.multiple <- slice(ca, fm=c(10,20,50) ~ bs_7 + CEC7 + ex_acid)

# Extract the 2nd horizon from all profiles as SPDF
ca.2 <- ca[, 2]

# subset profiles 1 through 10
ca.1.to.10 <- ca[1:10, ]

# basic plot method: profile plot
par(mar = c(0, 0, 3, 1))
plotSPC(ca.1.to.10, name='hzn_desgn', color = 'CEC7')
}