[Soiltexture-commits] r89 - in pkg/soiltexture: . vignettes

noreply at r-forge.r-project.org noreply at r-forge.r-project.org
Thu Jan 9 11:08:31 CET 2014


Author: jmoeys
Date: 2014-01-09 11:08:31 +0100 (Thu, 09 Jan 2014)
New Revision: 89

Added:
   pkg/soiltexture/vignettes/
   pkg/soiltexture/vignettes/soiltexture_vignette.Rnw
   pkg/soiltexture/vignettes/soiltexture_vignette.bib
Log:


Added: pkg/soiltexture/vignettes/soiltexture_vignette.Rnw
===================================================================
--- pkg/soiltexture/vignettes/soiltexture_vignette.Rnw	                        (rev 0)
+++ pkg/soiltexture/vignettes/soiltexture_vignette.Rnw	2014-01-09 10:08:31 UTC (rev 89)
@@ -0,0 +1,3654 @@
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% | Document header                                             |
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+
+\documentclass[a4paper]{article}
+
+\title{The soil texture wizard:\\R functions for plotting, 
+    classifying, transforming and exploring soil texture data} 
+
+\author{Julien Moeys}
+% In case of changes, also change the 'PDF setup' and 
+% 'cited as follow'
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% | Nodifications of the Sweave style                           |
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+
+% Load Sweave and color, in order to modify 
+% sweave's environments:
+
+\RequirePackage{Sweave} % ,sweave,color,placeins,rotating,subfig
+%\usepackage{underscore}
+\SweaveOpts{width=14,height=14,keep.source=TRUE} 
+% Also modified in the document
+
+% \VignetteIndexEntry{The soil texture wizard: a tutorial}
+% \VignetteDepends{soiltexture}
+% \VignetteDepends{xtable}
+% \VignetteKeyword{soil} 
+% \VignetteKeyword{texture} 
+% \VignetteKeyword{plot} 
+% \VignetteKeyword{classification} 
+% \VignetteKeyword{transformation} 
+
+% Define new colors used in the document:
+% \definecolor{BrickRed}{rgb}{0.502,0.000,0.000}
+% \definecolor{MidnightBlue}{rgb}{0.000,0.000,0.502} 
+% NB: no space after the colors
+
+% Modify the definition of the 'Sinput' environment:
+\RecustomVerbatimEnvironment{Sinput}{Verbatim}{%
+%     formatcom   = \color{red},      % new text color
+    frame       = leftline,         % vert line on the left
+    framerule   = 0.50mm            % width of the vert line
+}   %
+
+% Modify the definition of the 'Scode' environment:
+\RecustomVerbatimEnvironment{Scode}{Verbatim}{%
+%     formatcom   = \color{red},      % new text color
+    frame       = leftline,         % vert line on the left
+    framerule   = 0.50mm            % width of the vert line
+}   %
+
+% % Modify the definition of the 'Soutput' environment:
+% \RecustomVerbatimEnvironment{Soutput}{Verbatim}{%
+%     formatcom = \color{blue}        % new text color
+% }   %
+
+% Modify the spacing between R code and R outputs:
+\fvset{listparameters={\setlength{\topsep}{0pt}}} 
+\renewenvironment{Schunk}{\vspace{\topsep}}{\vspace{\topsep}} 
+
+\renewcommand\floatpagefraction{1.0}
+\renewcommand\topfraction{1.0}
+\renewcommand\bottomfraction{1.0}
+\renewcommand\textfraction{0.0}   
+\setcounter{topnumber}{4}
+\setcounter{bottomnumber}{4}
+\setcounter{totalnumber}{12}
+
+
+
+%%% PDF setup -- fill in the title
+% \usepackage[dvipdfm, bookmarks, colorlinks, breaklinks, %
+%     pdftitle={The soil texture wizard:R functions for plotting, classifying, transforming and exploring soil texture data},%
+%     pdfauthor={Julien MOEYS}]{hyperref}  
+% \hypersetup{linkcolor=MidnightBlue, citecolor=MidnightBlue, 
+%     filecolor=MidnightBlue,urlcolor=MidnightBlue} 
+% From: http://malecki.wustl.edu/sweaveTemplate.Rnw
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% | Beginning of the real document                              |
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+
+% Don't forget to add this to path:
+% C:\Program Files\_SCIENCE\R_PROJECT\share\texmf
+
+\usepackage{Sweave}
+\begin{document}
+\bibliographystyle{plain}
+
+
+% \graphicspath{{INOUT/}} 
+
+
+%INVISIBLY sets a few options for Sweave :: KEEP THIS
+<<echo=FALSE>>= 
+# Set a few Sweave options:
+options( 
+    width       = 65,  # width of R output
+    prompt      = " ", # Sign preceding R input in R-GUI
+    continue    = " "  # same, but after 2nd line
+)   # 
+
+# The working directory:
+# setwd("C:/_RTOOLS/SWEAVE_WORK/SOIL_TEXTURES/rforge/pkg/soiltexture/inst/doc/INOUT") 
+
+# And load the xtable package:
+if( !"xtable" %in% .packages(all.available = TRUE) )
+{   #
+    message( paste( sep = "", 
+        "The xtable package is not present in your R install:\n", 
+        "R will now try to connect to one package server\n", 
+        "and propose you a list of package to download\n", 
+        "and install: Choose 'xtable' from the list"
+    )   )   #
+    utils:::menuInstallPkgs() 
+}   #
+require( "xtable" ) 
+@ 
+
+% \SweaveOpts{width=14,height=14,keep.source=TRUE}
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% | Front page TITLE 
+\maketitle
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% | Edit here                  |
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+
+
+
+<<echo=FALSE,results=hide,quiet=TRUE>>= 
+old.wd  <- getwd() 
+
+# setwd("C:/_RTOOLS/SWEAVE_WORK/SOIL_TEXTURES/rforge/pkg/soiltexture/inst/doc/INOUT") 
+
+if( !("soiltexture" %in%  as.character( installed.packages()[,1] )) ) 
+{   #
+    suppressMessages( 
+        install.packages( 
+            pkgs  = "soiltexture"  
+            # repos = "http://R-Forge.R-project.org" 
+        )   #
+    )   #
+}   #
+
+require( 
+    package        = "soiltexture", 
+    character.only = TRUE, 
+    quietly        = TRUE 
+)   #
+
+# setwd(old.wd) 
+@ 
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% | Front page image:
+
+<<COVERFIG,include=false,echo=FALSE,fig=TRUE>>= 
+TT.plot(class.p.bg.col=T,class.sys="USDA.TT",main=NA)
+@ 
+
+\begin{figure}[b]
+\centering
+\includegraphics{soiltexture_vignette-COVERFIG}
+\end{figure}
+
+\clearpage 
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% | Table of Content:
+\tableofcontents 
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\section{About this document} 
+
+
+
+\subsection{Why creating 'The soil texture wizard'?} 
+
+\textbf{Officially}: \textit{The Soil Texture Wizard} R functions 
+are an attempt to provide a generic toolbox for soil texture data 
+in R. These functions can (1) plot soil texture data (2) classify 
+soil texture data, (3) transform soil texture data from and to 
+different systems of particle size classes, and (4) provide some 
+tools to 'explore' soil texture data (in the sense of a 
+statistical visual analysis). All there tools are designed to be 
+inherently multi-triangles, multi-geometry and multi-particle 
+sizes classification\\
+
+\textbf{Officiously}: What was initially a slight reshape of R 
+PLOTRIX package (by J. Lemon and B. Bolker), for my personal use%
+\footnote{It was also an excellent way to learn R.}, 
+to add the French 'Aisne' soil texture triangle, gradually 
+skidded and ended up in a totally reshaped and extended code 
+(over a 3 year period). There is unfortunately no compatibility 
+at all between the two codes.\\
+
+
+
+\subsection{About R} 
+
+
+This document is about functions (and package project) written in 
+R "language and environment for statistical computing" (\texttt{http://www.R-project.org}) 
+(\cite{RDCT2009}), and has been generated with 
+\Sexpr{R.Version()$version.string}.\\
+
+R website: <\texttt{http://www.R-project.org}>\\
+
+If you don't know about R, it is never too later to start...\\
+
+
+
+\subsection{About the author} 
+
+I am an agriculture engineer, soil scientist and R programmer. 
+See my website for more details (\texttt{http://julienmoeys.free.fr/}).\\
+
+The R functions presented in this document may not always conform 
+to the 'best R programming practices', they are nevertheless 
+programmed carefully, well checked, and should work efficiently 
+for most uses.\\
+
+At this stage of development, some bugs should still be expected. 
+The code has been written in 3 years, and tested quite extensively 
+since then, but it has never been used by other people. If you 
+find some bugs, please contact me at: \texttt{jules\_78-soiltexture at AT@yahoo.fr}.
+
+
+% \begin{figure}[h] 
+% \centering 
+% \includegraphics[width=108px,viewport=0 0 382 25]{% 
+%     julienmoeysmailaddress-382-25.png} 
+% \end{figure} 
+
+
+
+\subsection{Credits and License} 
+
+This document, as well as this \textbf{document} source code 
+(written in Sweave \footnote{\texttt{http://en.wikipedia.org/wiki/Sweave}}, 
+R \footnote{\texttt{http://www.r-project.org}} and 
+\LaTeX \footnote{\texttt{http://en.wikipedia.org/wiki/LaTeX}}) are 
+licensed under a \textbf{Creative 
+Commons By-SA 3.0 unported \footnote{\texttt{http://creativecommons.org/licenses/by-sa/3.0/}}}.
+
+
+% \begin{figure}[h] 
+% \centering 
+% \includegraphics[width=88px,viewport=0 0 88 31]{% 
+%     CC-By-SA-nonported-88x31.PNG} 
+% \end{figure} 
+
+
+In short, this means (\textit{extract from the abovementioned url at 
+creativecommons.org}):
+
+\begin{itemize} 
+    \item You are free to:
+    \begin{itemize} 
+        \item \textbf{to Share} - to copy, distribute and 
+        transmit the work;
+        \item \textbf{to Remix} - to adapt the work.
+    \end{itemize} 
+    \item Under the following conditions:
+    \begin{itemize} 
+        \item \textbf{Attribution} - You must attribute the work 
+        in the manner specified by the author or licensor (but 
+        not in any way that suggests that they endorse you or 
+        your use of the work);
+        \item \textbf{Share Alike} - If you alter, transform, or 
+        build upon this work, you may distribute the resulting 
+        work only under the same, similar or a compatible 
+        license.
+    \end{itemize} 
+\end{itemize} 
+
+'The soil texture wizard' R \textbf{functions} are licensed under 
+a Affero GNU General Public License Version 3 (\texttt{http://www.gnu.org/licenses/agpl.html}).\\
+
+Given the fact that a lot of the work presented here has been done 
+on my free time, and given its highly permissive license, \textbf{% 
+this document is provided with NO responsibilities, guarantees or 
+supports from the author or his employer} (Swedish University of 
+Agricultural Sciences).\\
+
+Please notice that the R software itself is licensed under a GNU 
+General Public License Version 2, June 1991.\\
+
+This tutorial has been created with the (great) \textbf{Sweave} 
+tool, from Friedrich Leisch (\cite{SWEAVE2002}). Sweave allows the 
+smooth integration of R code and R output (including figures) in 
+a \LaTeX document.
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\section{Introduction: About soil texture, texture triangles 
+    and texture classifications} 
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{What are soil granulometry and soil texture(s)?} 
+
+\textbf{Soil granulometry} is the repartition of soil solid 
+particles between (a range of) particle sizes. As the range of 
+particle sizes is in fact continuous, they have been subdivided 
+into different \textbf{particle size classes}.\\
+
+The most common subdivision of soil granulometry into classes is 
+the \textbf{fine earth}, for particles ranging from \textbf{0 to 
+2mm (2000$\mu$m)}, and \textbf{coarse particles}, for 
+particles bigger than \textbf{2mm}. Only the fine earth interests 
+us in this document, although the study of soil granulometry can 
+be extended to the coarse fraction (for stony soils).\\
+
+\textbf{Fine earth} is generally (but not always; see below) divided 
+into \textbf{3 particle size classes: clay (fine particles), silt 
+(medium size particles) and sand (coarser particles in the fine 
+earth)}. All soil scientists use the range \textbf{0-2$\mu$m} for 
+\textbf{clay}. So silt lower limit is also always 
+\textbf{2$\mu$m}. But the convention for \textbf{silt / sand} 
+particle size limit \textbf{varies from country to country}. 
+\textbf{Silt} particle size range can be \textbf{2-20$\mu$m} 
+(Atterberg system\cite{MINASNY2001AJSR}\cite{RICHER2008INRA}; 
+'International system'; ISSS\footnote{ISSS: International Society 
+of Soil Science. Now  IUSS (\texttt{www.iuss.org}), International 
+Union of Soil Science}\label{ISSSSIZE}. The ISSS particle size 
+system should not be confused with the ISSS texture triangle (See 
+\ref{ISSSTRIANGLE}, p. \pageref{ISSSTRIANGLE}); Australia\footnote{%%%
+Strangely, only a 
+small number of countries have adopted the so called 
+'international system'}\cite{MINASNY2001AJSR}; Japan% 
+\cite{RICHER2008INRA}), \textbf{2-50$\mu$m} (FAO\footnote{% 
+Food and Agriculture Organization of the United Nations 
+(\texttt{www.fao.org})}; USA; France\cite{MINASNY2001AJSR}% 
+\cite{RICHER2008EGS}), \textbf{2-60$\mu$m} 
+(UK and Sweden\cite{RICHER2008INRA}) or \textbf{2-63$\mu$m} 
+(Germany, Austria, Denmark and The Netherlands% 
+\cite{RICHER2008INRA}). Logically, \textbf{sand} particle size 
+range also varies accordingly to these systems: 
+\textbf{20-2000$\mu$m}, \textbf{50-2000$\mu$m}, 
+\textbf{60-2000$\mu$meters} or \textbf{63-2000$\mu$meters}.\\
+
+\textbf{Silt} class is sometimes divided into \textbf{fine silts} 
+and \textbf{coarse silts}, and \textbf{sand} class is sometimes 
+divided into \textbf{fine sand} and \textbf{coarse sand}, but in 
+this document / package, we only focus on clay / silt / sand 
+classes.\\ 
+
+Below is a scheme representing the different particle size 
+classes used in France (with Cl for Clay, FiSi for Fine Silt, 
+CoSi for Coarse Silt, FiSa for Fine Sand, CoSa for Coarse Sand, 
+Gr for Gravels and St for Stones). The figure is adapted 
+from Moeys 2007\cite{MOEYS2007}, and based on information from 
+Baize \& Jabiol 1995\cite{BAIZE1995}. The particle size axis 
+(abscissa) is log-scale:
+
+
+\SweaveOpts{width=14,height=4,keep.source=TRUE}
+<<echo=FALSE,fig=TRUE,include=TRUE>>= 
+bornes <- c(0,2,20,50,200,2e3,20e3)
+noms   <- c("Cl","FiSi","CoSi","FiSa","CoSa","Gr","St")
+txt.b  <- expression( 0*mu*m, 2*mu*m, 20*mu*m, 50*mu*m, 200*mu*m, 2*'mm', 2*'cm')
+
+tmp <- data.frame(bornes,noms) # ,txt.b
+#tmp$"txt.b" <- as.character(tmp$"txt.b")
+
+par(  "mar"=c(4,1,1,1)+0.1  )  #  c(bottom, left, top, right)
+
+plot( 
+	x		= tmp$"bornes"[-1],  
+	y		= rep(1,dim(tmp[-1,])[1]),  
+	type	= "n",  
+	main	= "",  
+	xlab	= "Soil particule sizes",  
+	ylab	= "",  
+	yaxt	= "n",  xaxt = "n",  
+	log		= "x",  
+	xlim	= c(0.2,75e3), 
+	bty		= "n", 
+	cex.lab = 2  
+)	#
+
+abline(v=tmp$"bornes",lty=3,lwd=c(2,4,2,4,2,4,2))
+abline(h=par("usr")[3:4],lty=1,lwd=4)
+
+mtext( 
+    text    = txt.b[-1], 
+    side    = 1, 
+    line    = rep( 
+        c(0.5,1.25), 
+        (dim(tmp)[1]-1)/2
+    ),  #
+    at  = tmp$"bornes"[-1], 
+    cex = 2  
+)   #
+
+xtxt <- (tmp$"bornes"[1:(length(tmp$"bornes"))]+c(tmp$"bornes"[2:length(tmp$"bornes")],75e3))/2
+
+text(x=xtxt,y=rep(1,length(xtxt)),labels=tmp$"noms",cex=2) 
+@ 
+\SweaveOpts{width=14,height=14,keep.source=TRUE}
+
+
+Soil particles -- and each soil particle size class -- occupy a 
+given volume in the soil, and have a given mass. They are 
+nevertheless generally not expressed as 'absolute' volumetric 
+quantities\footnote{for instance kilograms of clay per liters of 
+soil', or 'liters of clay per liter of soil'}. They are expressed 
+as \textbf{'relative abundance'}, that is \textbf{kilograms of 
+particles of a given class per kilograms of fine earth}. These 
+measurements are also always made on dehydrated soil samples 
+(dried slightly above $100^{\circ}\mathrm{C}$), in order to be 
+independent from soil water content (which varies a lot in time 
+and space).\\
+
+\textbf{Soil texture} is defined as the relative abundance of the 
+3 particle size classes: clay, silt and sand\footnote{But some 
+systems define for than 3 particle size classes for soil texture}.\\
+
+\textit{In summary}, important information to know when talking 
+about soil texture (and using these functions):
+
+\begin{itemize}
+    \item Soil's fine earth is generally (but not always) divided 
+        into 3 soil texture classes: 
+    \begin{itemize} 
+        \item Clay; 
+        \item Silt; 
+        \item Sand.
+    \end{itemize} 
+    \item The silt / sand limit varies: 
+    \begin{itemize} 
+        \item 20$\mu$m; or 
+        \item 50$\mu$m; or 
+        \item 60$\mu$m; or 
+        \item 63$\mu$m.
+    \end{itemize} 
+    \item Soil texture measurement do have a specific unit and a 
+        corresponding 'sum of the 3 texture classes', that is 
+        constant:
+    \begin{itemize} 
+        \item in \% or $g.100g^{-1}$ (sum: 100); or 
+        \item in fraction $[-]$ or $kg.kg^{-1}$ (sum: 1); or 
+        \item in $g.kg^{-1}$ (sum: 1000); 
+    \end{itemize} 
+\end{itemize}
+
+
+\textbf{More than 3 particle size classes?}\\
+
+Some country have a particle size classes system that differ from 
+the common 'clay silt sand' triplet. Sweden is using a system 
+with 4 particle size classes: Ler [0-2$\mu$m], Mj\"ala [2-20$\mu$m], 
+Mo [20-200$\mu$m] and Sand [200-2000$\mu$m] (See table 1 p.9 in 
+Lidberg 2009\cite{LIDBERG2009}). 
+Ler corresponds to clay. When considering the International or 
+Australian particle size system (silt-sand limit 20$\mu$m), Mj\"ala 
+is silt, and 'Mo + Sand' is sand. When considering other systems 
+with a silt-sand limit at 50$\mu$m, 60$\mu$m or 63$\mu$m, Mj\"ala 
+is ~fine-silt, Mo is ~'coarse-silt + fine sand', and Sand is 
+~coarse-sand.\\
+
+'The Soil Texture Wizard' has been made for systems with 3 
+particle size classes (clay, silt and sand), \textbf{because soil 
+texture triangles have 3 sides, and thus can only represent 
+texture data that are divided into 3 particle size classes}. 
+There are methods to estimate 3 particle size classes when more 
+classes are presented in the data (although the best is to 
+measure texture so it also can fit a system with 3 particle size 
+classes system).
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{What are soil texture triangle and classes} 
+
+Soil texture triangles are also called \textbf{soil texture 
+diagrams}.\\
+
+Soil texture can be plotted on a \textbf{ternary plot} (also 
+called triangle plot). In a ternary plot, 3D coordinates, which 
+sum is constant, are projected in the 2D space, using simple 
+trigonometry rules. The texture of a soil sample can be plotted 
+inside a texture triangle, as shown in the example below for 
+the texture 45\% clay, 38\% silt and 17\% sand:
+
+
+<<echo=FALSE,fig=TRUE,include=TRUE>>= 
+TT.plot( 
+    class.sys   = "none", 
+    tri.data    = data.frame( 
+        "CLAY"  = 45, 
+        "SILT"  = 38, 
+        "SAND"  = 17 
+    ),  #
+    main        = NA  
+)   #
+@ 
+
+
+When mapping soil, field pedologists usually estimate texture by 
+manipulating a moist (but not saturated) soil sample in their 
+hand. Depending on the relative importance of clay silt and sand, 
+the mechanical properties of the soil (plasticity, stickyness, 
+roughness) varies. Pedologists have 'classified' clay silt and 
+sand relative abundance as a function of what they could feel in 
+the field: they have divided the 'soil texture space' into 
+classes.\\
+
+\textbf{Soil particle size classes (clay, silt and sand)} should 
+not be confused with \textbf{soil texture classes}. While the 
+first are ranges of particle sizes, the latter are defined by a 
+'range of clay, silt and sand' (see the graph below). Soil 
+texture should not be confused with the concept of \textbf{soil 
+structure}, that concerns the way these particles are arranged 
+together (or not) into peds, clods and aggregates (etc.) of 
+different size and shape\footnote{In the same way bricks and 
+cement (the texture) can be arranged into a house (the structure)}. 
+This document does not deal with soil structure.\\
+
+Soil texture classes are convenient to represent soil texture 
+on soil maps\footnote{It is more easy to represent 1 variable, 
+soil texture class, than 3 variables: clay silt and sand}, and 
+there use is quite broad (soil description, soil classification, 
+pedogenesis, soil functional properties, pedotransfer functions, 
+etc.). One of these texture classification systems is the FAO 
+system. Here is the representation of the same point as in the 
+graph above, but with the FAO soil classification system on the 
+background.
+
+<<echo=FALSE,fig=TRUE,include=TRUE>>= 
+TT.plot( 
+    class.sys   = "FAO50.TT", 
+    tri.data    = data.frame( 
+        "CLAY"  = 45, 
+        "SILT"  = 38, 
+        "SAND"  = 17 
+    ),  #
+    main        = NA  
+)   #
+@ 
+
+The soil texture class symbols are:
+
+<<echo=FALSE>>= 
+library( "xtable" ) 
+@ 
+
+<<echo=FALSE,results=tex>>= 
+tex.tbl <- TT.classes.tbl( class.sys = "FAO50.TT" ) 
+xtable( 
+    x       = tex.tbl[,-3],  #
+    caption = "Texture classes of the FAO system / triangle", 
+    label   = NULL  
+)   #
+@ 
+
+The main characteristics of the graph (texture triangle) are:
+
+\begin{itemize}
+    \item 3 Axis, graduated from 0 to 100\%, each of them 
+    carrying 1 particle size class.
+    \begin{itemize} 
+        \item Sand on the bottom axis; 
+        \item Clay on the left axis; 
+        \item Silt on the right axix.
+    \end{itemize} 
+    \item It is possible to permute clay, silt and sand axis, but 
+    this choice depend on the particle size classification used.
+    \item Inside the triangle, the lines of equi-values for a 
+    given axis/particle size class are ALWAYS parallel to the 
+    (other) axis that intersect the axis of interest at 'zero' 
+    (minimum value).
+    \item The 3 axis intersect each other in 3 submits, that are 
+    characterized by an \textbf{angle}. In the example above, all 
+    3 angles are 60 degrees. But other angles are possible, 
+    depending on the soil texture classification used. It is for 
+    instance possible to have a 90 degrees angle on the left, and 
+    45 degrees angles on the top and on the right (right-angled 
+    triangle).
+    \item The 3 axis have a \textbf{direction} of increasing 
+    texture abundance. This direction is often referred as 
+    'clock' or 'anticlock', but they can also be directed 'inside'
+    the triangle in some cases. In the example 
+    above, all the axis are clockwise: texture increase when 
+    rotating in the opposite direction as a clock.
+    \item \textbf{Labeled ticks} are placed at regular intervals 
+    (10\%) on     the texture triangle axes, apart if the axis is 
+    directed inside the triangle. Ticks can be placed at irregular 
+    intervals if they are placed at each value taken by the 
+    texture class polygons vertices (This is a smart 
+    representation, unfortunately not implemented here).
+    \item An \textbf{broken arrow} is drawn 'parallel' to each 
+    axis. The first part indicate the direction of increasing 
+    value, and the second, broken, part indicates the direction of 
+    the equi-value for that axis/texture class.
+    \item The \textbf{axis labels} indicates the texture class 
+    concerned, and should ideally remind the particle size limits, 
+    because these limits are of crucial importance when (re)using 
+    soil texture data (Silt and Sand does not exactly mean the 
+    same particle size limits everywhere).
+    \item \textbf{Soil texture class boundaries} are drawn inside 
+    the triangle. They are 2D representation of 3D limits. They 
+    are generally \textbf{labeled} with soil texture class 
+    abbreviations (or full names).
+    \item Inside the triangle frame, a grid can be represented, 
+    for each ticks and ticks label drawn outside the triangle.
+\end{itemize}
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\section{Installing the package} 
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{Installing the package from r-forge} 
+
+
+The Soil Texture Wizard is now available on CRAN 
+\footnote{\texttt{http://cran.r-project.org/package=soiltexture}} 
+and r-forge \footnote{\texttt{http://r-forge.r-project.org/}}, under 
+the project name "soiltexture". The package can be installed from 
+CRAN with the following commands:
+
+
+<<echo=TRUE,eval=FALSE>>= 
+install.packages( pkgs = "soiltexture" ) 
+@ 
+
+
+And \textbf{if you have the latest R version} installed, and want 
+the latest development version of the package, from r-forge, type 
+the following commands:
+
+
+<<echo=TRUE,eval=FALSE>>= 
+install.packages( 
+    pkgs  = "soiltexture", 
+    repos = "http://R-Forge.R-project.org" 
+)   #
+@ 
+
+
+It can then be loaded with the following command:
+
+
+<<echo=TRUE>>= 
+require( soiltexture ) 
+@ 
+
+
+If you get bored of the package, you can unload it and uninstall 
+it with the following commands:
+
+
+<<echo=TRUE,eval=FALSE>>= 
+detach( package:soiltexture ) 
+remove.packages( "soiltexture" ) 
+@ 
+
+
+If you don't have the latest R version, please try to install the 
+package from the binaries. In the next section, an example is given 
+for R under MS Windows systems (Zip binaries).
+
+
+
+% % +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% \subsection{Installing the package from Windows binaries (.zip)} 
+
+
+% To install and load the package directly from 
+% \href{"http://r-forge.r-project.org/bin/windows/contrib/2.10/soiltexture_1.0.zip"}%%%
+% {r-forge zip binaries}, 
+% you can type the following command:
+
+
+% <<echo=TRUE,eval=FALSE>>= 
+% download.file( 
+%     url = 
+% "http://r-forge.r-project.org/bin/windows/contrib/2.10/soiltexture_1.0.zip", 
+%     destfile = file.path( getwd(), "soiltexture_1.0.zip" ) 
+% )   #
+% #
+% install.packages( 
+%     pkgs  = file.path( getwd(), "soiltexture_1.0.zip" ), 
+%     repos = NULL 
+% )   #
+% #
+% file.remove( "soiltexture_1.0.zip" ) 
+% @ 
+
+
+% \textbf{Where 2.10 should be replaced by the latest stable R 
+% version and 1.0 by the latest package version on r-forge}. 
+
+
+
+% % +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% \subsection{Load the latest package sources} 
+
+
+% If all the options above failed to intall the soiltexture package, 
+% you can still load the 
+% \href{http://r-forge.r-project.org/plugins/scmsvn/viewcvs.php/*checkout*/pkg/soiltexture/R/soiltexture.r?root=soiltexture}%%%
+% {latest package sources} in R by using the 
+% following command:
+
+
+% <<echo=TRUE,eval=FALSE>>= 
+% source( 
+%     paste( 
+%         sep = "", 
+%         "http://r-forge.r-project.org/scm/viewvc.php/*checkout*", 
+%         "/pkg/soiltexture/R/soiltexture.R?&root=soiltexture"
+%     )   #
+% )   #
+% @ 
+
+
+% The examples shown in this vignette are ran with these sources.
+
+
+
+% % +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+% \subsection{Set the work directory} 
+
+
+% Here is the working directory we are using in this package vignette 
+% (choose the one you like...):
+
+% <<echo=TRUE>>= 
+% # setwd("C:/_RTOOLS/SWEAVE_WORK/SOIL_TEXTURES/rforge/pkg/soiltexture/inst/doc/INOUT") 
+% @ 
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\section{Plotting soil texture triangles and classification 
+    systems} 
+
+The package comes with 8 predefined soil texture triangles. Empty %%% THINGS TO CHECK HERE: NB TRIANGLES
+(i.e. without soil textures data) soil texture triangles can be 
+plotted, in order to obtain smart representation of the soil 
+texture classification. Of course, it is also possible to plot 
+'classification free' texture triangles.
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{An empty soil texture triangle} 
+
+Below is the code to display an empty triangle (without 
+classification and without data):
+
+
+<<echo=TRUE,fig=TRUE,include=TRUE>>= 
+TT.plot( class.sys = "none" ) 
+@ 
+
+
+The option \texttt{class.sys} (characters) determines the soil 
+texture classification system used. If set to \texttt{'none'}, 
+an empty soil texture triangle is plotted.\\
+
+Without further options, the plotted default soil texture 
+triangle has the same geometry as the FAO, USDA or French 'Aisne' 
+soil texture triangles (i.e. all axis are clockwise, all angles 
+are 60 degrees, sand is on the bottom axe, clay on the left and 
+silt on the right).\\
+
+The default unit is always percentage (0 to 100\%). It is also 
+equivalent to $g.100g^{-1}$.
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{The USDA soil texture classification} 
+
+To display a USDA texture triangle, type:
+
+
+<<echo=TRUE,fig=TRUE,include=TRUE>>= 
+TT.plot( class.sys = "USDA.TT" ) 
+@ 
+
+
+When the option \texttt{class.sys} is set to \texttt{"USDA.TT"}, 
+a soil texture triangle with USDA classification system is used.\\
+
+The USDA soil texture triangle has been built considering a 
+silt - sand limit of 
+\Sexpr{TT.get("USDA.TT")[["base.css.ps.lim"]][3]}$\mu$meters.\\ 
+
+See the table for soil texture classes symbols.\\
+
+
+<<echo=FALSE,results=tex>>= 
+tex.tbl <- TT.classes.tbl( class.sys = "USDA.TT" ) 
+xtable( 
+    x       = tex.tbl[,-3],  #
+    caption = "Texture classes of the USDA system / triangle", 
+    label   = NULL  
+)   #
+@ 
+
+
+The reference used to digitize this triangle is the Soil Survey 
+Manual (Soil Survey Staff 1993\cite{USDA1993}).
+
+\clearpage % otherwise the table may 'eats' next triangle
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{The FAO soil texture classification (also known as 
+    'European Soil map', or 'HYPRES')} 
+
+To display a FAO / HYPRES texture triangle, type:
+
+
+<<echo=TRUE,fig=TRUE,include=TRUE>>= 
+TT.plot( class.sys = "FAO50.TT" ) 
+@ 
+
+
+De Forges et al. 2008\cite{RICHER2008EGS} pointed out the fact 
+that the silt-sand particle size limit that is officially related 
+to the FAO soil texture triangle has changed over time, 50$\mu$m, 
+then 63$\mu$m, and then again 50$\mu$m for some projects. 
+We here consider that the FAO / EU Soil map / HYPRES soil texture 
+triangle has a silt - sand limit of 
+\Sexpr{TT.get("FAO50.TT")[["base.css.ps.lim"]][3]}$\mu$m. As this 
+choice is somehow arbitrary, we have named the 'FAO' option 
+\texttt{"FAO50.TT"} in order to avoid any confusion. It will be 
+explained later in the document how it is possible to add a custom 
+texture triangle to the existing list, that could for instance be 
+used to configure an FAO texture triangle with another silt - 
+sand limit.\\ 
+
+See the table for soil texture classes symbols.\\
+
+
+<<echo=FALSE,results=tex>>= 
+tex.tbl <- TT.classes.tbl( class.sys = "FAO50.TT" ) 
+xtable( 
+    x       = tex.tbl[,-3],  #
+    caption = "Texture classes of the FAO system / triangle", 
+    label   = NULL  
+)   #
+@ 
+
+
+The references used to digitize this triangle is the texture 
+triangle provided by the HYPRES project web site 
+(\cite{HYPRES2009}). The The Canadian Soil Information System 
+(CanSIS) also provides some details on this triangle 
+(\cite{CANSIS2009}).
+
+\clearpage % otherwise the table may 'eats' next triangle
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{The French 'Aisne' soil texture classification} 
+
+To display a French 'Aisne' texture triangle, type:
+
+
+<<echo=TRUE,fig=TRUE,include=TRUE>>= 
+TT.plot( class.sys = "FR.AISNE.TT" ) 
+@ 
+
+
+The French Aisne soil texture triangle has been built 
+considering a silt - sand limit of 
+\Sexpr{TT.get("FR.AISNE.TT")[["base.css.ps.lim"]][3]}$\mu$meters.\\ 
+
+See the table for soil texture classes symbols\footnote{In 
+classes 14 and 15, 'leger' should be replaced by 'l\'eger'. R (and 
+Sweave) can not display french accents easily, and I found no easy 
+trics for displaying them.}.\\
+
+
+<<echo=FALSE,results=tex>>= 
+tex.tbl <- TT.classes.tbl( class.sys = "FR.AISNE.TT" ) 
+xtable( 
+    x       = tex.tbl[,-3],  #
+    caption = "Texture classes of the French 'Aisne' system / triangle", 
+    label   = NULL  
+)   #
+@ 
+
+The references used for digising this triangle is Baize and 
+Jabiol 1995\cite{BAIZE1995} and Jamagne 1967\cite{JAMAGNE1967}. 
+This triangle may be referred as the 'Triangle des textures de la 
+Chambre d'Agriculture de l'Aisne' (en: texture triangle of the 
+Aisne extension service).
+
+\clearpage % otherwise the table may 'eats' next triangle
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{The French 'GEPPA' soil texture classification} 
+
+To display a French 'GEPPA' texture triangle, type:
+
+
+<<echo=TRUE,fig=TRUE,include=TRUE>>= 
+TT.plot( class.sys = "FR.GEPPA.TT" ) 
+@ 
+
+
+The French GEPPA soil texture triangle has been built 
+considering a silt - sand limit of 
+\Sexpr{TT.get("FR.GEPPA.TT")[["base.css.ps.lim"]][3]}$\mu$meters.\\ 
+
+See the table for soil texture classes symbols.\\
+
+
+<<echo=FALSE,results=tex>>= 
+tex.tbl <- TT.classes.tbl( class.sys = "FR.GEPPA.TT" ) 
+xtable( 
+    x       = tex.tbl[,-3],  #
+    caption = "Texture classes of the French 'GEPPA' system / triangle", 
+    label   = NULL  
+)   #
+@ 
+
+
+This triangle has been digitized after 
+\texttt{sols-de-bretagne.fr} 2009\cite{SOLBRETAGNE2009}. The 
+website refers to an illustration from Baize and Jabiol 1995%
+\cite{BAIZE1995}. 'GEPPA' means 'Groupe d'Etude pour les 
+Probl\`emes de P\'edologie Appliqu\'ee' (en: Group for the study of 
+applied pedology problems / questions).
+
+\clearpage % otherwise the table may 'eats' next triangle
+
+
+
+% +~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
+\subsection{The German Bodenartendiagramm (B.K. 1994) soil 
+    texture classification} 
+
+To display a German Bodenartendiagramm (BK 1994) texture triangle, 
+type:
+
+
+<<echo=TRUE,fig=TRUE,include=TRUE>>= 
+TT.plot( class.sys = "DE.BK94.TT" ) 
+@ 
+
+
+The German Bodenartendiagramm (BK 1994) soil texture triangle has 
+been built considering a silt - sand limit of 
+\Sexpr{TT.get("DE.BK94.TT")[["base.css.ps.lim"]][3]}$\mu$meters.\\ 
+
+See the table for soil texture classes symbols.\\
+
+
+<<echo=FALSE,results=tex>>= 
+tex.tbl <- TT.classes.tbl( class.sys = "DE.BK94.TT" ) 
+xtable( 
+    x       = tex.tbl[,-3],  #
[TRUNCATED]

To get the complete diff run:
    svnlook diff /svnroot/soiltexture -r 89


More information about the Soiltexture-commits mailing list