[GRASS-SVN] r38420 - grass/trunk/raster/r.ros

svn_grass at osgeo.org svn_grass at osgeo.org
Wed Jul 15 05:13:03 EDT 2009


Author: martinl
Date: 2009-07-15 05:13:03 -0400 (Wed, 15 Jul 2009)
New Revision: 38420

Modified:
   grass/trunk/raster/r.ros/Makefile
   grass/trunk/raster/r.ros/local_proto.h
   grass/trunk/raster/r.ros/main.c
   grass/trunk/raster/r.ros/r.ros.html
   grass/trunk/raster/r.ros/spot_dist.c
Log:
r.ros cleaning up



Property changes on: grass/trunk/raster/r.ros/Makefile
___________________________________________________________________
Deleted: svn:mergeinfo
   - 


Property changes on: grass/trunk/raster/r.ros/local_proto.h
___________________________________________________________________
Deleted: svn:mergeinfo
   - 

Modified: grass/trunk/raster/r.ros/main.c
===================================================================
--- grass/trunk/raster/r.ros/main.c	2009-07-14 21:50:48 UTC (rev 38419)
+++ grass/trunk/raster/r.ros/main.c	2009-07-15 09:13:03 UTC (rev 38420)
@@ -56,7 +56,7 @@
  * my_ros.max, and my_ros.maxdir, or even my_ros.spotdist
  * respectively. 
  *   
- * COPYRIGHT:    (C) 2000-2006 by the GRASS Development Team
+ * COPYRIGHT:    (C) 2000-2009 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
@@ -74,9 +74,7 @@
 
 
 #define DATA(map, r, c)         (map)[(r) * ncols + (c)]
-#define DEBUG
 
-
 /*measurements of the 13 fuel models, input of Rothermel equation (1972) */
 float WO[4][14] =
     { {0, 0.034, 0.092, 0.138, 0.230, 0.046, 0.069, 0.052, 0.069, 0.134,
@@ -202,7 +200,7 @@
     } parm;
 
     /* please, remove before GRASS 7 released */
-    struct Flag *flag1, *flag2;
+    struct Flag *flag_s;
     struct GModule *module;
 
     /* initialize access to database and create temporary files */
@@ -211,113 +209,83 @@
     /* Set description */
     module = G_define_module();
     G_add_keyword(_("raster"));
+    G_add_keyword(_("rate of spread"));
+    module->label = _("Generates rate of spread raster map layers.");
     module->description =
 	_("Generates three, or four raster map layers showing 1) the base "
 	  "(perpendicular) rate of spread (ROS), 2) the maximum (forward) ROS, "
 	  "3) the direction of the maximum ROS, and optionally 4) the "
 	  "maximum potential spotting distance.");
 
-    parm.model = G_define_option();
+    parm.model = G_define_standard_option(G_OPT_R_INPUT);
     parm.model->key = "model";
-    parm.model->type = TYPE_STRING;
-    parm.model->required = YES;
-    parm.model->gisprompt = "old,cell,raster";
     parm.model->description = _("Name of raster map containing fuel MODELs");
 
-    parm.mois_1h = G_define_option();
+    parm.mois_1h = G_define_standard_option(G_OPT_R_INPUT);
     parm.mois_1h->key = "moisture_1h";
-    parm.mois_1h->type = TYPE_STRING;
-    parm.mois_1h->gisprompt = "old,cell,raster";
+    parm.mois_1h->required = NO;
     parm.mois_1h->description =
 	_("Name of raster map containing the 1-HOUR fuel MOISTURE (%)");
 
-    parm.mois_10h = G_define_option();
+    parm.mois_10h = G_define_standard_option(G_OPT_R_INPUT);
     parm.mois_10h->key = "moisture_10h";
-    parm.mois_10h->type = TYPE_STRING;
-    parm.mois_10h->gisprompt = "old,cell,raster";
+    parm.mois_10h->required = NO;
     parm.mois_10h->description =
 	_("Name of raster map containing the 10-HOUR fuel MOISTURE (%)");
 
-    parm.mois_100h = G_define_option();
+    parm.mois_100h = G_define_standard_option(G_OPT_R_INPUT);
     parm.mois_100h->key = "moisture_100h";
-    parm.mois_100h->type = TYPE_STRING;
-    parm.mois_100h->gisprompt = "old,cell,raster";
+    parm.mois_100h->required = NO;
     parm.mois_100h->description =
 	_("Name of raster map containing the 100-HOUR fuel MOISTURE (%)");
 
-    parm.mois_live = G_define_option();
+    parm.mois_live = G_define_standard_option(G_OPT_R_INPUT);
     parm.mois_live->key = "moisture_live";
-    parm.mois_live->type = TYPE_STRING;
-    parm.mois_live->required = YES;
-    parm.mois_live->gisprompt = "old,cell,raster";
     parm.mois_live->description =
 	_("Name of raster map containing LIVE fuel MOISTURE (%)");
 
-    parm.vel = G_define_option();
+    parm.vel = G_define_standard_option(G_OPT_R_INPUT);
     parm.vel->key = "velocity";
-    parm.vel->type = TYPE_STRING;
-    parm.vel->gisprompt = "old,cell,raster";
+    parm.vel->required = NO;
     parm.vel->description =
 	_("Name of raster map containing midflame wind VELOCITYs (ft/min)");
 
-    parm.dir = G_define_option();
+    parm.dir = G_define_standard_option(G_OPT_R_INPUT);
     parm.dir->key = "direction";
-    parm.dir->type = TYPE_STRING;
-    parm.dir->gisprompt = "old,cell,raster";
+    parm.dir->required = NO;
     parm.dir->description =
 	_("Name of raster map containing wind DIRECTIONs (degree)");
 
-    parm.slope = G_define_option();
+    parm.slope = G_define_standard_option(G_OPT_R_INPUT);
     parm.slope->key = "slope";
-    parm.slope->type = TYPE_STRING;
-    parm.slope->gisprompt = "old,cell,raster";
+    parm.slope->required = NO;
     parm.slope->description =
 	_("Name of raster map containing SLOPE (degree)");
 
-    parm.aspect = G_define_option();
+    parm.aspect = G_define_standard_option(G_OPT_R_INPUT);
     parm.aspect->key = "aspect";
-    parm.aspect->type = TYPE_STRING;
-    parm.aspect->gisprompt = "old,cell,raster";
+    parm.aspect->required = NO;
     parm.aspect->description =
 	_("Name of raster map containing ASPECT (degree, anti-clockwise from E)");
 
-    parm.elev = G_define_option();
-    parm.elev->key = "elevation";
-    parm.elev->type = TYPE_STRING;
-    parm.elev->gisprompt = "old,cell,raster";
+    parm.elev = G_define_standard_option(G_OPT_R_ELEV);
+    parm.elev->required = NO;
     parm.elev->description =
 	_("Name of raster map containing ELEVATION (m) (required w/ -s)");
 
-    parm.output = G_define_option();
-    parm.output->key = "output";
-    parm.output->type = TYPE_STRING;
-    parm.output->required = YES;
-    parm.output->gisprompt = "new,cell,raster";
-    parm.output->description =
-	_("Name of raster map to contain results (several new layers)");
+    parm.output = G_define_standard_option(G_OPT_R_OUTPUT);
+    parm.output->description = _("Name prefix for output raster maps (.base, .max, .maxdir)");
 
-    /* please, remove before GRASS 7 released */
-    flag1 = G_define_flag();
-    flag1->key = 'v';
-    flag1->description = _("Run verbosely");
+    flag_s = G_define_flag();
+    flag_s->key = 's';
+    flag_s->description = _("Also produce maximum SPOTTING distance");
 
-    flag2 = G_define_flag();
-    flag2->key = 's';
-    flag2->description = _("Also produce maximum SPOTTING distance");
-
     /*   Parse command line */
     if (G_parser(argc, argv))
 	exit(EXIT_FAILURE);
+    
+    spotting = flag_s->answer;
 
-    /* please, remove before GRASS 7 released */
-    if (flag1->answer) {
-	putenv("GRASS_VERBOSE=3");
-	G_warning(_("The '-v' flag is superseded and will be removed "
-		    "in future. Please use '--verbose' instead."));
-    }
-
-    spotting = flag2->answer;
-
     /*  Check if input layers exists in data base  */
     if (G_find_cell2(parm.model->answer, "") == NULL)
 	G_fatal_error(_("Raster map <%s> not found"), parm.model->answer);
@@ -325,10 +293,8 @@
     if (!
 	(parm.mois_1h->answer || parm.mois_10h->answer ||
 	 parm.mois_100h->answer)) {
-	G_warning
-	    ("no dead fuel moisture is given. At least one of the 1-h, 10-h, 100-h moisture layers is required.");
-	G_usage();
-	exit(EXIT_FAILURE);
+	G_fatal_error(_("No dead fuel moisture is given. "
+			"At least one of the 1-h, 10-h, 100-h moisture layers is required."));
     }
 
     if (parm.mois_1h->answer) {
@@ -351,18 +317,14 @@
 	G_fatal_error(_("Raster map <%s> not found"), parm.mois_live->answer);
 
     if (parm.vel->answer && !(parm.dir->answer)) {
-	G_warning
-	    ("a wind direction layer should be given if the wind velocity layer--%s-- has been given\n",
-	     parm.vel->answer);
-	G_usage();
-	exit(EXIT_FAILURE);
+	G_fatal_error(_("A wind direction layer should be "
+			"given if the wind velocity layer <%s> has been given"),
+		      parm.vel->answer);
     }
     if (!(parm.vel->answer) && parm.dir->answer) {
-	G_warning
-	    ("a wind velocity layer should be given if the wind direction layer--%s-- has been given\n",
-	     parm.dir->answer);
-	G_usage();
-	exit(EXIT_FAILURE);
+	G_fatal_error(_("A wind velocity layer should be given "
+			"if the wind direction layer <%s> has been given"),
+		      parm.dir->answer);
     }
     if (parm.vel->answer) {
 	if (G_find_cell2(parm.vel->answer, "") == NULL)
@@ -374,18 +336,14 @@
     }
 
     if (parm.slope->answer && !(parm.aspect->answer)) {
-	G_warning
-	    ("an aspect layer should be given if the slope layer--%s-- has been given\n",
-	     parm.slope->answer);
-	G_usage();
-	exit(EXIT_FAILURE);
+	G_fatal_error(_("An aspect layer should be given "
+			"if the slope layer <%s> has been given"),
+		      parm.slope->answer);
     }
     if (!(parm.slope->answer) && parm.aspect->answer) {
-	G_warning
-	    ("a slope layer should be given if the aspect layer--%s-- has been given\n",
-	     parm.aspect->answer);
-	G_usage();
-	exit(EXIT_FAILURE);
+	G_fatal_error(_("A slope layer should be given "
+			"if the aspect layer <%s> has been given"),
+		      parm.aspect->answer);
     }
     if (parm.slope->answer) {
 	if (G_find_cell2(parm.slope->answer, "") == NULL)
@@ -399,10 +357,8 @@
 
     if (spotting) {
 	if (!(parm.elev->answer)) {
-	    G_warning
-		("an elevation layer should be given if considering spotting\n");
-	    G_usage();
-	    exit(EXIT_FAILURE);
+	    G_fatal_error(_("An elevation layer should be given "
+			    "if considering spotting"));
 	}
 	else {
 	    if (G_find_cell2(parm.elev->answer, "") == NULL)
@@ -417,24 +373,26 @@
     sprintf(name_maxdir, "%s.maxdir", parm.output->answer);
 
     /*check if the output layer names EXIST */
-    if (G_find_cell2(name_base, G_mapset()))
-	G_fatal_error(_("Raster map <%s> already exists in mapset <%s>, select another name"),
-		      name_base, G_mapset());
-
-    if (G_find_cell2(name_max, G_mapset()))
-	G_fatal_error(_("Raster map <%s> already exists in mapset <%s>, select another name"),
-		      name_max, G_mapset());
-
-    if (G_find_cell2(name_maxdir, G_mapset()))
-	G_fatal_error(_("Raster map <%s> already exists in mapset <%s>, select another name"),
-		      name_maxdir, G_mapset());
-
-    /*assign a name to output SPOTTING distance layer */
-    if (spotting) {
-	sprintf(name_spotdist, "%s.spotdist", parm.output->answer);
-	if (G_find_cell2(name_spotdist, G_mapset()))
-	    G_fatal_error(_("Raster map <%s> already exists in mapset <%s>, select another name"),
-			  name_spotdist, G_mapset());
+    if (G_check_overwrite(argc, argv) == 0) {
+	if (G_find_cell2(name_base, G_mapset()))
+	    G_fatal_error(_("Raster map <%s> already exists in mapset <%s>"),
+			  name_base, G_mapset());
+	
+	if (G_find_cell2(name_max, G_mapset()))
+	    G_fatal_error(_("Raster map <%s> already exists in mapset <%s>"),
+			  name_max, G_mapset());
+	
+	if (G_find_cell2(name_maxdir, G_mapset()))
+	    G_fatal_error(_("Raster map <%s> already exists in mapset <%s>"),
+			  name_maxdir, G_mapset());
+	
+	/*assign a name to output SPOTTING distance layer */
+	if (spotting) {
+	    sprintf(name_spotdist, "%s.spotdist", parm.output->answer);
+	    if (G_find_cell2(name_spotdist, G_mapset()))
+		G_fatal_error(_("Raster map <%s> already exists in mapset <%s>"),
+			      name_spotdist, G_mapset());
+	}
     }
 
     /*  Get database window parameters  */
@@ -627,41 +585,39 @@
     if (spotting)
 	for (row = 0; row < nrows; row++) {
 	    if (Rast_get_c_row(elev_fd, elev, row) < 0)
-		G_fatal_error("cannot get map row!");
+		G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.elev->answer, row);
 	    for (col = 0; col < ncols; col++)
 		DATA(map_elev, row, col) = elev[col];
 	}
 
     /*major computation: compute ROSs one cell a time */
-    G_message(_("Percent Completed ... "));
-
     for (row = 0; row < nrows; row++) {
 	G_percent(row, nrows, 2);
 	if (Rast_get_c_row(fuel_fd, fuel, row) < 0)
-	    G_fatal_error("cannot get map row: %d!", row);
+	    G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.model->answer, row);
 	if (parm.mois_1h->answer)
 	    if (Rast_get_c_row(mois_1h_fd, mois_1h, row) < 0)
-		G_fatal_error("cannot get map row: %d!", row);
+		G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.mois_1h->answer, row);
 	if (parm.mois_10h->answer)
 	    if (Rast_get_c_row(mois_10h_fd, mois_10h, row) < 0)
-		G_fatal_error("cannot get map row: %d!", row);
+		G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.mois_10h->answer, row);
 	if (parm.mois_100h->answer)
 	    if (Rast_get_c_row(mois_100h_fd, mois_100h, row) < 0)
-		G_fatal_error("cannot get map row: %d!", row);
+		G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.mois_100h->answer, row);
 	if (Rast_get_c_row(mois_live_fd, mois_live, row) < 0)
-	    G_fatal_error("cannot get map row: %d!", row);
+	    G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.mois_live->answer, row);
 	if (parm.vel->answer)
 	    if (Rast_get_c_row(vel_fd, vel, row) < 0)
-		G_fatal_error("cannot get map row: %d!", row);
+		G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.vel->answer, row);
 	if (parm.dir->answer)
 	    if (Rast_get_c_row(dir_fd, dir, row) < 0)
-		G_fatal_error("cannot get map row: %d!", row);
+		G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.dir->answer, row);
 	if (parm.slope->answer)
 	    if (Rast_get_c_row(slope_fd, slope, row) < 0)
-		G_fatal_error("cannot get map row: %d!", row);
+		G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.slope->answer, row);
 	if (parm.aspect->answer)
 	    if (Rast_get_c_row(aspect_fd, aspect, row) < 0)
-		G_fatal_error("cannot get map row: %d!", row);
+		G_fatal_error(_("Unable to read raster map <%s> row %d"), parm.aspect->answer, row);
 
 	/*initialize cell buffers for output map layers */
 	for (col = 0; col < ncols; col++) {
@@ -920,5 +876,7 @@
        } 
      */
 
+    G_done_msg(_("Raster maps <%s>, <%s> and <%s> created."), name_base, name_max, name_maxdir);
+    
     exit(EXIT_SUCCESS);
 }


Property changes on: grass/trunk/raster/r.ros/main.c
___________________________________________________________________
Deleted: svn:mergeinfo
   - 

Modified: grass/trunk/raster/r.ros/r.ros.html
===================================================================
--- grass/trunk/raster/r.ros/r.ros.html	2009-07-14 21:50:48 UTC (rev 38419)
+++ grass/trunk/raster/r.ros/r.ros.html	2009-07-15 09:13:03 UTC (rev 38420)
@@ -1,6 +1,6 @@
-<H2>DESCRIPTION</H2>
+<h2>DESCRIPTION</h2>
 
-<P><I>r.ros</I> generates the base ROS value, maximum ROS value, direction
+<em>r.ros</em> generates the base ROS value, maximum ROS value, direction
 of the maximum ROS, and optionally the maximum potential spotting distance
 of a wildfire for each raster cell in the current geographic region. The
 calculation of the two ROS values for each raster cell is based on the
@@ -13,150 +13,152 @@
 serve as inputs for another GRASS raster program r.spread. More information
 on r.ros and r.spread can be found in Xu (1994).
 
-<H2>Parameters:</H2>
-<DL>
-<DT><B>model=</B>name
-<DD> Name of an
+<h3>Parameters</h3>
+<dl>
+<dt><b>model</b>
+<dd> Name of an
 existing raster map layer in the user's current mapset search path containing
 the standard fuel models defined by the USDA Forest Service. Valid values
 are 1-13; other numbers are recognized as barriers by r.ros.
 
-<DT><B>moisture_1h=</B>name
-<DD> Name of an existing raster map layer in
-the user's current mapset search path containing the 1-hour (&lt;.25")
+<dt><b>moisture_1h</b>
+<dd> Name of an existing raster map layer in
+the user's current mapset search path containing the 1-hour (&lt;.25&quot;)
 fuel moisture (percentage content multiplied by 100).
 
-<DT><B>moisture_10h=</B>name 
-<DD>Name of an existing raster map layer in the
-user's current mapset search path containing the 10-hour (.25-1") fuel
+<dt><b>moisture_10h</b> 
+<dd>Name of an existing raster map layer in the
+user's current mapset search path containing the 10-hour (.25-1&quot;) fuel
 moisture (percentage content multiplied by 100).
 
-<DT><B>moisture_100h=</B>name
-<DD>Name of an existing raster map layer in the
-user's current mapset search path containing the 100-hour (1-3") fuel moisture
+<dt><b>moisture_100h</b>
+<dd>Name of an existing raster map layer in the
+user's current mapset search path containing the 100-hour (1-3&quot;) fuel moisture
 (percentage content multiplied by 100).
 
-<DT><B>moisture_live=</B>name
-<DD>Name of an existing raster map layer in the
+<dt><b>moisture_live</b>
+<dd>Name of an existing raster map layer in the
 user's current mapset search path containing live (herbaceous) fuel fuel
 moisture (percentage content multiplied by 100).
 
-<DT><B>velocity=</B>name
-<DD>Name of an existing raster map layer in the user's
+<dt><b>velocity</b>
+<dd>Name of an existing raster map layer in the user's
 current mapset search path containing wind velocities at half of the average
 flame height (feet/minute).
 
-<DT><B>direction=</B>name
-<DD>Name of an existing raster map
+<dt><b>direction</b>
+<dd>Name of an existing raster map
 layer in the user's current mapset search path containing wind direction,
 clockwise from north (degree).
 
-<DT><B>slope=</B>name
-<DD>Name of
+<dt><b>slope</b>
+<dd>Name of
 an existing raster map layer in the user's current mapset search path containing
 topographic slope (degree).
 
-<DT><B>aspect=</B>name
-<DD>Name of an existing
+<dt><b>aspect</b>
+<dd>Name of an existing
 raster map layer in the user's current mapset search path containing
 topographic aspect, counter-clockwise from east (GRASS convention)
 (degree).
 
-<DT><B>elevation=</B>name
-<DD>Name of an existing raster map
+<dt><b>elevation</b>
+<dd>Name of an existing raster map
 layer in the user's current mapset search path containing elevation (meters).
 
-<DT><B>output=</B>name
-<DD>Prefix of new
+<dt><b>output</b>
+<dd>Prefix of new
 raster map layers in the user's current mapset to contain
-<BR> 1) the base (perpendicular) ROS
+<br> 1) the base (perpendicular) ROS
 (cm/minute);
-<BR> 2) the maximum (forward) ROS (cm/minute),
-<BR> 3) the direction of the maximum
+<br> 2) the maximum (forward) ROS (cm/minute),
+<br> 3) the direction of the maximum
 ROS, clockwise from north (degree), and optionally
-<BR> 4) the maximum potential
+<br> 4) the maximum potential
 spotting distance (meters).
-<BR>If 'my_ros' is given as the output name, then r.ros automatically
+<br>If 'my_ros' is given as the output name, then r.ros automatically
 assigns 'my_ros.base', 'my_ros.max', 'my_ros.maxdir', and optionally,
 'my_ros.spotdist' as the names for the actual output map layers.
-</DL>
+</dl>
 
-<H2>OPTIONS</H2>
+<h3>OPTIONS</h3>
 
-r.ros can be run either non-interactively or interactively. The program
-is run interactively if the user types r.ros without specifying flag settings
-and parameter values on the command line. In this case, the user will be
-prompted for input. The program will be run non-interactively if the user
-specifies the names of raster map layers and any desired options on the
-command line, using the form:
-<BR> r.ros [-vs] model=name [moisture_1h=name]
-[moisture_10h=name] [moisture_100h=name]
-moisture_live=name [velocity=name] [direction=name]
-[slope=name] [aspect=name] [elevation=name] output=name
-
-<P>If the options <B>moisture_1h=</B>name, <B>moisture_10h=</B>name, and
-<B>moisture_100h=</B>name are partially given, the program will assign
+<P>If the options <b>moisture_1h</b>, <b>moisture_10h</b>, and
+<b>moisture_100h</b> are partially given, the program will assign
 values to the missing option using the formula:
 
-<P>
+<div class="code"><pre>
 moisture_100h = moisture_10h + 1 = moisture_1h + 2.
+</pre></div>
 
-<P>However at least one of them should be given. Options <B>velocity=</B>name
-and <B>direction=</B>name must be in pair, whether given or not. If none
-is given, the program will assume a no-wind condition. Options <B>slope=</B>name
-and <B>aspect=</B>name must be in pair, whether given or not. If none is
-given, the program will assume a topographically flat condition. Option
-<B>elevation=</B>name must be given if -s option is used.
+However at least one of them should be given. Options <b>velocity</b>
+and <b>direction</b> must be in pair, whether given or not. If none is
+given, the program will assume a no-wind
+condition. Options <b>slope</b> and <b>aspect</b> must be in pair,
+whether given or not. If none is given, the program will assume a
+topographically flat condition. Option
+<b>elevation</b> must be given if <b>-s</b> option is used.
 
-<H2>EXAMPLE</H2>
+<h2>EXAMPLES</h2>
 Assume we have inputs, the following generates ROSes and spotting distances:
 
-<P>r.ros -vs model=fire_model moisture_1h=1hour_moisture moisture_live=live_moisture
+<div class="code"><pre>
+r.ros -s model=fire_model moisture_1h=1hour_moisture moisture_live=live_moisture
 velocity=wind_speed direction=wind_direction
 slope=slope aspect=aspect elevation=elevation output=my_ros
+</pre></div>
 
-<H2>NOTES</H2>
-1. r.ros is supposed to be run before running another GRASS program r.spread.
-The combination of the two forms a simulation of the spread of wildfires.
-<BR>2. The inputs to r.ros should be in proper units.
-<BR>3. The output units for the base and maximum ROSes are in cm/minute
-rather than ft/minute, which is due to that a possible zero ft/minute base
-ROS value and a positive integer ft/minute maximum ROS would result in
-calculation failure in the r.spread program.
-<BR>4. The user needs to provide only ONE output name even the program
-actually generates THREE or FOUR map layers.
-<BR>5. The rules for optional parameters must be followed.
+<h2>NOTES</h2>
 
-<H2>SEE ALSO</H2>
+<ol>
+  <li>r.ros is supposed to be run before running another GRASS program r.spread.
+    The combination of the two forms a simulation of the spread of wildfires.
+  <li>The inputs to r.ros should be in proper units.
+  <li>The output units for the base and maximum ROSes are in cm/minute
+    rather than ft/minute, which is due to that a possible zero ft/minute base
+    ROS value and a positive integer ft/minute maximum ROS would result in
+    calculation failure in the r.spread program.
+  <li>The user needs to provide only ONE output name even the program
+    actually generates THREE or FOUR map layers.
+  <li>The rules for optional parameters must be followed.
+</ol>
 
-<EM><A HREF="g.region.html">g.region</A>,
-<!-- <A HREF="r.mask.html"> r.mask,</A> -->
-<A HREF="r.slope.aspect.html">r.slope.aspect</A>,
- <A HREF="r.spread.html">r.spread</A></EM>
+<h2>REFERENCES</h2>
 
-<H2>REFERENCES</H2>
-<B>Albini,</B> F. A., 1976, Computer-based models of wildland fire behavior:
-a user's manual, USDA Forest Service, Intermountain Forest and Range Experiment
-Station, Ogden, Utah.
-<BR><B>Andrews</B>, P. L., 1986, BEHAVE: fire behavior prediction and fuel
-modeling system -- BURN subsystem, Part 1, USDA Forest Service, Intermountain
-Research Station, Gen. Tech. Rep. INT-194, Ogden, Utah.
-<BR><B>Chase</B>, Carolyn, H., 1984, Spotting distance from wind-driven
-surface fires -- extensions of equations for pocket calculators, US Forest
-Service, Res. Note INT-346, Ogden, Utah.
-<BR><B>Lathrop</B>, Richard G. and Jianping Xu, A geographic information
-system-based approach for calculating spotting distance. (in preparation)
-<BR><B>Rothermel</B>, R. E., 1972, A mathematical model for predicting
-fire spread in wildland fuels, USDA Forest Service, Intermountain Forest
-and Range Experiment Station, Res. Pap. INT-115, Ogden, Utah.
-<BR><B>Rothermel</B>, Richard, 1991, Predicting behavior and size of crown
-fires in the northern Rocky Mountains, US Forest Service, Res. Paper INT-438,
-Ogden, Utah.
-<BR><B>Xu</B>, Jianping, 1994, Simulating the spread of wildfires using
-a geographic information system and remote sensing, Ph. D. Dissertation,
-Rutgers University, New Brunswick, New Jersey.
+<ul>
+  <li><b>Albini,</b> F. A., 1976, Computer-based models of wildland fire behavior:
+    a user's manual, USDA Forest Service, Intermountain Forest and Range Experiment
+    Station, Ogden, Utah.
+  <li><b>Andrews</b>, P. L., 1986, BEHAVE: fire behavior prediction and fuel
+    modeling system -- BURN subsystem, Part 1, USDA Forest Service, Intermountain
+    Research Station, Gen. Tech. Rep. INT-194, Ogden, Utah.
+  <li><b>Chase</b>, Carolyn, H., 1984, Spotting distance from wind-driven
+    surface fires -- extensions of equations for pocket calculators, US Forest
+    Service, Res. Note INT-346, Ogden, Utah.
+  <li><b>Lathrop</b>, Richard G. and Jianping Xu, A geographic information
+    system-based approach for calculating spotting distance. (in preparation)
+  <li><b>Rothermel</b>, R. E., 1972, A mathematical model for predicting
+    fire spread in wildland fuels, USDA Forest Service, Intermountain Forest
+    and Range Experiment Station, Res. Pap. INT-115, Ogden, Utah.
+  <li><b>Rothermel</b>, Richard, 1991, Predicting behavior and size of crown
+    fires in the northern Rocky Mountains, US Forest Service, Res. Paper INT-438,
+    Ogden, Utah.
+  <li><b>Xu</b>, Jianping, 1994, Simulating the spread of wildfires using
+    a geographic information system and remote sensing, Ph. D. Dissertation,
+    Rutgers University, New Brunswick, New Jersey.
+</ul>
 
-<H2> AUTHOR</H2>
+<h2>SEE ALSO</h2>
+
+<em>
+  <a href="g.region.html">g.region</a>,
+  <a href="r.slope.aspect.html">r.slope.aspect</a>,
+  <a href="r.spread.html">r.spread</a>
+</em>
+
+<h2> AUTHOR</h2>
+
 Jianping Xu, Center for Remote Sensing and Spatial Analysis, Rutgers University.
 
-<p><i>Last changed: $Date$</i>
+<p>
+<i>Last changed: $Date$</i>


Property changes on: grass/trunk/raster/r.ros/r.ros.html
___________________________________________________________________
Deleted: svn:mergeinfo
   - 


Property changes on: grass/trunk/raster/r.ros/spot_dist.c
___________________________________________________________________
Deleted: svn:mergeinfo
   - 



More information about the grass-commit mailing list