[GRASS-SVN] r64048 - in grass/branches/releasebranch_7_0: . raster/r.spread

svn_grass at osgeo.org svn_grass at osgeo.org
Sat Jan 10 12:25:47 PST 2015


Author: wenzeslaus
Date: 2015-01-10 12:25:47 -0800 (Sat, 10 Jan 2015)
New Revision: 64048

Modified:
   grass/branches/releasebranch_7_0/
   grass/branches/releasebranch_7_0/raster/r.spread/collect_ori.c
   grass/branches/releasebranch_7_0/raster/r.spread/local_proto.h
   grass/branches/releasebranch_7_0/raster/r.spread/main.c
Log:
r.spread: add a flag (-i) to use start raster map values instead of init time (backport of r60922)


Property changes on: grass/branches/releasebranch_7_0
___________________________________________________________________
Modified: svn:mergeinfo
   - /grass/trunk:60497,60563-60566,60817,60976,61046,61096,61141,61994,62085,62105,62179-62180,62182,62190,62403,62422,62424,62429,62437,62466,62469,62484,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,63053,63055,63057,
 63060,63062-63064,63066,63068,63070-63071,63074,63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63369,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63461,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63610,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691,63693,63695,63698,63700
 -63702,63704,63706-63707,63709,63711,63713,63715,63717-63718,63721-63727,63731,63733,63736,63740-63742,63744-63749,63751-63752,63756,63758,63760-63761,63767,63777,63780,63783,63787,63793,63796-63798,63801,63803,63807-63808,63812,63814,63816,63821,63823-63824,63827-63828,63830-63831,63834-63835,63837-63839,63841,63843-63844,63846-63847,63849,63851,63853,63855-63856,63858-63859,63862,63865,63869,63871,63882,63884,63889-63890,63892-63895,63897-63898,63900,63902-63903,63905,63907,63909-63911,63913-63914,63927,63930-63931,63940-63941,63945,63954-63955,63960,63965,63967,63976-63983,63995,64026,64030,64040
   + /grass/trunk:60497,60563-60566,60817,60922,60976,61046,61096,61141,61994,62085,62105,62179-62180,62182,62190,62403,62422,62424,62429,62437,62466,62469,62484,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,63053,63055,
 63057,63060,63062-63064,63066,63068,63070-63071,63074,63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63369,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63461,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63610,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691,63693,63695,63698
 ,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718,63721-63727,63731,63733,63736,63740-63742,63744-63749,63751-63752,63756,63758,63760-63761,63767,63777,63780,63783,63787,63793,63796-63798,63801,63803,63807-63808,63812,63814,63816,63821,63823-63824,63827-63828,63830-63831,63834-63835,63837-63839,63841,63843-63844,63846-63847,63849,63851,63853,63855-63856,63858-63859,63862,63865,63869,63871,63882,63884,63889-63890,63892-63895,63897-63898,63900,63902-63903,63905,63907,63909-63911,63913-63914,63927,63930-63931,63940-63941,63945,63954-63955,63960,63965,63967,63976-63983,63995,64026,64030,64040

Modified: grass/branches/releasebranch_7_0/raster/r.spread/collect_ori.c
===================================================================
--- grass/branches/releasebranch_7_0/raster/r.spread/collect_ori.c	2015-01-10 18:32:32 UTC (rev 64047)
+++ grass/branches/releasebranch_7_0/raster/r.spread/collect_ori.c	2015-01-10 20:25:47 UTC (rev 64048)
@@ -43,7 +43,13 @@
 int x_out;
 int y_out;
 
-void collect_ori(int start_fd)
+/**
+ * \param start_fd start raster map
+ * \param start_is_time 1 if start map values should be used instead of init_time
+ *
+ * Other variables passed as global variables.
+ */
+void collect_ori(int start_fd, int start_is_time)
 {
     extern CELL *cell;
     extern CELL *map_base, *map_x_out, *map_y_out, *map_visit;
@@ -70,7 +76,11 @@
 		    continue;
 		}
 
-		DATA(map_out, row, col) = (float)init_time;
+		if (start_is_time)
+		    /* here we ignore the issue with null value if any */
+		    DATA(map_out, row, col) = cell[col];
+		else
+		    DATA(map_out, row, col) = (float)init_time;
 		insertHa((float)init_time, zero, row, col, heap, &heap_len);
 		/*mark it to avoid redundant computing */
 		DATA(map_visit, row, col) = 1;

Modified: grass/branches/releasebranch_7_0/raster/r.spread/local_proto.h
===================================================================
--- grass/branches/releasebranch_7_0/raster/r.spread/local_proto.h	2015-01-10 18:32:32 UTC (rev 64047)
+++ grass/branches/releasebranch_7_0/raster/r.spread/local_proto.h	2015-01-10 20:25:47 UTC (rev 64048)
@@ -1,7 +1,7 @@
 #include "cell_ptrHa.h"
 #include "costHa.h"
 /* collect_ori.c */
-void collect_ori(int);
+void collect_ori(int, int);
 
 /* deleteHa.c */
 void deleteHa(float, int, int, struct costHa *, long *);

Modified: grass/branches/releasebranch_7_0/raster/r.spread/main.c
===================================================================
--- grass/branches/releasebranch_7_0/raster/r.spread/main.c	2015-01-10 18:32:32 UTC (rev 64047)
+++ grass/branches/releasebranch_7_0/raster/r.spread/main.c	2015-01-10 20:25:47 UTC (rev 64048)
@@ -40,7 +40,6 @@
 
 #define DATA(map, r, c)		(map)[(r) * ncols + (c)]
 
-CELL range_min, range_max;
 CELL *cell;
 CELL *x_cell;
 CELL *y_cell;
@@ -70,7 +69,6 @@
 long heap_len;
 
 struct Cell_head window;
-struct Range range;
 
 struct costHa *heap;
 
@@ -79,6 +77,11 @@
 {
     int col, row;
 
+    /* to menage start (source) raster map */
+    struct Range start_range;
+    CELL start_range_min, start_range_max;
+    int start_is_time;  /* 0 or 1 */
+
     struct
     {
 	struct Option *max, *dir, *base, *start,
@@ -88,8 +91,8 @@
     } parm;
     struct
     {
-	/* please, remove before GRASS 7 released */
-	struct Flag *display, *spotting;
+	/* please, remove display before GRASS 7 released */
+	struct Flag *display, *spotting, *start_is_time;
     } flag;
     struct GModule *module;
 
@@ -307,7 +310,7 @@
     flag.display->key = 'd';
     flag.display->label = _("DISPLAY 'live' spread process on screen");
     flag.display->description =
-	_("Display the "live" simulation on screen. A graphics window "
+	_("Display the 'live' simulation on screen. A graphics window "
 	  "must be opened and selected before using this option.");
 #endif
 
@@ -315,6 +318,17 @@
     flag.spotting->key = 's';
     flag.spotting->description = _("Consider spotting effect (for wildfires)");
 
+    flag.start_is_time = G_define_flag();
+    flag.start_is_time->key = 'i';
+    flag.start_is_time->label = _("Use start raster map values in"
+	" output spread time raster map");
+    flag.start_is_time->description = _("Designed to be used with output"
+	" of previous run of r.spread when computing spread iteratively."
+	" The values in start raster map are considered as time."
+	" Allowed values in raster map are from zero"
+	" to the value of init_time option."
+	" If not enabled, init_time is used in the area of start raster map");
+
     /*   Parse command line */
     if (G_parser(argc, argv))
 	exit(EXIT_FAILURE);
@@ -518,9 +532,20 @@
 
     start_fd = Rast_open_old(start_layer, G_find_raster2(start_layer, ""));
 
-    Rast_read_range(start_layer, G_find_file("cell", start_layer, ""), &range);
-    Rast_get_range_min_max(&range, &range_min, &range_max);
+    Rast_read_range(start_layer, G_find_file("cell", start_layer, ""),
+		    &start_range);
+    Rast_get_range_min_max(&start_range, &start_range_min, &start_range_max);
 
+    start_is_time = flag.start_is_time->answer;
+    /* values higher than init_time are unexpected and may cause segfaults */
+    if (start_is_time && start_range_max > init_time)
+	G_fatal_error(_("Maximum of start raster map is grater than init_time"
+			" (%d > %d)"), start_range_max, init_time);
+    /* values lower then zero does not make sense for time */
+    if (start_is_time && start_range_min < 0)
+	G_fatal_error(_("Minimum of start raster map is less than zero"
+			" (%d < 0)"), start_range_min, init_time);
+
     /*  Initialize the heap  */
     heap =
 	(struct costHa *)G_calloc(nrows * ncols + 1, sizeof(struct costHa));
@@ -528,7 +553,7 @@
 
     G_message(_("Reading %s..."), start_layer);
     G_debug(1, "Collecting origins...");
-    collect_ori(start_fd);
+    collect_ori(start_fd, start_is_time);
     G_debug(1, "Done");
 
 



More information about the grass-commit mailing list