[GRASS5] PATCH: i.gensig

Brad Douglas rez at touchofmadness.com
Thu Jul 21 17:23:05 EDT 2005


I need to clean up some old cruft I had not already committed to
generate a clean, uncluttered patch for the tempfile issues.

Any objections to the attached patch?  Just some benign updates to
i.gensig to do with message output and localization.


-- 
Brad Douglas <rez at touchofmadness.com>
-------------- next part --------------
? imagery/i.gensig/OBJ.x86_64-unknown-linux-gnu
Index: imagery/i.gensig/check.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/check.c,v
retrieving revision 2.0
diff -u -r2.0 check.c
--- imagery/i.gensig/check.c	9 Nov 2004 12:55:04 -0000	2.0
+++ imagery/i.gensig/check.c	21 Jul 2005 21:18:31 -0000
@@ -1,6 +1,9 @@
 #include "imagery.h"
+#include "glocale.h"
 #include "signature.h"
 #include "local_proto.h"
+
+
 int 
 check_signatures (struct Signature *S)
 {
@@ -18,14 +21,14 @@
 	if (!can_invert(temp.sig[0].var, S->nbands))
 	{
 	    S->sig[i].status = -1;
-	    fprintf (stderr, "Signature %d not invertible\n", i+1);
+	    G_message(_("Signature [%d] not invertible,"), i+1);
 	    continue;
 	}
 	copy_covariances (temp.sig[0].var, S->sig[i].var, S->nbands);
 	if (!eigen(temp.sig[0].var, lambda, S->nbands))
 	{
 	    S->sig[i].status = -1;
-	    fprintf (stderr, "Signature %d can't get eigen values\n", i+1);
+	    G_message(_("Signature [%d] can't get eigen values."), i+1);
 	    continue;
 	}
 	for (j = 0; j < S->nbands; j++)
@@ -33,7 +36,7 @@
 	    if (lambda[j] <= 0.0)
 	    {
 		S->sig[i].status = -1;
-		fprintf (stderr, "Signature %d not positive definite\n", i+1);
+		G_message(_("Signature [%d] not positive definite."), i+1);
 		break;
 	    }
 	}
Index: imagery/i.gensig/covariance.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/covariance.c,v
retrieving revision 2.1
diff -u -r2.1 covariance.c
--- imagery/i.gensig/covariance.c	13 Jul 2005 15:22:44 -0000	2.1
+++ imagery/i.gensig/covariance.c	21 Jul 2005 21:18:31 -0000
@@ -1,9 +1,11 @@
 #include <stdlib.h>
 #include "imagery.h"
+#include "glocale.h"
 #include "signature.h"
 #include "files.h"
 #include "local_proto.h"
 
+
 /* must be called after compute_means() */
 int compute_covariances (struct files *files, struct Signature *S)
 {
@@ -21,7 +23,8 @@
     ncols = G_window_cols();
     class    = (CELL *) G_calloc (ncols, sizeof(CELL));
 
-    fprintf (stderr, "Calculating class covariance matri%s ...", S->nsigs==1?"x":"ces");
+    G_message(_("Calculating class covariance matri%s ..."), 
+              S->nsigs==1 ? "x" : "ces");
 
     for (row = 0; row < nrows; row++)
     {
Index: imagery/i.gensig/get_train.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/get_train.c,v
retrieving revision 2.1
diff -u -r2.1 get_train.c
--- imagery/i.gensig/get_train.c	13 Jul 2005 15:22:44 -0000	2.1
+++ imagery/i.gensig/get_train.c	21 Jul 2005 21:18:31 -0000
@@ -1,8 +1,10 @@
 #include <stdlib.h>
 #include "imagery.h"
+#include "glocale.h"
 #include "signature.h"
 #include "files.h"
 
+
 int get_training_classes (struct files *files, struct Signature *S)
 {
     int fd;
@@ -23,11 +25,12 @@
 /* determine the categories in the map */
     I_init_signatures (S, files->nbands);
     G_init_cell_stats (&cell_stats);
-    fprintf (stderr, "Finding training classes ...");
+    G_message(_("Finding training classes ..."));
     for (row = 0; row < nrows; row++)
     {
 	G_percent (row, nrows, 2);
-	if (G_get_c_raster_row(fd, cell, row) < 0) exit(1);
+	if (G_get_c_raster_row(fd, cell, row) < 0)
+            G_fatal_error(_("Unable to read raster row."));
 	G_update_cell_stats (cell, ncols, &cell_stats);
     }
     G_percent (row, nrows, 2);
@@ -49,15 +52,11 @@
 		n++;
 	    }
 	    else
-		fprintf (stderr,
-		    "WARNING: Training class [%d] only has one cell - this class will be ignored\n", cat);
+		G_warning(_("Training class [%d] only has one cell - this class will be ignored"), cat);
     }
 
     if (n==0)
-    {
-	fprintf (stderr, "ERROR: training map has no classes\n");
-	exit(1);
-    }
+	G_fatal_error(_("Training map has no classes."));
 
     list = (CELL *) G_calloc (n, sizeof(CELL));
     n = 0;
@@ -70,7 +69,7 @@
 
     files->ncats = n;
     files->training_cats = list;
-    fprintf (stderr, "%d class%s\n", files->ncats, files->ncats==1?"":"es" );
+    G_message(_("%d class%s"), files->ncats, files->ncats==1 ? "" : "es");
 
     return 0;
 }
Index: imagery/i.gensig/main.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/main.c,v
retrieving revision 2.1
diff -u -r2.1 main.c
--- imagery/i.gensig/main.c	13 Jul 2005 15:22:44 -0000	2.1
+++ imagery/i.gensig/main.c	21 Jul 2005 21:18:31 -0000
@@ -1,23 +1,25 @@
 #include <stdlib.h>
 #include "imagery.h"
+#include "glocale.h"
 #include "signature.h"
 #include "parms.h"
 #include "files.h"
 #include "local_proto.h"
 
+
 int main (int argc, char *argv[])
 {
     struct parms parms; /* command line parms */
     struct files files; /* file descriptors, io, buffers */
     struct Signature S;
-	struct GModule *module;
+    struct GModule *module;
 
     G_gisinit (argv[0]);
 
 	module = G_define_module();
 	module->description =
-		"Generates statistics for i.maxlik "
-		"from raster map layer.";
+		_("Generates statistics for i.maxlik "
+		"from raster map layer.");
 
     parse (argc,argv, &parms);
     openfiles (&parms, &files);
@@ -28,5 +30,6 @@
     compute_covariances (&files, &S);
     check_signatures (&S);
     write_sigfile (&parms, &S);
+
     exit(0);
 }
Index: imagery/i.gensig/means.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/means.c,v
retrieving revision 2.1
diff -u -r2.1 means.c
--- imagery/i.gensig/means.c	13 Jul 2005 15:22:44 -0000	2.1
+++ imagery/i.gensig/means.c	21 Jul 2005 21:18:31 -0000
@@ -1,9 +1,11 @@
 #include <stdlib.h>
 #include "imagery.h"
+#include "glocale.h"
 #include "signature.h"
 #include "files.h"
 #include "local_proto.h"
 
+
 int compute_means (struct files *files, struct Signature *S)
 {
     int n, n_nulls;
@@ -19,7 +21,7 @@
     ncols = G_window_cols();
     class    = (CELL *) G_calloc (ncols, sizeof(CELL));
 
-    fprintf (stderr, "Calculating class mean%s ...", S->nsigs==1?"":"s");
+    G_message(_("Calculating class mean%s ..."), S->nsigs==1 ? "" : "s");
 
     for (row = 0; row < nrows; row++)
     {
Index: imagery/i.gensig/opencell.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/opencell.c,v
retrieving revision 2.1
diff -u -r2.1 opencell.c
--- imagery/i.gensig/opencell.c	13 Jul 2005 15:22:44 -0000	2.1
+++ imagery/i.gensig/opencell.c	21 Jul 2005 21:18:31 -0000
@@ -1,5 +1,7 @@
 #include <stdlib.h>
 #include "gis.h"
+#include "glocale.h"
+
 
 CELL *
 open_cell (char *name, char *mapset, int *fd)
@@ -9,6 +11,5 @@
     if (*fd >= 0)
 	return G_allocate_cell_buf();
     
-    fprintf (stderr, "ERROR: unable to open raster map [%s]\n", name);
-    exit(1);
+    G_fatal_error(_("Unable to open raster map [%s]."), name);
 }
Index: imagery/i.gensig/openfiles.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/openfiles.c,v
retrieving revision 2.1
diff -u -r2.1 openfiles.c
--- imagery/i.gensig/openfiles.c	13 Jul 2005 15:22:44 -0000	2.1
+++ imagery/i.gensig/openfiles.c	21 Jul 2005 21:18:31 -0000
@@ -1,7 +1,10 @@
 #include <stdlib.h>
 #include "imagery.h"
+#include "glocale.h"
 #include "parms.h"
 #include "files.h"
+
+
 int 
 openfiles (struct parms *parms, struct files *files)
 {
@@ -11,18 +14,12 @@
 
 
     if (!I_get_subgroup_ref (parms->group, parms->subgroup, &Ref))
-    {
-	fprintf (stderr,
-	     "ERROR: unable to read REF file for subgroup [%s] in group [%s]\n",
-		parms->subgroup, parms->group);
-	exit(1);
-    }
+        G_fatal_error(_("Unable to read REF file for subgroup [%s] in group [%s]."),
+                parms->subgroup, parms->group);
+
     if (Ref.nfiles <= 0)
-    {
-	fprintf (stderr, "ERROR: subgroup [%s] in group [%s] contains no files\n",
-		parms->subgroup, parms->group);
-	exit(1);
-    }
+	G_fatal_error(_("Subgroup [%s] in group [%s] contains no files."),
+                parms->subgroup, parms->group);
 
     /* allocate file descriptors, and array of io buffers */
     files->nbands    = Ref.nfiles;
Index: imagery/i.gensig/parse.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/parse.c,v
retrieving revision 2.1
diff -u -r2.1 parse.c
--- imagery/i.gensig/parse.c	13 Jul 2005 15:22:44 -0000	2.1
+++ imagery/i.gensig/parse.c	21 Jul 2005 21:18:31 -0000
@@ -1,7 +1,10 @@
 #include <stdlib.h>
 #include "gis.h"
+#include "glocale.h"
 #include "imagery.h"
 #include "parms.h"
+
+
 int 
 parse (int argc, char *argv[], struct parms *parms)
 {
@@ -9,27 +12,27 @@
 
     trainingmap = G_define_option();
     trainingmap->key = "trainingmap";
-    trainingmap->description = "ground truth training map";
+    trainingmap->description = _("ground truth training map");
     trainingmap->required = YES;
     trainingmap->type = TYPE_STRING;
     trainingmap->gisprompt = "old,cell,raster";
 
     group = G_define_option();
     group->key = "group";
-    group->description = "imagery group";
+    group->description = _("imagery group");
     group->required = YES;
     group->type = TYPE_STRING;
     group->gisprompt = "old,group,group";
 
     subgroup = G_define_option();
     subgroup->key = "subgroup";
-    subgroup->description = "subgroup containing image files";
+    subgroup->description = _("subgroup containing image files");
     subgroup->required = YES;
     subgroup->type = TYPE_STRING;
 
     sigfile = G_define_option();
     sigfile->key = "signaturefile";
-    sigfile->description = "resultant signature file";
+    sigfile->description = _("resultant signature file");
     sigfile->required = YES;
     sigfile->type = TYPE_STRING;
 
@@ -42,20 +45,13 @@
 
 /* check all the inputs */
     if(G_find_cell(parms->training_map, "") == NULL)
-    {
-	fprintf (stderr, "ERROR: training map [%s] not found\n", parms->training_map);
-	exit(1);
-    }
+        G_fatal_error(_("Training map [%s] not found."), parms->training_map);
+
     if (!I_find_group(parms->group))
-    {
-	fprintf (stderr, "ERROR: group [%s] not found\n", parms->group);
-	exit(1);
-    }
+        G_fatal_error(_("Group [%s] not found."), parms->group);
+
     if (!I_find_subgroup(parms->group, parms->subgroup))
-    {
-	fprintf (stderr, "ERROR: subgroup [%s] not found\n", parms->subgroup);
-	exit(1);
-    }
+        G_fatal_error(_("Subgroup [%s] not found."), parms->subgroup);
 
     return 0;
 }
Index: imagery/i.gensig/print_sig.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/print_sig.c,v
retrieving revision 2.0
diff -u -r2.0 print_sig.c
--- imagery/i.gensig/print_sig.c	9 Nov 2004 12:56:10 -0000	2.0
+++ imagery/i.gensig/print_sig.c	21 Jul 2005 21:18:31 -0000
@@ -1,28 +1,28 @@
 #include "imagery.h"
+#include "glocale.h"
 #include "signature.h"
 
+
 int 
 print_one_sig (struct Signature *S, int k)
 {
 	struct One_Sig *s;
 	int i,n;
-	FILE *fd;
-	 
-	fd = stdout;
 
 	s = &S->sig[k];
 
-	fprintf (fd, "#%s\n", s->desc);
-	fprintf (fd, "%d\n", s->npoints);
+	G_message(_("#%s"), s->desc);
+	G_message("%d", s->npoints);
+
 	for (i=0; i < S->nbands; i++)
-	    fprintf(fd, "%lf ", s->mean[i]);
-	fprintf (fd, "\n");
+	    G_message("%lf\n", s->mean[i]);
+
 	for (i=0; i < S->nbands; i++)
 	{
 	    for (n=0; n < S->nbands; n++)
-		fprintf (fd, "%lf ", s->var[i][n]);
-	    fprintf (fd, "\n");
+		G_message("%lf\n", s->var[i][n]);
 	}
+
 	if (s->have_color)
-	    fprintf (fd, "%f %f %f\n", s->r, s->g, s->b);
+	    G_message("%f %f %f", s->r, s->g, s->b);
 }
Index: imagery/i.gensig/write_sig.c
===================================================================
RCS file: /grassrepository/grass6/imagery/i.gensig/write_sig.c,v
retrieving revision 2.1
diff -u -r2.1 write_sig.c
--- imagery/i.gensig/write_sig.c	13 Jul 2005 15:22:44 -0000	2.1
+++ imagery/i.gensig/write_sig.c	21 Jul 2005 21:18:31 -0000
@@ -1,24 +1,23 @@
 #include <stdlib.h>
 #include "imagery.h"
+#include "glocale.h"
 #include "signature.h"
 #include "parms.h"
 
+
 int write_sigfile (struct parms *parms, struct Signature *S)
 {
     FILE *fd;
 
     fd = I_fopen_signature_file_new (parms->group, parms->subgroup, parms->sigfile);
     if (fd == NULL)
-    {
-	fprintf (stderr, "ERROR: unable to create signature file [%s] ", parms->sigfile);
-	fprintf (stderr, "for subgroup [%s] in group [%s]\n",
-		parms->subgroup, parms->group);
-	exit(1);
-    }
-    fprintf (stderr, "Writing signature file [%s] ...", parms->sigfile);
-    fflush (stderr);
+        G_fatal_error(_("Unable to create signature file [%s] for "
+	            "subgroup [%s] in group [%s]."),
+                    parms->sigfile, parms->subgroup, parms->group);
+
+    G_message(_("Writing signature file [%s] ..."), parms->sigfile);
     I_write_signatures (fd, S);
-    fprintf (stderr, "\n");
+    G_message(_("Done."));
 
     return 0;
 }


More information about the grass-dev mailing list