I’ve known about the USGS’ SSURGO database for awhile. Back when I was practicing as a civil engineer, we mostly used it to define drainage groups of soil. I did a few land development suitability analyses for some conceptual projects with it too, but nothing too intense. For my current project, I needed to use it to define the subsurface conditions of an urban hydrological model. To follow along, you’ll want to have the following software data and references available to you:
- A downloaded AOI (area of interest) dataset with both spatial and tabular data, from the Web Soil Survey (WSS). Click the big green button to define your area of interest, and download it.
- Microsoft Access and ArcGIS
- The metadata pdf for the SSURGO tables and column names (to easily search for what you are looking for). Go here and scroll down to the link for the Table Column Descriptions pdf.
Mapunits, components, and horizons
In my limited past experience with SSURGO, I worked mainly with the spatial data, whose main organizational unit of analysis is the “map unit.” These are the polygons that you typically see when you add the spatial SSURGO data into a geospatial software, like ArcGIS. Below is an example:
What I didn’t know is that there are actually “smaller” units of analysis included in SSURGO for which more information (! data ?) can be extracted. This information is organized by “component,” and subsequently by “horizon,” as in, that’s right– soil horizons! This means that there is depth-based information for some spatial unit of analysis that is smaller than a mapunit. See the illustration below for what this looks like. Horizon information goes does about 200 cm.
“Where” are the components?
From the above figure you can see the one-to-many relationship that a map unit has to its components and that each component has to its horizons. Components are not spatially explicit (ie, they are not like the above figure, where you can actually visualize their boundaries). They are only defined as percentages of the total area of their corresponding map unit. In the metadata, see page 35– the first page of column descriptions for the component table are comppct_l, comppct_rv, comppct_h. These are low, “representative value” and high estimates for the percentage this component makes up of its corresponding mapunit. So, you can’t know “where” within the mapunit a component is. You can only know an estimate of the amount of area it takes up.
Relating mapunits to components and horizons
I typically don’t work with MS Access (Microsoft’s relational database software). The most I’d previously done with it is to “activate” (import) it so that I could add the .mdb file into ArcGIS to join tabular data to my .shp file (See here for instructions on how to do this). I am far more comfortable with SQL commands in R. However, it is not straightforward to bring these .txt files in the tabular folder of the zip file you downloaded for your AOI directly into R. This is because the txt files do not come with column headers. In Microsoft Access, these headers are given through a Microsoft Access template that matches with the Table and Column labels and descriptions in the metadata. Let’s export out of the MS Access database into csv’s with column names. After you activate the .mdb, open up the .mdb file (or if you’re already in it, stay there; you can close the Soils Reports window if its still open).
There are several types of “objects” in MS Access. The default that you tend to land on after activating your .mdb is called ‘Queries’. You can see this on the lefthand panel of the screen. See below. What you actually want are ‘Table’ objects. To switch to ‘Tables’, click on the down arrow to the right of ‘Queries’ and check ‘Tables’.
You will see a list of all the txt tables that are part of the .mdb. Double click on them to view them. We are interested in the one called ‘component’ and the one called ‘chorizon’. The fastest way to get these into .csv format (at least for the file sizes that I am working with) is to export to Excel first and use Excel to save as .csv. This results in a .csv file that R can read in easily and does not get confused about the number of columns for. So follow these steps after switching the object to ‘Tables’ (should see ‘Tables’ on the left hand panel):
- Double click on ‘chorizon’
- Using the MS Access Ribbon toolbar, go to ‘External Data’
- In about the middle of the ribbon tools, click Excel (with the arrow coming out of it, for export)
- A Wizard will come up which will ask you to select the file destination and the file format. For file format, select *.xlsx
- Check ‘Export the Data with Formatting’ and ‘Open the destination file after the export operation is complete’
- When the file opens in Excel, do a Save As and choose file type *.csv (comma separated)
- Do the same thing for the ‘component’ table
- Now these are good to open in R using the command ‘read.csv’!