/* ======================================================================== /* @(#)soilprop.aml 1.2 4/06/1999 07:48:33 /*------------------------------------------------------------------------- /* Lab for synthetic dynamic vegephenomenology /*------------------------------------------------------------------------- /* Program: SOILPROP.AML /* Purpose: This AML reads a topographic position grid (as generated /* e.g. by toposcale.aml), and a simplified surface geology /* grid (as generated by geoclass.aml). The information from /* the two grids is then translated into three new grids of /* various soil properties, based on an expert system classi- /* fication (see Roberts et al., 1993, and table below) /*------------------------------------------------------------------------- /* Usage: &r topoclass /*------------------------------------------------------------------------- /* Notes: This AML generates maps for soil properties based on topo- /* graphic position of the modelled pixels. Topographic posi- /* tion is derived by applying a hierarchically scaled proce- /* dure described in TOPOSCALE.AML. The so derived standardi- /* zed values are reclassified with the following two keys /* (see TOPOCLASS.AML): /* /* Toposcale: Range: Class: /* BOTTOM: -1300 -200 4 /* TOE SLOPE: -200 -100 3 /* SLOPE: -100 150 2 /* RIDGE: 150 1300 1 /* /* These topographic positions are translated into three soil /* properties, depending on parent material and geologic bed- /* rock type. The soil properties are Depth (of soils), speci- /* fic soil moisture holding capacity (SSMC), and coarse frag- /* ment content of the soils (CFC): /* --------------------------------------------------------- /* *IGNEOUS COARSE (1) /* Texture: DEPTH(m): CFC(%): SSMC(mm/m): /* RIDGE: Sandy 1.0 70 70 /* SLOPE: Sandy Loam 2.0 50 120 /* TOE SLOPE: Sandy Loam 2.5 30 120 /* BOTTOM: Silty Clay Loam 3.0 10 150 /* /* *IGNEOUS FINE (2) /* Texture: DEPTH(m): CFC(%): SSMC(mm/m): /* RIDGE: Sandy Loam 0.5 80 120 /* SLOPE: Silt Loam 2.0 60 170 /* TOE SLOPE: Silt Loam 2.5 40 170 /* BOTTOM: Clay Loam 3.0 20 120 /* /* *SEDIMENTARY COARSE (3) /* Texture: DEPTH(m): CFC(%): SSMC(mm/m): /* RIDGE: Sandy Loam 1.0 70 120 /* SLOPE: Silt Loam 2.0 60 170 /* TOE SLOPE: Silty Clay Loam 2.5 50 150 /* BOTTOM: Clay Loam 3.0 20 120 /* /* *SEDIMENTARY FINE (4) /* Texture: DEPTH(m): CFC(%): SSMC(mm/m): /* RIDGE: Silt Loam 1.5 80 170 /* SLOPE: Silt Loam 2.5 60 170 /* TOE SLOPE: Silty Clay Loam 3.0 40 150 /* BOTTOM: Clay Loam 3.5 10 120 /* /* *ALLUVIAL & OTHER COARSE MIXED DEPOSITS (5) /* Texture: DEPTH(m): CFC(%): SSMC(mm/m): /* RIDGE: Sandy 0.5 80 70 /* SLOPE: Loamy Sand 2.0 70 100 /* TOE SLOPE: Loamy Sand 2.5 60 100 /* BOTTOM: Loamy Sand 3.0 50 100 /* /*------------------------------------------------------------------------- /* Input: topoclass, geoclass /* Output: depth,SSMC,CFC /*------------------------------------------------------------------------- /* History: Niklaus E Zimmermann - 9/18/1997 - Original coding /* Niklaus E Zimmermann - 4/06/1999 - Improved user interface /*========================================================================= &if [show program] ne GRID &then grid &sys clear &sys clear &ty '-------------------------------------------------------------------------' &ty ' This AML assumes that two grids are handy containing reclassified data ' &ty ' for topographic position (4 classes) and surface geology (5 classes), ' &ty ' as generated by TOPOSCALE.AML/TOPOCLASS.AML and GEOCLASS.AML. If your ' &ty ' reclassifications differ from the classes generated by the above men- ' &ty ' tioned AMLs, then you have to adjust this AML manually, or reclassify ' &ty ' your topography or geology maps accordingly... ' &ty '-------------------------------------------------------------------------' &ty &s answer := [Response 'Do you want to continue (Y/N) '] &if %answer% EQ 'Y' OR %answer% EQ 'y' &then &goto next &else &goto end &label next &sv topc := [response 'Enter name (& path) of the topo-class file '] &if ^ [exists %topc% -grid] &then &return &error Grid %topc% does not exist. &sv geoc := [response 'Enter name (& path) of the geol-class file '] &if ^ [exists %geoc% -grid] &then &return &error Grid %geoc% does already exists. &if [exists depth -grid] &then &return &error Grid "bucket" already exists. &if [exists ssmc -grid] &then &return &error Grid "ssmc" already exists. &if [exists cfc -grid] &then &return &error Grid "cfc" already exists. /* --- Generate map of 'depth' if (%topc% eq 1 and %geoc% eq 1) depth = 1.0 else if (%topc% eq 2 and %geoc% eq 1) depth = 2.0 else if (%topc% eq 3 and %geoc% eq 1) depth = 2.5 else if (%topc% eq 4 and %geoc% eq 1) depth = 3.0 else if (%topc% eq 1 and %geoc% eq 2) depth = 0.5 else if (%topc% eq 2 and %geoc% eq 2) depth = 2.0 else if (%topc% eq 3 and %geoc% eq 2) depth = 2.5 else if (%topc% eq 4 and %geoc% eq 2) depth = 3.0 else if (%topc% eq 1 and %geoc% eq 3) depth = 1.0 else if (%topc% eq 2 and %geoc% eq 3) depth = 2.0 else if (%topc% eq 3 and %geoc% eq 3) depth = 2.5 else if (%topc% eq 4 and %geoc% eq 3) depth = 3.0 else if (%topc% eq 1 and %geoc% eq 4) depth = 1.5 else if (%topc% eq 2 and %geoc% eq 4) depth = 2.5 else if (%topc% eq 3 and %geoc% eq 4) depth = 3.0 else if (%topc% eq 4 and %geoc% eq 4) depth = 3.5 else if (%topc% eq 1 and %geoc% eq 5) depth = 0.5 else if (%topc% eq 2 and %geoc% eq 5) depth = 2.0 else if (%topc% eq 3 and %geoc% eq 5) depth = 2.5 else if (%topc% eq 4 and %geoc% eq 5) depth = 3.0 endif /* Generate map of 'CFC': /* ------------------------- if (%topc% eq 1 and %geoc% eq 1) cfc = 70 else if (%topc% eq 2 and %geoc% eq 1) cfc = 50 else if (%topc% eq 3 and %geoc% eq 1) cfc = 30 else if (%topc% eq 4 and %geoc% eq 1) cfc = 10 else if (%topc% eq 1 and %geoc% eq 2) cfc = 80 else if (%topc% eq 2 and %geoc% eq 2) cfc = 60 else if (%topc% eq 3 and %geoc% eq 2) cfc = 40 else if (%topc% eq 4 and %geoc% eq 2) cfc = 20 else if (%topc% eq 1 and %geoc% eq 3) cfc = 70 else if (%topc% eq 2 and %geoc% eq 3) cfc = 60 else if (%topc% eq 3 and %geoc% eq 3) cfc = 50 else if (%topc% eq 4 and %geoc% eq 3) cfc = 20 else if (%topc% eq 1 and %geoc% eq 4) cfc = 80 else if (%topc% eq 2 and %geoc% eq 4) cfc = 60 else if (%topc% eq 3 and %geoc% eq 4) cfc = 40 else if (%topc% eq 4 and %geoc% eq 4) cfc = 10 else if (%topc% eq 1 and %geoc% eq 5) cfc = 80 else if (%topc% eq 2 and %geoc% eq 5) cfc = 70 else if (%topc% eq 3 and %geoc% eq 5) cfc = 60 else if (%topc% eq 4 and %geoc% eq 5) cfc = 50 endif /* Generate map of 'SSMC': /* -------------------------- if (%topc% eq 1 and %geoc% eq 1) ssmc = 70 else if (%topc% eq 2 and %geoc% eq 1) ssmc = 120 else if (%topc% eq 3 and %geoc% eq 1) ssmc = 120 else if (%topc% eq 4 and %geoc% eq 1) ssmc = 150 else if (%topc% eq 1 and %geoc% eq 2) ssmc = 120 else if (%topc% eq 2 and %geoc% eq 2) ssmc = 170 else if (%topc% eq 3 and %geoc% eq 2) ssmc = 170 else if (%topc% eq 4 and %geoc% eq 2) ssmc = 120 else if (%topc% eq 1 and %geoc% eq 3) ssmc = 120 else if (%topc% eq 2 and %geoc% eq 3) ssmc = 170 else if (%topc% eq 3 and %geoc% eq 3) ssmc = 150 else if (%topc% eq 4 and %geoc% eq 3) ssmc = 120 else if (%topc% eq 1 and %geoc% eq 4) ssmc = 170 else if (%topc% eq 2 and %geoc% eq 4) ssmc = 170 else if (%topc% eq 3 and %geoc% eq 4) ssmc = 150 else if (%topc% eq 4 and %geoc% eq 4) ssmc = 120 else if (%topc% eq 1 and %geoc% eq 5) ssmc = 70 else if (%topc% eq 2 and %geoc% eq 5) ssmc = 100 else if (%topc% eq 3 and %geoc% eq 5) ssmc = 100 else if (%topc% eq 4 and %geoc% eq 5) ssmc = 100 endif &label end