[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 (<.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 (<.25")
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") 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") 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