[GRASS-SVN] r69770 - grass/trunk/raster/r.stats.quantile
svn_grass at osgeo.org
svn_grass at osgeo.org
Fri Nov 4 06:22:37 PDT 2016
Author: mmetz
Date: 2016-11-04 06:22:36 -0700 (Fri, 04 Nov 2016)
New Revision: 69770
Modified:
grass/trunk/raster/r.stats.quantile/main.c
Log:
r.stats.quantile: re-sync to r.quantile, use correct min
Modified: grass/trunk/raster/r.stats.quantile/main.c
===================================================================
--- grass/trunk/raster/r.stats.quantile/main.c 2016-11-04 09:56:51 UTC (rev 69769)
+++ grass/trunk/raster/r.stats.quantile/main.c 2016-11-04 13:22:36 UTC (rev 69770)
@@ -41,13 +41,13 @@
static int num_quants;
static DCELL *quants;
-static DCELL f_min, f_max;
+static DCELL min, max;
static int num_slots;
static DCELL slot_size;
static int rows, cols;
-static int min, max;
+static CELL cmin, cmax;
static int num_cats;
static struct basecat *basecats;
@@ -90,7 +90,7 @@
continue;
i = get_slot(coverbuf[col]);
- bc = &basecats[basebuf[col] - min];
+ bc = &basecats[basebuf[col] - cmin];
bc->slots[i]++;
bc->total++;
@@ -181,7 +181,7 @@
continue;
i = get_slot(coverbuf[col]);
- bc = &basecats[basebuf[col] - min];
+ bc = &basecats[basebuf[col] - cmin];
if (!bc->slot_bins[i])
continue;
@@ -246,7 +246,7 @@
int quant;
for (quant = 0; quant < num_quants; quant++)
- printf("%d:%d:%f:%f\n", min + cat, quant, 100 * quants[quant], bc->quants[quant]);
+ printf("%d:%d:%f:%f\n", cmin + cat, quant, 100 * quants[quant], bc->quants[quant]);
}
}
@@ -275,6 +275,9 @@
i0 = (int)floor(k);
i1 = (int)ceil(k);
+ if (i1 > b->count - 1)
+ i1 = b->count - 1;
+
v = (i0 == i1)
? bc->values[b->base + i0]
: bc->values[b->base + i0] * (i1 - k) + bc->values[b->base + i1] * (k - i0);
@@ -309,7 +312,7 @@
G_fatal_error(_("Unable to open temporary file"));
for (cat = 0; cat < num_cats; cat++)
- fprintf(fp, "%d = %d %f\n", min + cat, min + cat, basecats[cat].quants[quant]);
+ fprintf(fp, "%d = %d %f\n", cmin + cat, cmin + cat, basecats[cat].quants[quant]);
fclose(fp);
@@ -326,6 +329,7 @@
DCELL *out_buf = Rast_allocate_d_buf();
const char *mapset = G_mapset();
struct Colors colors;
+ struct History history;
int have_colors;
int quant;
int row, col;
@@ -348,7 +352,7 @@
if (Rast_is_c_null_value(&base_buf[col]))
Rast_set_d_null_value(&out_buf[col], 1);
else
- out_buf[col] = basecats[base_buf[col] - min].quants[quant];
+ out_buf[col] = basecats[base_buf[col] - cmin].quants[quant];
Rast_put_d_row(out_fd[quant], out_buf);
}
@@ -360,6 +364,9 @@
for (quant = 0; quant < num_quants; quant++) {
Rast_close(out_fd[quant]);
+ Rast_short_history(outputs[quant], "raster", &history);
+ Rast_command_history(&history);
+ Rast_write_history(outputs[quant], &history);
if (have_colors)
Rast_write_colors(outputs[quant], mapset, &colors);
}
@@ -482,15 +489,15 @@
if (Rast_read_range(basemap, "", &range) < 0)
G_fatal_error(_("Unable to read range of base map <%s>"), basemap);
- Rast_get_range_min_max(&range, &min, &max);
- num_cats = max - min + 1;
+ Rast_get_range_min_max(&range, &cmin, &cmax);
+ num_cats = cmax - cmin + 1;
if (num_cats > MAX_CATS)
G_fatal_error(_("Base map <%s> has too many categories (max: %d)"),
basemap, MAX_CATS);
Rast_read_fp_range(covermap, "", &fprange);
- Rast_get_fp_range_min_max(&fprange, &f_min, &f_max);
- slot_size = (f_max - f_min) / num_slots;
+ Rast_get_fp_range_min_max(&fprange, &min, &max);
+ slot_size = (max - min) / num_slots;
basecats = G_calloc(num_cats, sizeof(struct basecat));
More information about the grass-commit
mailing list