[GRASS-SVN] r34795 - in grass/trunk: imagery/i.cluster lib/imagery
svn_grass at osgeo.org
svn_grass at osgeo.org
Mon Dec 8 06:47:01 EST 2008
Author: martinl
Date: 2008-12-08 06:47:00 -0500 (Mon, 08 Dec 2008)
New Revision: 34795
Modified:
grass/trunk/imagery/i.cluster/checkpt.c
grass/trunk/imagery/i.cluster/main.c
grass/trunk/imagery/i.cluster/open_files.c
grass/trunk/lib/imagery/sigfile.c
Log:
i.cluster: message standardization
more guisections
imagerylib: allow fully qualified group name + doxygenization (sigfice.c)
(merge from devbr6, r34794)
Modified: grass/trunk/imagery/i.cluster/checkpt.c
===================================================================
--- grass/trunk/imagery/i.cluster/checkpt.c 2008-12-08 11:44:30 UTC (rev 34794)
+++ grass/trunk/imagery/i.cluster/checkpt.c 2008-12-08 11:47:00 UTC (rev 34795)
@@ -37,7 +37,7 @@
if (verbose) {
cur_time = time(NULL);
elapsed_time = cur_time - start_time;
- G_message(_("Iteration %d: %% Convergence: %.2f (%s elapsed, %s left)"),
+ G_message(_("Iteration %.2d: convergence %.2f%% (%s elapsed, %s left)"),
X->iteration, (double)X->percent_stable,
print_time(elapsed_time),
print_time(iters * elapsed_time / (X->iteration + 1) -
Modified: grass/trunk/imagery/i.cluster/main.c
===================================================================
--- grass/trunk/imagery/i.cluster/main.c 2008-12-08 11:44:30 UTC (rev 34794)
+++ grass/trunk/imagery/i.cluster/main.c 2008-12-08 11:47:00 UTC (rev 34795)
@@ -11,7 +11,7 @@
* Glynn Clements <glynn gclements.plus.com>,
* Jan-Oliver Wagner <jan intevation.de>
* PURPOSE: builds pixel clusters based on multi-image pixel values
- * COPYRIGHT: (C) 1999-2006 by the GRASS Development Team
+ * COPYRIGHT: (C) 1999-2008 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
@@ -77,7 +77,7 @@
G_gisinit(argv[0]);
module = G_define_module();
- module->keywords = _("imagery");
+ module->keywords = _("imagery, classification, signatures");
module->label =
_("Generates spectral signatures for land cover "
"types in an image using a clustering algorithm.");
@@ -86,19 +86,17 @@
"to generate an unsupervised image classification.");
parm.group_name = G_define_standard_option(G_OPT_I_GROUP);
- parm.group_name->description =
- _("Group of imagery files to be clustered");
parm.subgroup_name = G_define_option();
parm.subgroup_name->key = "subgroup";
parm.subgroup_name->type = TYPE_STRING;
parm.subgroup_name->required = YES;
- parm.subgroup_name->description = _("Subgroup name in the above group");
+ parm.subgroup_name->description = _("Name of subgroup in the above group");
parm.out_sig = G_define_standard_option(G_OPT_F_OUTPUT);
parm.out_sig->key = "sigfile";
parm.out_sig->required = YES;
- parm.out_sig->description = _("File to contain result signatures");
+ parm.out_sig->description = _("Name for output file containing result signatures");
parm.class = G_define_option();
parm.class->key = "classes";
@@ -106,11 +104,12 @@
parm.class->options = "1-255";
parm.class->required = YES;
parm.class->description = _("Initial number of classes");
+ parm.class->guisection = _("Settings");
parm.seed_sig = G_define_standard_option(G_OPT_F_INPUT);
parm.seed_sig->key = "seed";
parm.seed_sig->required = NO;
- parm.seed_sig->description = _("File containing initial signatures");
+ parm.seed_sig->description = _("Name of file containing initial signatures");
parm.sample_interval = G_define_option();
parm.sample_interval->key = "sample";
@@ -119,6 +118,7 @@
parm.sample_interval->required = NO;
parm.sample_interval->description =
_("Sampling intervals (by row and col); default: ~10,000 pixels");
+ parm.sample_interval->guisection = _("Settings");
parm.iterations = G_define_option();
parm.iterations->key = "iterations";
@@ -126,6 +126,7 @@
parm.iterations->required = NO;
parm.iterations->description = _("Maximum number of iterations");
parm.iterations->answer = "30";
+ parm.iterations->guisection = _("Settings");
parm.convergence = G_define_option();
parm.convergence->key = "convergence";
@@ -134,6 +135,7 @@
parm.convergence->options = "0-100";
parm.convergence->description = _("Percent convergence");
parm.convergence->answer = "98.0";
+ parm.convergence->guisection = _("Settings");
parm.separation = G_define_option();
parm.separation->key = "separation";
@@ -141,6 +143,7 @@
parm.separation->required = NO;
parm.separation->description = _("Cluster separation");
parm.separation->answer = "0.0";
+ parm.separation->guisection = _("Settings");
parm.min_size = G_define_option();
parm.min_size->key = "min_size";
@@ -148,11 +151,12 @@
parm.min_size->required = NO;
parm.min_size->description = _("Minimum number of pixels in a class");
parm.min_size->answer = "17";
+ parm.min_size->guisection = _("Settings");
parm.report_file = G_define_standard_option(G_OPT_F_OUTPUT);
parm.report_file->key = "reportfile";
parm.report_file->required = NO;
- parm.report_file->description = _("Output file to contain final report");
+ parm.report_file->description = _("Name for output file containing final report");
flag.q = G_define_flag();
flag.q->key = 'q';
@@ -175,10 +179,8 @@
if (sscanf(parm.class->answer, "%d", &maxclass) != 1 || maxclass < 1
|| maxclass > 255) {
- G_warning(_("\n<%s> -- illegal number of initial classes"),
- parm.class->answer);
- G_usage();
- exit(EXIT_FAILURE);
+ G_fatal_error(_("Illegal number of initial classes (%s)"),
+ parm.class->answer);
}
insigfile = parm.seed_sig->answer;
@@ -188,10 +190,8 @@
(parm.sample_interval->answer, "%d,%d", &sample_rows,
&sample_cols) != 2 || sample_rows < 1 || sample_cols < 1 ||
sample_rows > nrows || sample_cols > ncols) {
- G_warning(_("\n<%s> -- illegal value(s) of sample intervals"),
- parm.sample_interval->answer);
- G_usage();
- exit(EXIT_FAILURE);
+ G_fatal_error(_("Illegal value(s) of sample intervals (%s)"),
+ parm.sample_interval->answer);
}
}
else {
@@ -204,32 +204,24 @@
}
if (sscanf(parm.iterations->answer, "%d", &iters) != 1 || iters < 1) {
- G_warning(_("\n<%s> -- illegal value of iterations"),
- parm.iterations->answer);
- G_usage();
- exit(EXIT_FAILURE);
+ G_fatal_error(_("Illegal value of iterations (%s>)"),
+ parm.iterations->answer);
}
if (sscanf(parm.convergence->answer, "%lf", &conv) != 1 || conv < 0.0 ||
conv > 100.0) {
- G_warning(_("\n<%s> -- illegal value of convergence"),
- parm.convergence->answer);
- G_usage();
- exit(EXIT_FAILURE);
+ G_fatal_error(_("Illegal value of convergence (%s)"),
+ parm.convergence->answer);
}
if (sscanf(parm.separation->answer, "%lf", &sep) != 1 || sep < 0.0) {
- G_warning(_("\n<%s> -- illegal value of separation"),
- parm.separation->answer);
- G_usage();
- exit(EXIT_FAILURE);
+ G_fatal_error(_("Illegal value of separation (%s)"),
+ parm.separation->answer);
}
if (sscanf(parm.min_size->answer, "%d", &mcs) != 1 || mcs < 2) {
- G_warning(_("\n<%s> -- illegal value of min_size"),
- parm.min_size->answer);
- G_usage();
- exit(EXIT_FAILURE);
+ G_fatal_error(_("Illegal value of min_size (%s)"),
+ parm.min_size->answer);
}
verbose = !flag.q->answer;
@@ -239,9 +231,8 @@
else
report = fopen(reportfile, "w");
if (report == NULL) {
- G_warning(_("Can't creat reportfile: "));
- perror(reportfile);
- exit(EXIT_FAILURE);
+ G_fatal_error(_("Unable to create report file <%s>"),
+ reportfile);
}
open_files();
@@ -291,33 +282,33 @@
I_cluster_begin(&C, ref.nfiles);
count = 0;
- if (verbose)
- G_message(_("Reading image ... "));
+ G_message(_("Reading raster maps..."));
for (row = sample_rows - 1; row < nrows; row += sample_rows) {
- if (verbose)
- G_percent(row, nrows, 2);
+ G_percent(row, nrows, 2);
for (n = 0; n < ref.nfiles; n++)
if (G_get_d_raster_row(cellfd[n], cell[n], row) < 0)
- exit(EXIT_FAILURE);
+ G_fatal_error(_("Unable to read raster map row %d"),
+ row);
for (col = sample_cols - 1; col < ncols; col += sample_cols) {
count++;
for (n = 0; n < ref.nfiles; n++)
x[n] = cell[n][col];
if (I_cluster_point(&C, x) < 0)
- G_fatal_error(_("Out of Memory. Please run again and choose a smaller sample size"));
+ G_fatal_error(_("Out of Memory. Please run again and choose a "
+ "smaller sample size."));
}
}
- if (verbose)
- G_percent(nrows, nrows, 2);
+ G_percent(nrows, nrows, 2);
+
fprintf(report, _("Sample size: %d points\n"), C.npoints);
fprintf(report, "\n");
if (count < 2)
G_fatal_error(_("Not enough sample points. Please run again and "
- "choose a larger sample size"));
+ "choose a larger sample size."));
if (C.npoints < 2)
G_fatal_error(_("Not enough non-zero sample data points. Check "
- "your current region (and mask)"));
+ "your current region (and mask)."));
for (n = 0; n < ref.nfiles; n++) {
G_free(cell[n]);
@@ -341,7 +332,7 @@
fclose(fd);
}
else {
- G_fatal_error(_("Could not write signature file <%s> for group "
+ G_fatal_error(_("Unable to create signature file <%s> for group "
"<%s>, subsgroup <%s>"), outsigfile, group, subgroup);
}
@@ -352,6 +343,9 @@
fprintf(report, _("\n######## CLUSTER END (%s) ########\n"), G_date());
fclose(report);
+ G_done_msg(_("File <%s> created."),
+ outsigfile);
+
exit(EXIT_SUCCESS);
}
Modified: grass/trunk/imagery/i.cluster/open_files.c
===================================================================
--- grass/trunk/imagery/i.cluster/open_files.c 2008-12-08 11:44:30 UTC (rev 34794)
+++ grass/trunk/imagery/i.cluster/open_files.c 2008-12-08 11:47:00 UTC (rev 34795)
@@ -14,11 +14,12 @@
G_strip(group);
if (!I_find_group(group))
- G_fatal_error(_("\n group <%s> not found"), group);
+ G_fatal_error(_("Group <%s> not found"), group);
G_strip(subgroup);
if (!I_find_subgroup(group, subgroup))
- G_fatal_error(_("subgroup <%s> not found"), subgroup);
+ G_fatal_error(_("Subgroup <%s> in group <%s> not found"),
+ subgroup, group);
I_free_group_ref(&ref);
I_get_subgroup_ref(group, subgroup, &ref);
@@ -34,14 +35,15 @@
}
}
if (missing)
- exit(1);
+ G_fatal_error(_("No raster maps found"));
+
if (ref.nfiles <= 1) {
if (ref.nfiles <= 0)
- G_warning(_("Subgroup [%s] doesn't have any files"), subgroup);
+ G_warning(_("Subgroup <%s> doesn't have any raster maps"),
+ subgroup);
else
- G_warning(_("Subgroup [%s] only has 1 file"), subgroup);
- G_fatal_error(_("The subgroup must have at least 2 files to run %s"),
- G_program_name());
+ G_warning(_("Subgroup <%s> only has 1 raster map"), subgroup);
+ G_fatal_error(_("Subgroup must have at least 2 raster maps"));
}
cell = (DCELL **) G_malloc(ref.nfiles * sizeof(DCELL *));
@@ -51,20 +53,21 @@
name = ref.file[n].name;
mapset = ref.file[n].mapset;
if ((cellfd[n] = G_open_cell_old(name, mapset)) < 0)
- G_fatal_error(_("Unable to proceed"));
+ G_fatal_error(_("Unable to open raster map <%s>"),
+ G_fully_qualified_name(name, mapset));
}
I_init_signatures(&in_sig, ref.nfiles);
if (insigfile) {
fd = I_fopen_signature_file_old(group, subgroup, insigfile);
if (fd == NULL)
- G_fatal_error(_("Can't open seed signature file <%s>"),
+ G_fatal_error(_("Unable to open seed signature file <%s>"),
insigfile);
n = I_read_signatures(fd, &in_sig);
fclose(fd);
if (n < 0)
- G_fatal_error(_("Can't read signature file <%s>"),
+ G_fatal_error(_("Unable to read signature file <%s>"),
insigfile);
if (in_sig.nsigs > 255)
Modified: grass/trunk/lib/imagery/sigfile.c
===================================================================
--- grass/trunk/lib/imagery/sigfile.c 2008-12-08 11:44:30 UTC (rev 34794)
+++ grass/trunk/lib/imagery/sigfile.c 2008-12-08 11:47:00 UTC (rev 34795)
@@ -1,38 +1,75 @@
+/**
+ \file sigfile.c
+
+ \brief Imagery Library - Signature file functions.
+
+ (C) 2001-2008 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 for details.
+
+ \author USA CERL
+*/
+
#include <string.h>
#include <grass/imagery.h>
+/**
+ \brief Create signature file
+
+ \param group group name
+ \param subgroup subgroup name in given group
+ \param name signature filename
+
+ \return pointer to FILE*
+ \return NULL on error
+*/
FILE *I_fopen_signature_file_new(const char *group,
const char *subgroup, const char *name)
{
- char element[GNAME_MAX * 2];
+ char element[GPATH_MAX];
+ char group_name[GNAME_MAX], group_mapset[GMAPSET_MAX];
FILE *fd;
+ if (!G__name_is_fully_qualified(group, group_name, group_mapset)) {
+ strcpy(group_name, group);
+ }
+
/* create sigset directory */
- sprintf(element, "%s/subgroup/%s/sig", group, subgroup);
+ sprintf(element, "%s/subgroup/%s/sig", group_name, subgroup);
G__make_mapset_element_misc("group", element);
sprintf(element, "subgroup/%s/sig/%s", subgroup, name);
- fd = G_fopen_new_misc("group", element, group);
- if (fd == NULL)
- G_warning
- ("unable to create signature file %s for subgroup %s of group %s",
- name, subgroup, group);
+ fd = G_fopen_new_misc("group", element, group_name);
+
return fd;
}
+/**
+ \brief Open signature file
+
+ \param group group name
+ \param subgroup subgroup name in given group
+ \param name signature filename
+
+ \return pointer to FILE*
+ \return NULL on error
+*/
FILE *I_fopen_signature_file_old(const char *group,
const char *subgroup, const char *name)
{
- char element[GNAME_MAX * 2];
+ char element[GPATH_MAX];
+ char group_name[GNAME_MAX], group_mapset[GMAPSET_MAX];
FILE *fd;
+ if (!G__name_is_fully_qualified(group, group_name, group_mapset)) {
+ strcpy(group_name, group);
+ }
+
sprintf(element, "subgroup/%s/sig/%s", subgroup, name);
- fd = G_fopen_old_misc("group", element, group, G_mapset());
- if (fd == NULL)
- G_warning
- ("unable to open signature file %s for subgroup %s of group [%s in %s]",
- name, subgroup, group, G_mapset());
+ fd = G_fopen_old_misc("group", element, group_name, G_mapset());
+
return fd;
}
More information about the grass-commit
mailing list