[GRASS-SVN] r34612 - in
grass/branches/develbranch_6/raster/r.watershed2: . ram seg
svn_grass at osgeo.org
svn_grass at osgeo.org
Fri Nov 28 21:11:14 EST 2008
Author: hamish
Date: 2008-11-28 21:11:14 -0500 (Fri, 28 Nov 2008)
New Revision: 34612
Modified:
grass/branches/develbranch_6/raster/r.watershed2/README
grass/branches/develbranch_6/raster/r.watershed2/ram/close_maps2.c
grass/branches/develbranch_6/raster/r.watershed2/ram/find_pour.c
grass/branches/develbranch_6/raster/r.watershed2/ram/flag.h
grass/branches/develbranch_6/raster/r.watershed2/ram/init_vars.c
grass/branches/develbranch_6/raster/r.watershed2/ram/ramseg.h
grass/branches/develbranch_6/raster/r.watershed2/seg/Gwater.h
grass/branches/develbranch_6/raster/r.watershed2/seg/close_maps2.c
grass/branches/develbranch_6/raster/r.watershed2/seg/cseg.h
grass/branches/develbranch_6/raster/r.watershed2/seg/find_pour.c
grass/branches/develbranch_6/raster/r.watershed2/seg/init_vars.c
Log:
minimize diffs with r.w1, merge in changes to r.w1 since r.w2 was forked
Modified: grass/branches/develbranch_6/raster/r.watershed2/README
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/README 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/README 2008-11-29 02:11:14 UTC (rev 34612)
@@ -5,28 +5,8 @@
Implemented is a new sorting algorithm for both the ram and the
segmented version, resulting in significant speed improvements,
with identical results.
-
- The following procedure assumes that GRASS was compiled from source
- and that the configured source tree is available.
- To compile and install the test version of r.watershed for GRASS,
-
- 1) copy the directory <r.watershed2> into the directory
- <raster> of the GRASS souorce tree
-
- 2) edit <Makefile> in directory <raster>
- add the line
- r.watershed2 \
- e.g. after
- r.watershed \
-
- 3) change to directory <r.watershed2>
- run make
-
- 4) optionally change to GRASS source directory, something like
- grass-6.4.svn
- run as su
- make install
-
+
+
Testing
=======
@@ -37,6 +17,7 @@
version, but the new segmented version is already much faster than
the original ram version. A new option is available for the segmented
mode specifying the maximum amount of memory to be used in MB.
+
Set up a watershed analysis with the original version, run it.
The command will have been r.watershed <options>
To test, use the same input options, but different output maps
@@ -46,5 +27,3 @@
If you find critical differences between the original and the fast version,
please let me know at
markus.metz.giswork at gmail.com
-
-
Modified: grass/branches/develbranch_6/raster/r.watershed2/ram/close_maps2.c
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/ram/close_maps2.c 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/ram/close_maps2.c 2008-11-29 02:11:14 UTC (rev 34612)
@@ -47,6 +47,8 @@
flag = 1;
while (flag) {
G_get_color(r, &red, &green, &blue, &colors);
+ /* if existing rule is too dark then append a new
+ rule to override it */
if ((blue * .11 + red * .30 + green * .59) <
100) {
G_set_color(r, rd, gr, bl, &colors);
@@ -75,7 +77,8 @@
}
else
G_debug(1,
- "Too many subbasins to reasonably check neighboring color spread");
+ "Too many subbasins to reasonably check for color brightness");
+ /* using the existing method ... */
}
/* stream segments map */
Modified: grass/branches/develbranch_6/raster/r.watershed2/ram/find_pour.c
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/ram/find_pour.c 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/ram/find_pour.c 2008-11-29 02:11:14 UTC (rev 34612)
@@ -8,7 +8,7 @@
basin_num = 0;
for (row = 0; row < nrows; row++) {
- G_percent(row, nrows, 1);
+ G_percent(row, nrows, 3);
northing = window.north - (row + .5) * window.ns_res;
for (col = 0; col < ncols; col++) {
value = FLAG_GET(swale, row, col);
Modified: grass/branches/develbranch_6/raster/r.watershed2/ram/flag.h
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/ram/flag.h 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/ram/flag.h 2008-11-29 02:11:14 UTC (rev 34612)
@@ -3,53 +3,52 @@
/* flag.[ch] is a set of routines which will set up an array of bits
-** that allow the programmer to "flag" cells in a raster map.
-**
-** FLAG *
-** flag_create(nrows,ncols)
-** int nrows, ncols;
-** opens the structure flag.
-** The flag structure will be a two dimensional array of bits the
-** size of nrows by ncols. Will initalize flags to zero (unset).
-**
-** flag_destroy(flags)
-** FLAG *flags;
-** closes flags and gives the memory back to the system.
-**
-** flag_clear_all(flags)
-** FLAG *flags;
-** sets all values in flags to zero.
-**
-** flag_unset(flags, row, col)
-** FLAG *flags;
-** int row, col;
-** sets the value of (row, col) in flags to zero.
-**
-** flag_set(flags, row, col)
-** FLAG *flags;
-** int row, col;
-** will set the value of (row, col) in flags to one.
-**
-** int
-** flag_get(flags, row, col)
-** FLAG *flags;
-** int row, col;
-** returns the value in flags that is at (row, col).
-**
-** idea by Michael Shapiro
-** code by Chuck Ehlschlaeger
-** April 03, 1989
-*/
+ ** that allow the programmer to "flag" cells in a raster map.
+ **
+ ** FLAG *
+ ** flag_create(nrows,ncols)
+ ** int nrows, ncols;
+ ** opens the structure flag.
+ ** The flag structure will be a two dimensional array of bits the
+ ** size of nrows by ncols. Will initalize flags to zero (unset).
+ **
+ ** flag_destroy(flags)
+ ** FLAG *flags;
+ ** closes flags and gives the memory back to the system.
+ **
+ ** flag_clear_all(flags)
+ ** FLAG *flags;
+ ** sets all values in flags to zero.
+ **
+ ** flag_unset(flags, row, col)
+ ** FLAG *flags;
+ ** int row, col;
+ ** sets the value of (row, col) in flags to zero.
+ **
+ ** flag_set(flags, row, col)
+ ** FLAG *flags;
+ ** int row, col;
+ ** will set the value of (row, col) in flags to one.
+ **
+ ** int
+ ** flag_get(flags, row, col)
+ ** FLAG *flags;
+ ** int row, col;
+ ** returns the value in flags that is at (row, col).
+ **
+ ** idea by Michael Shapiro
+ ** code by Chuck Ehlschlaeger
+ ** April 03, 1989
+ */
#define FLAG struct _flagsss_
-FLAG
-{
- int nrows, ncols, leng;
- unsigned char **array;
+FLAG {
+ int nrows, ncols, leng;
+ unsigned char **array;
};
#define FLAG_UNSET(flags,row,col) \
(flags)->array[(row)][(col)>>3] &= ~(1<<((col) & 7))
-
+
#define FLAG_SET(flags,row,col) \
(flags)->array[(row)][(col)>>3] |= (1<<((col) & 7))
@@ -58,14 +57,19 @@
/* flag_clr_all.c */
int flag_clear_all(FLAG *);
+
/* flag_create.c */
FLAG *flag_create(int, int);
+
/* flag_destroy.c */
int flag_destroy(FLAG *);
+
/* flag_get.c */
int flag_get(FLAG *, int, int);
+
/* flag_set.c */
int flag_set(FLAG *, int, int);
+
/* flag_unset.c */
int flag_unset(FLAG *, int, int);
Modified: grass/branches/develbranch_6/raster/r.watershed2/ram/init_vars.c
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/ram/init_vars.c 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/ram/init_vars.c 2008-11-29 02:11:14 UTC (rev 34612)
@@ -170,8 +170,7 @@
wat[SEG_INDEX(wat_seg, r, c)] = 1;
}
}
- asp =
- (CELL *) G_malloc(size_array(&asp_seg, nrows, ncols) * sizeof(CELL));
+ asp = (CELL *) G_malloc(size_array(&asp_seg, nrows, ncols) * sizeof(CELL));
if (pit_flag) {
pit_mapset = do_exist(pit_name);
@@ -393,7 +392,7 @@
int do_legal(char *file_name)
{
if (G_legal_filename(file_name) == -1)
- G_fatal_error(_("map layer [%s] not legal for GRASS"), file_name);
+ G_fatal_error(_("<%s> is an illegal file name"), file_name);
return 0;
}
@@ -403,7 +402,7 @@
char *file_mapset = G_find_cell2(file_name, "");
if (file_mapset == NULL)
- G_fatal_error(_("[%s] map not found."), file_name);
+ G_fatal_error(_("Raster map <%s> not found"), file_name);
return (file_mapset);
}
Modified: grass/branches/develbranch_6/raster/r.watershed2/ram/ramseg.h
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/ram/ramseg.h 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/ram/ramseg.h 2008-11-29 02:11:14 UTC (rev 34612)
@@ -4,8 +4,8 @@
#define RAMSEG int
#define RAMSEGBITS 4
-#define DOUBLEBITS 8 /* 2 * ramsegbits */
-#define SEGLENLESS 15 /* 2 ^ ramsegbits - 1 */
+#define DOUBLEBITS 8 /* 2 * ramsegbits */
+#define SEGLENLESS 15 /* 2 ^ ramsegbits - 1 */
#define SEG_INDEX(s,r,c) (int) \
(((((r) >> RAMSEGBITS) * (s) + ((c) >> RAMSEGBITS)) << DOUBLEBITS) \
Modified: grass/branches/develbranch_6/raster/r.watershed2/seg/Gwater.h
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/seg/Gwater.h 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/seg/Gwater.h 2008-11-29 02:11:14 UTC (rev 34612)
@@ -3,9 +3,9 @@
/* program to map out drainage basin structure */
-/* this one uses the A * search algorithm */
-/* written by Chuck Ehlschlaeger */
-/* last modified 03/26/91 */
+/* this one uses the A * search algorithm */
+/* written by Chuck Ehlschlaeger */
+/* last modified 03/26/91 */
#include <math.h>
#include <grass/gis.h>
#include "cseg.h"
@@ -30,10 +30,9 @@
#define TST(a) (fprintf (stderr, "%e\n", (double) (a)))
#define POINT struct points
-POINT
-{
- SHORT r, c, downr, downc;
- int nxt;
+POINT {
+ SHORT r, c, downr, downc;
+ int nxt;
};
#ifdef MAIN
@@ -51,78 +50,95 @@
#endif
#define HEAP struct heap_item
-HEAP
-{
+HEAP {
int point;
CELL ele;
};
-GLOBAL struct Cell_head window;
+GLOBAL struct Cell_head window;
-GLOBAL SSEG heap_index;
-GLOBAL int heap_size;
-GLOBAL int first_astar, first_cum, nxt_avail_pt, total_cells, do_points;
-GLOBAL SHORT nrows, ncols;
-GLOBAL double half_res, diag, max_length, dep_slope;
-GLOBAL int bas_thres, tot_parts;
-GLOBAL SSEG astar_pts;
-GLOBAL BSEG worked, in_list, s_b, swale;
-GLOBAL CSEG dis, alt, wat, asp, bas, haf, r_h, dep;
-GLOBAL DSEG slp, s_l, s_g, l_s, ril;
-GLOBAL CELL one, zero;
-GLOBAL double ril_value, dzero;
-GLOBAL SHORT sides;
-GLOBAL SHORT drain[3][3] DRAINVAR;
-GLOBAL SHORT updrain[3][3] UPDRAINVAR;
-GLOBAL SHORT nextdr[8] NEXTDRVAR;
-GLOBAL SHORT nextdc[8] NEXTDCVAR;
-GLOBAL char ele_name[GNAME_MAX], *ele_mapset, pit_name[GNAME_MAX], *pit_mapset;
-GLOBAL char run_name[GNAME_MAX], *run_mapset, ob_name[GNAME_MAX], *ob_mapset;
-GLOBAL char ril_name[GNAME_MAX], *ril_mapset, dep_name[GNAME_MAX], *dep_mapset;
+GLOBAL SSEG heap_index;
+GLOBAL int heap_size;
+GLOBAL int first_astar, first_cum, nxt_avail_pt, total_cells, do_points;
+GLOBAL SHORT nrows, ncols;
+GLOBAL double half_res, diag, max_length, dep_slope;
+GLOBAL int bas_thres, tot_parts;
+GLOBAL SSEG astar_pts;
+GLOBAL BSEG worked, in_list, s_b, swale;
+GLOBAL CSEG dis, alt, wat, asp, bas, haf, r_h, dep;
+GLOBAL DSEG slp, s_l, s_g, l_s, ril;
+GLOBAL CELL one, zero;
+GLOBAL double ril_value, dzero;
+GLOBAL SHORT sides;
+GLOBAL SHORT drain[3][3] DRAINVAR;
+GLOBAL SHORT updrain[3][3] UPDRAINVAR;
+GLOBAL SHORT nextdr[8] NEXTDRVAR;
+GLOBAL SHORT nextdc[8] NEXTDCVAR;
+GLOBAL char ele_name[GNAME_MAX], *ele_mapset, pit_name[GNAME_MAX],
+ *pit_mapset;
+GLOBAL char run_name[GNAME_MAX], *run_mapset, ob_name[GNAME_MAX], *ob_mapset;
+GLOBAL char ril_name[GNAME_MAX], *ril_mapset, dep_name[GNAME_MAX],
+ *dep_mapset;
-GLOBAL char *this_mapset;
-GLOBAL char seg_name[GNAME_MAX], bas_name[GNAME_MAX], haf_name[GNAME_MAX], thr_name[8];
-GLOBAL char ls_name[GNAME_MAX], st_name[GNAME_MAX], sl_name[GNAME_MAX], sg_name[GNAME_MAX];
-GLOBAL char wat_name[GNAME_MAX], asp_name[GNAME_MAX], arm_name[GNAME_MAX], dis_name[GNAME_MAX];
-GLOBAL char ele_flag, pit_flag, run_flag, dis_flag, ob_flag;
-GLOBAL char wat_flag, asp_flag, arm_flag, ril_flag, dep_flag;
-GLOBAL char bas_flag, seg_flag, haf_flag, er_flag;
-GLOBAL char st_flag, sb_flag, sg_flag, sl_flag, ls_flag;
-GLOBAL FILE *fp;
+GLOBAL char *this_mapset;
+GLOBAL char seg_name[GNAME_MAX], bas_name[GNAME_MAX], haf_name[GNAME_MAX],
+ thr_name[8];
+GLOBAL char ls_name[GNAME_MAX], st_name[GNAME_MAX], sl_name[GNAME_MAX],
+ sg_name[GNAME_MAX];
+GLOBAL char wat_name[GNAME_MAX], asp_name[GNAME_MAX], arm_name[GNAME_MAX],
+ dis_name[GNAME_MAX];
+GLOBAL char ele_flag, pit_flag, run_flag, dis_flag, ob_flag;
+GLOBAL char wat_flag, asp_flag, arm_flag, ril_flag, dep_flag;
+GLOBAL char bas_flag, seg_flag, haf_flag, er_flag;
+GLOBAL char st_flag, sb_flag, sg_flag, sl_flag, ls_flag;
+GLOBAL FILE *fp;
/* close_maps.c */
int close_maps(void);
+
/* close_maps2.c */
int close_array_seg(void);
+
/* def_basin.c */
CELL def_basin(int, int, CELL, double, CELL);
+
/* do_astar.c */
int do_astar(void);
int add_pt(SHORT, SHORT, SHORT, SHORT, CELL, CELL);
int drop_pt(void);
double get_slope(SHORT, SHORT, SHORT, SHORT, CELL, CELL);
int replace(SHORT, SHORT, SHORT, SHORT);
+
/* do_cum.c */
int do_cum(void);
+
/* find_pour.c */
int find_pourpts(void);
+
/* haf_side.c */
int haf_basin_side(SHORT, SHORT, SHORT);
+
/* init_vars.c */
int init_vars(int, char *[]);
int do_legal(char *);
char *do_exist(char *);
+
/* no_stream.c */
int no_stream(int, int, CELL, double, CELL);
+
/* over_cells.c */
int overland_cells(int, int, CELL, CELL, CELL *);
+
/* sg_factor.c */
int sg_factor(void);
int len_slp_equ(double, double, double, int, int);
+
/* slope_len.c */
int slope_length(SHORT, SHORT, SHORT, SHORT);
+
/* split_str.c */
-CELL split_stream(int, int, int [], int [], int, CELL, double, CELL);
+CELL split_stream(int, int, int[], int[], int, CELL, double, CELL);
+
/* usage.c */
void usage(char *);
Modified: grass/branches/develbranch_6/raster/r.watershed2/seg/close_maps2.c
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/seg/close_maps2.c 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/seg/close_maps2.c 2008-11-29 02:11:14 UTC (rev 34612)
@@ -40,6 +40,8 @@
flag = 1;
while (flag) {
G_get_color(r, &red, &green, &blue, &colors);
+ /* if existing rule is too dark then append a new
+ rule to override it */
if ((blue * .11 + red * .30 + green * .59) <
100) {
G_set_color(r, rd, gr, bl, &colors);
@@ -64,7 +66,8 @@
}
else
G_debug(1,
- "Too many subbasins to reasonably check neighboring color spread");
+ "Too many subbasins to reasonably check for color brightness");
+ /* using the existing method ... */
}
/* stream segments map */
Modified: grass/branches/develbranch_6/raster/r.watershed2/seg/cseg.h
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/seg/cseg.h 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/seg/cseg.h 2008-11-29 02:11:14 UTC (rev 34612)
@@ -5,92 +5,114 @@
#include <grass/segment.h>
#define CSEG struct _c_s_e_g_
-CSEG
-{
- SEGMENT seg; /* segment structure */
- int fd; /* fd for reading/writing segment file */
- char *filename; /* name of segment file */
- char *name; /* raster map read into segment file */
- char *mapset;
-} ;
+CSEG {
+ SEGMENT seg; /* segment structure */
+ int fd; /* fd for reading/writing segment file */
+ char *filename; /* name of segment file */
+ char *name; /* raster map read into segment file */
+ char *mapset;
+};
#define DSEG struct _d_s_e_g_
-DSEG
-{
- SEGMENT seg; /* segment structure */
- int fd; /* fd for reading/writing segment file */
- char *filename; /* name of segment file */
- char *name; /* raster map read into segment file */
- char *mapset;
-} ;
+DSEG {
+ SEGMENT seg; /* segment structure */
+ int fd; /* fd for reading/writing segment file */
+ char *filename; /* name of segment file */
+ char *name; /* raster map read into segment file */
+ char *mapset;
+};
#define BSEG struct _b_s_e_g_
-BSEG
-{
- SEGMENT seg; /* segment structure */
- int fd; /* fd for reading/writing segment file */
- char *filename; /* name of segment file */
- char *name; /* raster map read into segment file */
- char *mapset;
-} ;
+BSEG {
+ SEGMENT seg; /* segment structure */
+ int fd; /* fd for reading/writing segment file */
+ char *filename; /* name of segment file */
+ char *name; /* raster map read into segment file */
+ char *mapset;
+};
#define SSEG struct _s_s_e_g_
-SSEG
-{
- SEGMENT seg; /* segment structure */
- int fd; /* fd for reading/writing segment file */
- char *filename; /* name of segment file */
-} ;
+SSEG {
+ SEGMENT seg; /* segment structure */
+ int fd; /* fd for reading/writing segment file */
+ char *filename; /* name of segment file */
+};
+
/* bseg_close.c */
int bseg_close(BSEG *);
+
/* bseg_get.c */
int bseg_get(BSEG *, CELL *, int, int);
+
/* bseg_open.c */
int bseg_open(BSEG *, int, int, int);
+
/* bseg_put.c */
int bseg_put(BSEG *, CELL *, int, int);
+
/* bseg_read.c */
int bseg_read_cell(BSEG *, char *, char *);
+
/* bseg_write.c */
int bseg_write_cellfile(BSEG *, char *);
+
/* cseg_close.c */
int cseg_close(CSEG *);
+
/* cseg_get.c */
int cseg_get(CSEG *, CELL *, int, int);
+
/* cseg_open.c */
int cseg_open(CSEG *, int, int, int);
+
/* cseg_put.c */
int cseg_put(CSEG *, CELL *, int, int);
+
/* cseg_read.c */
int cseg_read_cell(CSEG *, char *, char *);
+
/* cseg_write.c */
int cseg_write_cellfile(CSEG *, char *);
+
/* dseg_close.c */
int dseg_close(DSEG *);
+
/* dseg_get.c */
int dseg_get(DSEG *, double *, int, int);
+
/* dseg_open.c */
int dseg_open(DSEG *, int, int, int);
+
/* dseg_put.c */
int dseg_put(DSEG *, double *, int, int);
+
/* dseg_read.c */
int dseg_read_cell(DSEG *, char *, char *);
+
/* dseg_write.c */
int dseg_write_cellfile(DSEG *, char *);
+
/* seg_close.c */
int seg_close(SSEG *);
+
/* seg_get.c */
int seg_get(SSEG *, char *, int, int);
+
/* seg_open.c */
int seg_open(SSEG *, int, int, int, int, int, int);
+
/* seg_put.c */
int seg_put(SSEG *, char *, int, int);
+
/* sseg_close.c */
int seg_close(SSEG *);
+
/* sseg_get.c */
int seg_get(SSEG *, char *, int, int);
+
/* sseg_open.c */
int seg_open(SSEG *, int, int, int, int, int, int);
+
/* sseg_put.c */
int seg_put(SSEG *, char *, int, int);
Modified: grass/branches/develbranch_6/raster/r.watershed2/seg/find_pour.c
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/seg/find_pour.c 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/seg/find_pour.c 2008-11-29 02:11:14 UTC (rev 34612)
@@ -8,7 +8,7 @@
basin_num = 0;
for (row = 0; row < nrows; row++) {
- G_percent(row, nrows, 1);
+ G_percent(row, nrows, 3);
northing = window.north - (row + .5) * window.ns_res;
for (col = 0; col < ncols; col++) {
/* cseg_get (&wat, &value, row, col);
Modified: grass/branches/develbranch_6/raster/r.watershed2/seg/init_vars.c
===================================================================
--- grass/branches/develbranch_6/raster/r.watershed2/seg/init_vars.c 2008-11-29 02:02:24 UTC (rev 34611)
+++ grass/branches/develbranch_6/raster/r.watershed2/seg/init_vars.c 2008-11-29 02:11:14 UTC (rev 34612)
@@ -225,7 +225,7 @@
if (NULL != G_find_file("cell", "MASK", G_mapset())) {
MASK_flag = 1;
if ((fd = G_open_cell_old("MASK", G_mapset())) < 0) {
- G_fatal_error(_("unable to open MASK"));
+ G_fatal_error(_("Unable to open MASK"));
}
else {
buf = G_allocate_cell_buf();
@@ -450,7 +450,7 @@
int do_legal(char *file_name)
{
if (G_legal_filename(file_name) == -1)
- G_fatal_error(_("map layer [%s] not legal for GRASS"), file_name);
+ G_fatal_error(_("<%s> is an illegal file name"), file_name);
return 0;
}
@@ -460,7 +460,7 @@
char *file_mapset = G_find_cell2(file_name, "");
if (file_mapset == NULL)
- G_fatal_error(_("[%s] map not found"), file_name);
+ G_fatal_error(_("Raster map <%s> not found"), file_name);
return (file_mapset);
}
More information about the grass-commit
mailing list