soilDB Demo: Processing SSURGO Attribute Data with SDA_query()
Apr 26, 2012 metroadmin
Mapping near Paloma, CA This image has nothing to do with the following content.
A quick example of how to use the USDA-NRCS soil data access query facility (SDA), via the soilDB package for R. The following code describes how to get component-level soils data for Yolo County (survey area CA113) from SDA and compute representative sub-order level classification for each map unit. This example requires an understanding of SQL, US Soil Taxonomy and the SSURGO database.
library(soilDB)library(plyr)# format queryq <- "SELECTcomponent.mukey, cokey, comppct_r, compname, taxclname, taxorder, taxsuborder, taxgrtgroup, taxsubgrpFROM legendINNER JOIN mapunit ON mapunit.lkey = legend.lkeyLEFT OUTER JOIN component ON component.mukey = mapunit.mukeyWHERE legend.areasymbol = 'CA113'"# run query, process results, and return as data.frame objectres <- SDA_query(q)# function for computing total component percentages by strata (suborder)f.sum <- function(i) {n <- nrow(i)s <- sum(i$comppct_r)return(data.frame(pct=s, n=n))}# function for picking the largest suborder from within each map unit (mukey)f.largest <- function(i) {i.sorted <- i[order(i$pct, decreasing=TRUE), ]top.suborder <- i.sorted$taxsuborder[1]top.suborder.pct <- i.sorted$pct[1]return(data.frame(suborder=top.suborder, pct=top.suborder.pct))}# tabulate percentage of suborder-level taxa within each map unit (mukey)comp.suborder.sums <- ddply(res, .(mukey, taxsuborder), f.sum, .progress='text')# keep the largest suborder, and its associated total percentagecomp.suborder <- ddply(comp.suborder.sums, .(mukey), f.largest, .progress='text')# tabulate occurance of suborders... not that this does not take into acocunt map unit polygon areatable(comp.suborder$suborder)X