soil profile

Automated OSD Lookup and Display via SoilWeb and AQP

Submitted by dylan on Thu, 2012-11-08 00:06.

Automated OSD lookup and displayAutomated OSD lookup and display

UPDATED 2013-04-08

This functionality it now available in the soilDB and sharpshootR packages. All code on this page is now superseded by the fetchOSD() and SoilTaxonomyDendrogram() functions.

UPDATED 2012-11-07

I have been thinking about a URL-based interface to basic Official Soil Series Description (OSD) data for a while now... something that when fed a URL, would return CSV-formatted records to the calling process. These type of interfaces can later be used to support more complicated systems, such as our smartphone interface to SoilWeb. URLs can be accessed like files in R, making it possible to do something like this:

AQP / soilDB Demo: Dueling Dendrograms

Submitted by dylan on Wed, 2012-03-14 21:55.

UPDATE 2013-04-08: This functionality is now available in the sharpshootR package.

Previously, soil profile comparison methods from the aqp package only took into account horizon-level attributes. As of last week the profile_compare() function can now accommodate horizon and site-level attributes. In other words, it is now possible to compute pair-wise dissimilarity between soil profiles using a combination of horizon-level properties (soil texture, pH, color, etc.) and site-level properties (surface slope, vegetation, soil taxonomy, etc.)-- continuous, categorical, or boolean.

An example is presented below which is based on the loafercreek sample data set included with the soilDB package. Be sure to use the latest version of soilDB, 0.5-5 or later. Dissimilarity matrices created from horizon and site+horizon data are compared by placing their respective dendrograms back-to-back. Code from the ape package is used to facilitate dendrogram plotting, manipulation, and indexing. Blue line segments connect matching nodes from each dendrogram. Soil profiles with paralithic contact are marked with orange squares for clarity.

Dueling DendrogramsDueling Dendrograms

Logistic Power Peak (LPP) Simulated Soil Profiles

Submitted by dylan on Sat, 2011-11-12 21:01.

A friend of mine recently published a very interesting article on the pedologic interpretation of asymetric peak functions fit to soil profile data (Myers et al., 2011). I won't bother summarizing or paraphrasing the article here, as the original article is very accessible, rather I thought I would share some new functionality in AQP that was inspired by the article. While reading the article I thought that it would be interesting to use one of these peak functions, the logistic power peak (LPP) function, to simulate soil property depth-functions. Simulated values could be used to evaluate new algorithms with a set of tightly controlled properties that vary with depth. One of the nice aspects of these peak functions is that they can create a wide range of shapes that mimic common anisotropic depth-functions associated with pedogenic processes such as illuviation, ferrolysis, or seasonal fluctuation of groundwater levels. An example R session demonstrating the use of LPP-simulated soil property depth-functions is presented below.

LPP-simulated ProfilesLPP-simulated Profiles

New S4 Classes and Methods added to AQP (Algorithms for Quantitative Pedology) Package

Submitted by dylan on Thu, 2011-10-20 21:52.

Thanks to some major help from Pierre Roudier, the aqp package now has some new S4-style classes and methods-- custom tailored to the complexities of soil profile data. These new classes/methods are available in the aqp development package, found on our R-Forge repository. An update to CRAN is pending. A couple of examples are presented below. Note that methods may change at any time, so consider these examples preliminary.

Soil Property Data ModelSoil Property Data Model

Combining Base+Grid Graphics

Submitted by dylan on Tue, 2011-10-04 17:48.

R provides several frameworks for composing figures. Base graphics is the simplest, grid is more advanced, and the lattice/ggplot packages provide convenient abstractions of the grid graphics system. Multi-element figures can be readily created in base graphics using either par() or layout(), with analogous functions available in grid. Mixing the two systems is a little more complicated, somewhat fragile, but entirely possible.

I recently needed to combine base+grid graphics on a single page; two sets of base graphics on the left, and the output from xyplot() (grid) on the right. Following some tips from Paul Murrell posted on r-help, the solution was fairly simple. A truncated example of the processes is listed below, corresponding to the attached figure. While the result was "good enough" for a quick summary, there are clearly some improvements that would make figure more useful.

Mehrten Soil SummaryMehrten Soil Summary

Recent Updates in the aqp (Algorithms for Quantitative Pedology) Package for R

Submitted by dylan on Thu, 2011-09-15 04:44.

New version of our 'aqp' package for quantitative soils investigations, available on CRAN (version 0.99-5) and R-Forge (0.99-8). Some of the major changes are listed below:

-------------------------- aqp 0.99-8 (2011-09-14) --------------------------
* soil.slot() will now accept boundaries defining a 'slab' over which aggregates are computed
* soil.slot.multiple() now cleanly wraps soil.slot(), accepting all arguments
  - these two changes make it possible to ask: 
    "what is the wt. mean value of some property within this slab, and among these groups?"
  - soil.slot.multiple() now uses a formula interface: NOTE that this will break existing scripts (sorry)
-------------------------- aqp 0.99-7 (2011-09-01) --------------------------
* new functions for getting data out of PedonPC (MS Access) databases [windows only for now]
  - get_site_data_from_pedon_db() : site and pedon aggregate data
  - get_hz_data_from_pedon_db() : horizon level data
  - get_colors_from_pedon_db() : formats and mixes multiple colors / horizon
  + implemented in mix_and_clean_colors()

* test_hz_logic() : basic function for testing horizon logic, returns TRUE/FALSE by ID
* parallel operations now NON-functional, while we wait for plyr to support doSMP...
* new ID plotting style for profile_plot() : handy when plotting large collections and/or long IDs

-------------------------- aqp 0.99-4 (2011-08-15) --------------------------
* code and documentation clean-up
* Soil Sata Access (SDA) query functions have been added
  - mapunit_geom_by_ll_bbox() : get map unit geometry by bounding box
  - MUKEYS_by_ll_bbox() : get map unit keys by bounding box
  - SDA_query() : retrieve soil tabular data via query written in SQL
* additional customizations added to profile_plot
* two new sample data sets + examples
( categories: )

Updates to the 'aqp' Package for R (version 0.98-3)

Submitted by dylan on Tue, 2010-11-30 22:28.

Just released an updated version of our 'aqp' package for quantitative soils investigations, available on CRAN and R-Forge. Some of the major changes are listed below:

 from the aqp NEWS file:
-------------------------- aqp 0.98-1 (2010-11-23) --------------------------
* added basic demo: demo(aqp)
* soil.slot() now computes aggregate probabilities over user-defined segments
* re-write of weighted profile aggregation functions
  - aqp package now requires Hmisc package
  - using Hmisc::wtd.{mean,var,quantile} to compute values
	+ better adjustment of weights when computing weighted SD
	+ fixes long-standing bugs with wt. mean/SD when NA present in x_i and not in wt_i
	+ weighted quantiles now computed
* addition of new (experimental) S4 classes and methods
  - these are now in the aqp_S4 branch
* added n.depth.ticks option to profile_plot()
* profile_compare() algorithm stabilized, new default settings
* removed code in profile_compare() that is now obsolete
  - note that this will cause changes to numerical classification of soil profiles

AQP Examples: Profile Visualization

Submitted by dylan on Tue, 2010-09-21 03:27.

Two examples of the output from the profile_plot() function, using data from the Sierra Foothill Region, CA.

What would a 25th, 50th, and 75th percentile soil profile look like?

Submitted by dylan on Wed, 2010-08-11 20:38.

I have mentioned the AQP package in previous entries. One of the functions in this package generates aggregate soil profile data, from a collection of soil profiles that are related by some factor: common lithology, common landscape position, and so on. Typically the mean, or median (50th percentile) is used to generate a new aggregate profile, that is representative of the original collection. Extending this idea, I thought that it would be interesting to generate aggregate profiles that are representative of the 25th and 75th percentiles as well. For the sake of clarity, lets call these three new profiles (25th, 50th, and 75th percentiles) Q25, Q50, and Q75. A 10 cm slicing interval was used as the basis upon which soil properties were aggregated.

Aggregate Profiles

( categories: )

New R Package 'aqp': Algorithms for Quantitative Pedology [updates]

Submitted by dylan on Mon, 2010-08-09 16:37.

Soils are routinely sampled and characterized according to genetic horizons (layers), resulting in data that are associated with principal dimensions: location (x,y), depth (z), and property space (p). The high dimensionality and grouped nature of this type of data can complicate standard analysis, summarization, and visualization. The aqp package was developed to address some of these issues, as well as provide a useful framework for the advancement of quantitative studies in soil genesis, geography, and classification.