Changeset 30912
- Timestamp:
- Apr 9, 2008, 3:11:36 AM (16 years ago)
- File:
-
- 1 edited
-
grass/trunk/raster/r.univar2/r.univar_main.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
grass/trunk/raster/r.univar2/r.univar_main.c
r30384 r30912 184 184 int first = (stats->n < 1); 185 185 186 RASTER_MAP_TYPE map_type; 186 const RASTER_MAP_TYPE map_type = G_get_raster_map_type (fd); 187 void *nextp 188 = ((! param.extended->answer) ? 0 189 : (map_type == DCELL_TYPE) ? stats->dcell_array 190 : (map_type == FCELL_TYPE) ? stats->fcell_array 191 : stats->cell_array); 192 const size_t value_sz = G_raster_size (map_type); 187 193 unsigned int row; 188 194 void *raster_row; 189 195 190 map_type = G_get_raster_map_type (fd); 191 raster_row = G_calloc(cols, G_raster_size(map_type)); 196 raster_row = G_calloc (cols, value_sz); 192 197 193 198 for (row = 0; row < rows; row++) { … … 203 208 204 209 if (G_is_null_value(ptr, map_type)) { 205 ptr = G_incr_void_ptr (ptr, G_raster_size(map_type));210 ptr = G_incr_void_ptr (ptr, value_sz); 206 211 continue; 207 212 } 208 213 209 210 if (map_type == CELL_TYPE) { 211 const int val_i = *((CELL *) ptr); 212 213 stats->sum += val_i; 214 stats->sumsq += (double) val_i * val_i; 215 stats->sum_abs += abs(val_i); 216 217 if (param.extended->answer) 218 stats->cell_array[stats->n] = val_i; 214 if (nextp) { 215 /* put the value into stats->XXXcell_array */ 216 memcpy (nextp, ptr, value_sz); 217 nextp = G_incr_void_ptr (nextp, value_sz); 218 } 219 220 { 221 double val 222 = ((map_type == DCELL_TYPE) ? *((DCELL *) ptr) 223 : (map_type == FCELL_TYPE) ? *((FCELL *) ptr) 224 : *((CELL *) ptr)); 225 226 stats->sum += val; 227 stats->sumsq += val * val; 228 stats->sum_abs += fabs (val); 219 229 220 230 if (first) { 221 stats->max = val _i;222 stats->min = val _i;231 stats->max = val; 232 stats->min = val; 223 233 first = FALSE; 234 } else { 235 if (val > stats->max) stats->max = val; 236 if (val < stats->min) stats->min = val; 224 237 } 225 else { 226 if (val_i > stats->max) 227 stats->max = val_i; 228 if (val_i < stats->min) 229 stats->min = val_i; 230 } 231 } 232 else if (map_type == FCELL_TYPE) { 233 const float val_f = *((FCELL *) ptr); 234 235 stats->sum += val_f; 236 stats->sumsq += (double) val_f * val_f; 237 stats->sum_abs += fabs(val_f); 238 239 if (param.extended->answer) 240 stats->fcell_array[stats->n] = val_f; 241 242 if (first) { 243 stats->max = val_f; 244 stats->min = val_f; 245 first = FALSE; 246 } 247 else { 248 if (val_f > stats->max) 249 stats->max = val_f; 250 if (val_f < stats->min) 251 stats->min = val_f; 252 } 253 } 254 else if (map_type == DCELL_TYPE) { 255 const double val_d = *((DCELL *) ptr); 256 257 stats->sum += val_d; 258 stats->sumsq += val_d * val_d; 259 stats->sum_abs += fabs(val_d); 260 261 if (param.extended->answer) 262 stats->dcell_array[stats->n] = val_d; 263 264 if (first) { 265 stats->max = val_d; 266 stats->min = val_d; 267 first = FALSE; 268 } 269 else { 270 if (val_d > stats->max) 271 stats->max = val_d; 272 if (val_d < stats->min) 273 stats->min = val_d; 274 } 275 } 276 ptr = G_incr_void_ptr(ptr, G_raster_size(map_type)); 238 } 239 240 ptr = G_incr_void_ptr (ptr, value_sz); 277 241 stats->n++; 278 242 }
Note:
See TracChangeset
for help on using the changeset viewer.
