[GRASS-SVN] r30912 - grass/trunk/raster/r.univar2
svn_grass at osgeo.org
svn_grass at osgeo.org
Wed Apr 9 06:11:36 EDT 2008
Author: 1gray
Date: 2008-04-09 06:11:36 -0400 (Wed, 09 Apr 2008)
New Revision: 30912
Modified:
grass/trunk/raster/r.univar2/r.univar_main.c
Log:
raster/r.univar2/r.univar_main.c (process_raster): Simplified handling
of different map types.
Modified: grass/trunk/raster/r.univar2/r.univar_main.c
===================================================================
--- grass/trunk/raster/r.univar2/r.univar_main.c 2008-04-09 10:03:38 UTC (rev 30911)
+++ grass/trunk/raster/r.univar2/r.univar_main.c 2008-04-09 10:11:36 UTC (rev 30912)
@@ -183,12 +183,17 @@
const int cols = region->cols;
int first = (stats->n < 1);
- RASTER_MAP_TYPE map_type;
+ const RASTER_MAP_TYPE map_type = G_get_raster_map_type (fd);
+ void *nextp
+ = ((! param.extended->answer) ? 0
+ : (map_type == DCELL_TYPE) ? stats->dcell_array
+ : (map_type == FCELL_TYPE) ? stats->fcell_array
+ : stats->cell_array);
+ const size_t value_sz = G_raster_size (map_type);
unsigned int row;
void *raster_row;
- map_type = G_get_raster_map_type (fd);
- raster_row = G_calloc(cols, G_raster_size(map_type));
+ raster_row = G_calloc (cols, value_sz);
for (row = 0; row < rows; row++) {
void *ptr;
@@ -202,78 +207,37 @@
for (col = 0; col < cols; col++) {
if (G_is_null_value(ptr, map_type)) {
- ptr = G_incr_void_ptr(ptr, G_raster_size(map_type));
+ ptr = G_incr_void_ptr (ptr, value_sz);
continue;
}
-
- if (map_type == CELL_TYPE) {
- const int val_i = *((CELL *) ptr);
-
- stats->sum += val_i;
- stats->sumsq += (double) val_i * val_i;
- stats->sum_abs += abs(val_i);
-
- if (param.extended->answer)
- stats->cell_array[stats->n] = val_i;
-
- if (first) {
- stats->max = val_i;
- stats->min = val_i;
- first = FALSE;
- }
- else {
- if (val_i > stats->max)
- stats->max = val_i;
- if (val_i < stats->min)
- stats->min = val_i;
- }
+ if (nextp) {
+ /* put the value into stats->XXXcell_array */
+ memcpy (nextp, ptr, value_sz);
+ nextp = G_incr_void_ptr (nextp, value_sz);
}
- else if (map_type == FCELL_TYPE) {
- const float val_f = *((FCELL *) ptr);
- stats->sum += val_f;
- stats->sumsq += (double) val_f * val_f;
- stats->sum_abs += fabs(val_f);
+ {
+ double val
+ = ((map_type == DCELL_TYPE) ? *((DCELL *) ptr)
+ : (map_type == FCELL_TYPE) ? *((FCELL *) ptr)
+ : *((CELL *) ptr));
- if (param.extended->answer)
- stats->fcell_array[stats->n] = val_f;
+ stats->sum += val;
+ stats->sumsq += val * val;
+ stats->sum_abs += fabs (val);
if (first) {
- stats->max = val_f;
- stats->min = val_f;
+ stats->max = val;
+ stats->min = val;
first = FALSE;
+ } else {
+ if (val > stats->max) stats->max = val;
+ if (val < stats->min) stats->min = val;
}
- else {
- if (val_f > stats->max)
- stats->max = val_f;
- if (val_f < stats->min)
- stats->min = val_f;
- }
}
- else if (map_type == DCELL_TYPE) {
- const double val_d = *((DCELL *) ptr);
- stats->sum += val_d;
- stats->sumsq += val_d * val_d;
- stats->sum_abs += fabs(val_d);
-
- if (param.extended->answer)
- stats->dcell_array[stats->n] = val_d;
-
- if (first) {
- stats->max = val_d;
- stats->min = val_d;
- first = FALSE;
- }
- else {
- if (val_d > stats->max)
- stats->max = val_d;
- if (val_d < stats->min)
- stats->min = val_d;
- }
- }
- ptr = G_incr_void_ptr(ptr, G_raster_size(map_type));
+ ptr = G_incr_void_ptr (ptr, value_sz);
stats->n++;
}
if (!(param.shell_style->answer))
More information about the grass-commit
mailing list