[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. <br>Sand and clay grid are simple grid theme; scheme file 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: unalternativa 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