[GRASS-SVN] r33824 - in grass-addons/raster: . r.soils.texture r.soils.texture/scheme

svn_grass at osgeo.org svn_grass at osgeo.org
Sat Oct 11 17:45:50 EDT 2008


Author: gianluca
Date: 2008-10-11 17:45:50 -0400 (Sat, 11 Oct 2008)
New Revision: 33824

Added:
   grass-addons/raster/r.soils.texture/
   grass-addons/raster/r.soils.texture/Makefile
   grass-addons/raster/r.soils.texture/description.html
   grass-addons/raster/r.soils.texture/local_include.h
   grass-addons/raster/r.soils.texture/main.c
   grass-addons/raster/r.soils.texture/scheme/
   grass-addons/raster/r.soils.texture/scheme/FAO.dat
   grass-addons/raster/r.soils.texture/scheme/USDA.dat
   grass-addons/raster/r.soils.texture/scheme/isss.dat
Log:
soils texture define with different scheme

Added: grass-addons/raster/r.soils.texture/Makefile
===================================================================
--- grass-addons/raster/r.soils.texture/Makefile	                        (rev 0)
+++ grass-addons/raster/r.soils.texture/Makefile	2008-10-11 21:45:50 UTC (rev 33824)
@@ -0,0 +1,10 @@
+MODULE_TOPDIR = ../..
+
+PGM = r.soils.texture
+
+LIBES = $(GISLIB)
+DEPENDENCIES = $(GISDEP)
+
+include $(MODULE_TOPDIR)/include/Make/Module.make
+
+default: cmd


Property changes on: grass-addons/raster/r.soils.texture/Makefile
___________________________________________________________________
Name: svn:executable
   + *

Added: grass-addons/raster/r.soils.texture/description.html
===================================================================
--- grass-addons/raster/r.soils.texture/description.html	                        (rev 0)
+++ grass-addons/raster/r.soils.texture/description.html	2008-10-11 21:45:50 UTC (rev 33824)
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+	<meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252">
+	
+	<title></title><meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)">
+	<meta name="CREATED" content="0;0">
+	<meta name="CHANGEDBY" content="gianluca">
+	<meta name="CHANGED" content="20080517;19214190">
+	<style type="text/css">
+	<!--
+		@page { size: 21cm 29.7cm }
+		H2.western { font-family: "Albany", sans-serif; font-size: 14pt; font-style: italic }
+		H2.cjk { font-family: "HG Mincho Light J"; font-size: 14pt; font-style: italic }
+		H2.ctl { font-family: "Arial Unicode MS"; font-size: 14pt; font-style: italic }
+	-->
+	</style></head>
+
+<body dir="ltr" lang="it-IT">
+<h2 class="western">DESCRIPTION</h2>
+<p><em>r.soils.texture</em> define soils texture from sand and clay
+distribution grid and a texture scheme definition.&nbsp;<br>Sand and clay grid are simple grid theme; scheme file&nbsp; is text ASCII file with *.dat
+extention like USDA.dat, FAO.dat and international.dat supplied with source code module in scheme directory.</p><p></p>
+<h2 class="western">SEE ALSO<br></h2>
+<p><em><a href="http://grass.itc.it/grass60/manuals/">GRASS
+Programmer's Manual</a></em></p><p><em><a href="http://grass.itc.it/grass60/manuals/"></a></em> 
+</p>
+<h2 class="western">AUTHOR</h2>
+<p>Gianluca Massei (g_massa at libero.it) 
+</p><br>
+
+<h2 class="western"><i>REFERENCES</i></h2>
+<p style="margin-bottom: 0.2cm;">Bourke P., 1987 – “Determining
+if a point lies on the interior of a polygon”. Downloaded
+printed</p>
+<p style="margin-bottom: 0.2cm;">Cavallini P, Neteler M., 2005 –
+“I GIS Open Source: un’alternativa possible ?” –
+MondoGIS n° 47</p>
+<p style="margin-bottom: 0.2cm;">Cavallini P, Neteler M., 2006 –
+“L'analisi geografica Open Source: GRASS GIS parte 2 –
+raster” –</p>
+<p style="margin-bottom: 0.2cm;">MondoGIS n° 52</p>
+<p style="margin-bottom: 0.2cm;">Neteler M. and H. Mitasova –
+2004 – Open Source GIS: A GRASS GIS Approah” - Kluwer</p>
+<p style="margin-bottom: 0.2cm;">Academic Publisher/Springer, Boston,
+-Second edition ISBN: 1-4020-8064-6</p>
+<p style="margin-bottom: 0.2cm;">Sanesi G., 2000 - “Elementi di
+pedologia” - Edagricole, Bologna</p>
+<p style="margin-bottom: 0.2cm;"><font face="TimesNewRomanPSMT, serif"><font size="3">Texture
+AutoLookup (TAL) ver 4.2, 2002 </font></font><font color="#810081">-
+www.agri.upm.edu.my/~chris/tal.</font></p>
+<p style="margin-bottom: 0.2cm;">Van Rossum G. - 2005 - “Manuale
+di riferimento di python” - Ed. Italiana, Fred L. Drake, Jr.,
+editor</p>
+<p style="margin-bottom: 0.2cm;">WATTON J. D., 1997 - “Comparing
+C, Fortran, Lisp, java, python, perl, scheme (guile), and tcl using a</p>
+<p style="margin-bottom: 0.2cm;">floating point numerical test - point
+inside polygon”. Applied mathematics and computer technology
+center alcoa technical center. Distribution documents.</p>
+<p><br><br>
+</p>
+</body></html>
\ No newline at end of file


Property changes on: grass-addons/raster/r.soils.texture/description.html
___________________________________________________________________
Name: svn:executable
   + *

Added: grass-addons/raster/r.soils.texture/local_include.h
===================================================================
--- grass-addons/raster/r.soils.texture/local_include.h	                        (rev 0)
+++ grass-addons/raster/r.soils.texture/local_include.h	2008-10-11 21:45:50 UTC (rev 33824)
@@ -0,0 +1,38 @@
+/****************************************************************************
+ *
+ * MODULE:       r.soils.texture
+ * AUTHOR(S):    Gianluca Massei (g_massa at libero.it)
+ * PURPOSE:      Intended to define soil texture from sand and clay grid.
+ *				 Require texture scheme supplied in scheme directory
+ *
+ * COPYRIGHT:    (C) 2008 by the GRASS Development Team
+ *
+ *               This program is free software under the GNU General Public
+ *   	    	 License (>=v2). Read the file COPYING that comes with GRASS
+ *   	    	 for details.
+ *
+ *****************************************************************************/
+/* for gettext macros - i18N localization */
+#define MAX_POINT 15
+#define MAX_LABEL 50
+
+/*///////List element prototipe///////////////////////////////*/     
+struct TextureTriangleCoord {
+         int numVertex; // polygons vertex of texture triangle 
+         float xSand[MAX_POINT], yClay[MAX_POINT]; // coordinate vector polygons in triangle 
+         int codeTexture; // code for identify textural type
+	     struct TextureTriangleCoord *PointToNext; //pointer to next element
+         }; 
+ 
+struct label_struct {
+		int id;
+		char etichetta[1024];
+		};
+/*
+ * function prototype 
+ */
+
+struct TextureTriangleCoord *ReadTriangle(int *, char *); //read texture file criteria (es. USDA.DAT)
+int ReadList(struct TextureTriangleCoord *, int *, float, float); //read all list of texture criteria
+int DefineTexture (int numVert, float *xSand, float *yClay, float SandVal, float ClayVal, int codeTxt); /*define texture for each point*/
+void reclassTexture(char *SchemeName, char *result); //reclass texture file with label


Property changes on: grass-addons/raster/r.soils.texture/local_include.h
___________________________________________________________________
Name: svn:executable
   + *

Added: grass-addons/raster/r.soils.texture/main.c
===================================================================
--- grass-addons/raster/r.soils.texture/main.c	                        (rev 0)
+++ grass-addons/raster/r.soils.texture/main.c	2008-10-11 21:45:50 UTC (rev 33824)
@@ -0,0 +1,407 @@
+/****************************************************************************
+ *
+ * MODULE:       r.soils.texture
+ * AUTHOR(S):    Gianluca Massei (g_massa at libero.it)
+ * PURPOSE:      Intended to define soil texture from sand and clay grid.
+ *				 Require texture scheme supplied in scheme directory
+ *
+ * COPYRIGHT:    (C) 2008 by the GRASS Development Team
+ *
+ *               This program is free software under the GNU General Public
+ *   	    	 License (>=v2). Read the file COPYING that comes with GRASS
+ *   	    	 for details.
+ *
+ *****************************************************************************/
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stddef.h>
+#include <grass/gis.h>
+#include <grass/glocale.h>
+#include "local_include.h"
+ 
+
+/* 
+ * global function declaration 
+ */
+extern CELL f_c(CELL);
+extern FCELL f_f(FCELL);
+extern DCELL f_d(DCELL);
+
+CELL c_calc(CELL c_sand, CELL c_clay, struct TextureTriangleCoord *punt_lista, int *numPoly)
+{
+    /* 				 */			
+    CELL out;
+    int polygons;
+    polygons=*numPoly;
+    out=ReadList(punt_lista, &polygons, c_sand, c_clay);
+    return out;
+}
+
+FCELL f_calc(FCELL f_sand, FCELL f_clay, struct TextureTriangleCoord *punt_lista, int *numPoly  )
+{
+   /* 				*/
+    FCELL out;
+    int polygons;
+    polygons=*numPoly;
+    out=ReadList(punt_lista, &polygons, f_sand, f_clay);
+    return out;
+}
+
+DCELL d_calc(DCELL d_sand, DCELL d_clay, struct TextureTriangleCoord *punt_lista, int *numPoly )
+{
+    /* 				*/
+    DCELL out;
+    int polygons;
+    polygons=*numPoly;
+    out=ReadList(punt_lista, &polygons, d_sand, d_clay);
+    return out;
+}
+/*
+ * main function
+ * it copies raster inputSand raster file, calling the appropriate function for each
+ * data type (CELL, DCELL, FCELL)
+ */
+int main(int argc, char *argv[])
+{
+    struct Cell_head cellhd;					/* it stores region information, and header information of rasters */
+    char *SandName, *ClayName, *SchemeName;		/* inputSand raster name */
+    char *result;								/* output raster name */
+    char *mapsetSand, *mapsetClay;				/* mapset name */
+    void *inrastSand, *inrastClay;				/* input buffer */
+    unsigned char *outrast;						/* output buffer */
+    int nrows, ncols;
+    int row, col;
+    int infdSand, infdClay, outfd;				/* file descriptor */
+    int verbose;
+    int polygons;
+    RASTER_MAP_TYPE data_type_Sand, data_type_Clay, data_type;		/* type of the map (CELL/DCELL/...) */
+
+    struct GModule *module;						/* GRASS module for parsing arguments */
+
+    struct Option *inputSand, *inputClay, *inputTextureScheme, *output;	/* options */
+    struct Flag *flag1;							/* flags */
+	
+    struct TextureTriangleCoord *punt_lista;
+
+    
+    /* initialize GIS environment */
+    G_gisinit(argv[0]);		/* reads grass env, stores program name to G_program_name() */
+
+    /* initialize module */
+    module = G_define_module();
+    module->description = _("Define soil texture from sand and clay grid."); //D
+
+    /* Define the different options for SAND file*/
+    inputSand = G_define_option();
+    inputSand->key = "SAND";
+    inputSand->type = TYPE_STRING;
+    inputSand->required = YES;
+    inputSand->gisprompt   = "old,cell,raster";
+    inputSand->description = _("Name of an input SAND layer");
+
+    /* Define the different options for CLAY file*/
+    inputClay = G_define_option();
+    inputClay->key = "CLAY";
+    inputClay->type = TYPE_STRING;
+    inputClay->required = YES;
+    inputClay->gisprompt   = "old,cell,raster";
+    inputClay->description = _("Name of an input CLAY layer");
+    
+    /*Define the texture file scheme: USDA, FAO, International or other scheme*/
+    inputTextureScheme = G_define_option();
+    inputTextureScheme->key = "scheme";
+    inputTextureScheme->type = TYPE_STRING;
+    inputTextureScheme->required = YES;
+    inputTextureScheme->gisprompt = "old_file,file,input";
+    inputTextureScheme->answer ="";
+    inputTextureScheme->description = "Text file with texture scheme ";
+    
+    output = G_define_option();
+    output->key = "output";
+    output->type = TYPE_STRING;
+    output->required = YES;
+    output->description = _("Output texture file");
+
+    /* options and flags pareser */
+    if (G_parser(argc, argv))
+	exit(-1);
+
+    /* stores options and flags to variables */
+    SandName = inputSand->answer;
+    ClayName = inputClay->answer;
+    SchemeName= inputTextureScheme->answer;
+    result = output->answer;
+/*************************************control sand file*****************************/
+    /* returns NULL if the map was not found in any mapset, 
+     * mapset name otherwise */
+    mapsetSand = G_find_cell2(SandName, "");
+    if (mapsetSand == NULL)
+	G_fatal_error(_("cell file [%s] not found"), SandName);
+
+    if (G_legal_filename(result) < 0)
+	G_fatal_error(_("[%s] is an illegal name"), result);
+    
+    /* determine the input map type (CELL/FCELL/DCELL) */
+    data_type_Sand = G_raster_map_type(SandName, mapsetSand);
+
+    /* G_open_cell_old - returns file destriptor (>0) */
+    if ((infdSand = G_open_cell_old(SandName, mapsetSand)) < 0)
+	G_fatal_error(_("Cannot open cell file [%s]"), SandName);
+
+
+    /* controlling, if we can open inputSand raster */
+    if (G_get_cellhd(SandName, mapsetSand, &cellhd) < 0)
+	G_fatal_error(_("Cannot read file header of [%s]"), SandName);
+/*********************************control clay file **********************************/
+ 
+    /* returns NULL if the map was not found in any mapset, 
+     * mapset name otherwise */
+    mapsetClay = G_find_cell2(ClayName, "");
+;
+    if (mapsetClay == NULL)
+	G_fatal_error(_("cell file [%s] not found"), ClayName);
+
+    if (G_legal_filename(result) < 0)
+	G_fatal_error(_("[%s] is an illegal name"), result);
+    
+    /* determine the input map type (CELL/FCELL/DCELL) */
+    data_type_Clay = G_raster_map_type(ClayName, mapsetClay);
+
+    /* G_open_cell_old - returns file destriptor (>0) */
+    if ((infdClay = G_open_cell_old(ClayName, mapsetClay)) < 0)
+	G_fatal_error(_("Cannot open cell file [%s]"), ClayName);
+
+
+    /* controlling, if we can open inputClay raster */
+    if (G_get_cellhd(ClayName, mapsetClay, &cellhd) < 0)
+	G_fatal_error(_("Cannot read file header of [%s]"), ClayName);
+
+/**************************************************************************************/
+    /* Allocate input buffer */
+    inrastSand = G_allocate_raster_buf(data_type_Sand);
+    inrastClay= G_allocate_raster_buf(data_type_Clay);
+    
+    /* Allocate output buffer, use input Sand map data_type */
+    nrows = G_window_rows();
+    ncols = G_window_cols();
+    outrast = G_allocate_raster_buf(data_type_Sand);
+    data_type=data_type_Sand;
+    /* controlling, if we can write the raster */
+    if ((outfd = G_open_raster_new(result, data_type)) < 0)
+	G_fatal_error(_("Could not open <%s>"), result);
+	
+    punt_lista=ReadTriangle(&polygons,SchemeName);//read texture criteria file (es USDA.DAT) and buil a list
+    CELL c_sand, c_clay, c;
+    FCELL f_sand, f_clay, f;
+    DCELL d_sand, d_clay, d;
+    /* for each row */
+    for (row = 0; row < nrows; row++) {
+		if (verbose)
+	    G_percent(row, nrows, 2);
+
+	/* read input Sand map */
+		if (G_get_raster_row(infdSand, inrastSand, row, data_type_Sand) < 0)
+	    	G_fatal_error(_("Could not read from <%s>"), SandName);
+	    
+		if (G_get_raster_row(infdClay, inrastClay, row, data_type_Sand) < 0)
+	    	G_fatal_error(_("Could not read from <%s>"), ClayName);
+	    
+	/* process the data */
+		for (col = 0; col < ncols; col++) {
+	    /* use different function for each data type */
+	    	switch (data_type) {
+	    		case CELL_TYPE:
+				c_sand = ((CELL *) inrastSand)[col];
+				c_clay = ((CELL *) inrastClay)[col];
+				c = c_calc(c_sand, c_clay, punt_lista, &polygons);	/* calculate */
+				((CELL *) outrast)[col] = c;
+				break;
+	    		case FCELL_TYPE:
+				f_sand = ((FCELL *) inrastSand)[col];
+				f_clay = ((FCELL *) inrastClay)[col];
+				f = f_calc(f_sand, f_clay, punt_lista, &polygons);	/* calculate */
+				((FCELL *) outrast)[col] = f;
+				break;
+	    		case DCELL_TYPE:
+				d_sand = ((DCELL *) inrastSand)[col];
+				d_clay = ((DCELL *) inrastClay)[col];
+				d = d_calc(d_sand, d_clay, punt_lista, &polygons);	/* calculate */
+				((DCELL *) outrast)[col] = d;
+				break;
+	    }
+	}
+
+	/* write raster row to output raster file */
+	if (G_put_raster_row(outfd, outrast, data_type) < 0)
+	    G_fatal_error(_("Cannot write to <%s>"), result);
+    }
+    
+    /* memory cleanup */
+    G_free(inrastSand);
+    G_free(inrastClay);
+    G_free(outrast);
+
+    /* closing raster files */
+    G_close_cell(infdSand);
+    G_close_cell(infdClay);
+    G_close_cell(outfd);
+
+    reclassTexture(SchemeName,result);
+    
+    G_message("Soil texture file generated with name:<%s>",result);
+    return 0;
+}
+
+
+
+
+
+struct TextureTriangleCoord *ReadTriangle(int *numPoly, char *SchemeName )     
+{
+	/*//////////// Declare Read Poly texture structure ////////////////////////////*/
+	struct TextureTriangleCoord Triangle, *pTxt, *paus;    
+	pTxt=&Triangle; //pointer to struct
+	/*//////////////////////////////////////////////////////////////////////////////*/
+	int i,j,polygons;                
+	FILE* fp_dat;
+
+	
+	fp_dat=fopen(SchemeName,"r");
+	if (fp_dat==NULL){
+		printf("Could not read from <%s>", SchemeName);
+	}
+	
+	fscanf(fp_dat,"%d",numPoly);
+	polygons=*numPoly;
+	
+	if (polygons==0)	{
+		pTxt=NULL; /*break if no polygons*/
+	}
+	else
+	{
+		pTxt=(struct TextureTriangleCoord *)malloc(sizeof(struct TextureTriangleCoord)); /*first struct PolygonCoord*/
+		fscanf(fp_dat,"%d",&pTxt->codeTexture);
+		fscanf(fp_dat,"%d",&pTxt->numVertex);
+		
+		for(j=0;j<(pTxt->numVertex);j++) {     //fill sand array with coord. polygons array        
+			fscanf(fp_dat,"%f",&pTxt->xSand[j]);
+		}		
+		for(j=0;j<(pTxt->numVertex);j++) {     //fill clay array with coord. polygons array          
+			fscanf(fp_dat,"%f",&pTxt->yClay[j]);
+		}	
+		paus=pTxt;
+				
+				  
+		for(i=2;i<=polygons;i++)	
+		{
+			paus->PointToNext=(struct TextureTriangleCoord *)malloc(sizeof(struct TextureTriangleCoord));	
+			paus=paus->PointToNext;
+			fscanf(fp_dat,"%d",&paus->codeTexture);
+			fscanf(fp_dat,"%d",&paus->numVertex); 
+			for(j=0;j<(paus->numVertex);j++) {     //fill sand array with coord. polygons array        
+				fscanf(fp_dat,"%f",&paus->xSand[j]); 	
+			}
+			for(j=0;j<(paus->numVertex);j++) {     //fill clay array with coord. polygons array          
+				fscanf(fp_dat,"%f",&paus->yClay[j]);
+			}                                                                           
+		}
+				
+		paus->PointToNext=NULL;	
+	}
+	fclose (fp_dat);
+	return (pTxt);
+}
+
+
+int ReadList(struct TextureTriangleCoord *pTxt, int  *numPoly,float SandVal, float ClayVal )
+{
+	int polygons,textureOUT;
+	textureOUT=0;
+	polygons=*numPoly;
+	while(pTxt!=NULL && textureOUT==0) {
+		textureOUT=DefineTexture (pTxt->numVertex, pTxt->xSand, pTxt->yClay, SandVal, ClayVal, pTxt->codeTexture);
+		pTxt=pTxt->PointToNext;
+	}
+
+	return textureOUT;
+}
+
+
+int DefineTexture (int numVert, float *xSand, float *yClay, float SandVal, float ClayVal, int codeTxt)   
+{
+	int i, j, textureVER=0;
+
+	for (i = 0, j = numVert-1; i < numVert; j = i++) {
+		if ((((yClay[i] <= ClayVal) && (ClayVal < yClay[j])) || ((yClay[j] <= ClayVal) && (ClayVal < yClay[i]))) &&
+				     (SandVal < (xSand[j] - xSand[i]) * (ClayVal - yClay[i]) / (yClay[j] - yClay[i]) + xSand[i]))
+			textureVER = !textureVER;               
+	}
+
+	if (textureVER == 1)
+	{
+		textureVER=codeTxt;
+	}
+	else       {
+		textureVER=0;
+	}
+	return textureVER;
+           
+      
+}
+
+
+
+void reclassTexture(char *SchemeName, char *result) /*reclass texture file with label in scheme file*/
+
+{
+	
+	int control,i;
+	char c,command[1024];
+	
+
+	struct label_struct label, *plabel;
+	struct Categories pcats;
+
+	FILE* fp_dat;
+	fp_dat=fopen(SchemeName,"r");
+
+	plabel=&label;
+
+	if (G_read_cats (result, G_mapset(), &pcats) < 0) /*read raster category file*/
+		G_fatal_error (("%s: %s in %s - can't read category file"),G_program_name(), result, G_mapset());
+	
+	if (fp_dat==NULL)
+	{
+		G_fatal_error(_("Could not open <%s>"), SchemeName);
+	}
+
+	fscanf(fp_dat,"%d",&control);
+
+	while(c!='#') 
+	{
+		fscanf(fp_dat,"%c",&c);
+	}
+
+	sprintf(command,"NULL");
+	G_set_cat(0, command,&pcats); /*set a category label. The label is copied into the cats structure for category n.*/
+
+
+	for(i=1;i<=control;i++)
+	{
+		fscanf(fp_dat,"%s",&plabel->etichetta);
+		sprintf(command,"%s",plabel->etichetta);
+		G_set_cat(i, command,&pcats);
+	}
+
+	G_write_cats(result,&pcats);
+
+	fclose (fp_dat);
+	/*return (0);*/
+}
+
+
+
+


Property changes on: grass-addons/raster/r.soils.texture/main.c
___________________________________________________________________
Name: svn:executable
   + *

Added: grass-addons/raster/r.soils.texture/scheme/FAO.dat
===================================================================
--- grass-addons/raster/r.soils.texture/scheme/FAO.dat	                        (rev 0)
+++ grass-addons/raster/r.soils.texture/scheme/FAO.dat	2008-10-11 21:45:50 UTC (rev 33824)
@@ -0,0 +1,16 @@
+3
+1
+3
+0	65	0
+100	35	35
+2
+6
+0	65	82	68	68	0
+35	35	18	18	0	0
+3
+82	100 	68	68
+18	0	0	18
+#
+fine
+medium
+coarse


Property changes on: grass-addons/raster/r.soils.texture/scheme/FAO.dat
___________________________________________________________________
Name: svn:executable
   + *

Added: grass-addons/raster/r.soils.texture/scheme/USDA.dat
===================================================================
--- grass-addons/raster/r.soils.texture/scheme/USDA.dat	                        (rev 0)
+++ grass-addons/raster/r.soils.texture/scheme/USDA.dat	2008-10-11 21:45:50 UTC (rev 33824)
@@ -0,0 +1,65 @@
+12	
+1	
+6		
+0	0	20	45	45	0
+100	60	40	40	55	100
+2			
+4				
+0	0	20	0		
+60	40	40	60	
+3		
+5				
+0	0	20	20	0	
+40	27	27	40	40
+4			
+4				
+45	45	65	45		
+55	35	35	55	
+5		
+6				
+45	45	52	80	65	45
+35	27	20	20	35	35
+6			
+5				
+20	20	45	45	20
+40	27	27	40	40
+7				
+5				
+0	0	20	8	0
+12	0	0	12	12
+8			
+7				
+8	20	50	23	0	0	8
+12	0	0	27	27	12	12
+9				
+6					
+23	43	52	52	45	23
+27	7	7	20	27	27
+10				
+4				
+85	100	90	85		
+0	0	10	0	
+11					
+5						
+70	85	90	85	70			
+0	0	10	15	0		
+12					
+8						
+43	50	70	85	80	52	52	43
+7	0	0	15	20	20	7	7
+
+#
+clay		
+silty-clay	
+silty-clay-loam
+sandy-clay	
+sandy-clay-loam
+clay-loam	
+silt
+silt-loam	
+loam		
+sand		
+loamy-sand	
+sandy-loam	
+silt-loam
+(x, y, z): (sand 0.05-2.0, clay <0.002, silt 0.002-0.05)


Property changes on: grass-addons/raster/r.soils.texture/scheme/USDA.dat
___________________________________________________________________
Name: svn:executable
   + *

Added: grass-addons/raster/r.soils.texture/scheme/isss.dat
===================================================================
--- grass-addons/raster/r.soils.texture/scheme/isss.dat	                        (rev 0)
+++ grass-addons/raster/r.soils.texture/scheme/isss.dat	2008-10-11 21:45:50 UTC (rev 33824)
@@ -0,0 +1,65 @@
+12
+1
+3
+0	0	55
+100	45	45
+2
+3
+55	75	55 
+45	25	25
+3
+4
+75	85	65	55 
+25	15	15	25
+4
+4
+85	85	65	65 
+15	0	0	15
+5
+3
+85	95	85 
+15	5	0
+6
+3
+95	100	85 
+5	0	0
+7
+4
+55	55	30	10 
+45	25	25	45
+8
+4
+55	65	40	30
+25	15	15	25
+9
+4
+65	65	55	40
+15	0	0	15
+10
+4
+10	30	0	0
+45	25	25	45
+11
+4
+30	40	0	0 
+25	15	15	25
+12
+4
+40	55	0	0 
+15	0	0	15
+
+#
+heavy-clay
+sandy-clay
+sandy-clay-loam
+sandy-loam
+loamy-sand
+sand
+light-clay
+clay-loam
+loam
+silty-clay
+silty-clay-loam
+silt-loam
+
+(x, y, z): (sand 0.02-2.0, clay <0.002, silt 0.002-0.02)


Property changes on: grass-addons/raster/r.soils.texture/scheme/isss.dat
___________________________________________________________________
Name: svn:executable
   + *



More information about the grass-commit mailing list