GRASS 8 Programmer's Manual 8.6.0dev(2026)-1d1e47ad9d
Loading...
Searching...
No Matches
c_median.c
Go to the documentation of this file.
1#include <grass/gis.h>
2#include <grass/raster.h>
3#include <grass/stats.h>
4
5void c_median(DCELL *result, DCELL *values, int n, const void *closure UNUSED)
6{
7 n = sort_cell(values, n);
8
9 if (n < 1)
10 Rast_set_d_null_value(result, 1);
11 else
12 *result = (values[(n - 1) / 2] + values[n / 2]) / 2;
13}
14
15void w_median(DCELL *result, DCELL (*values)[2], int n,
16 const void *closure UNUSED)
17{
18 DCELL total;
19 int i;
20 DCELL k;
21
22 n = sort_cell_w(values, n);
23
24 if (n < 1) {
25 Rast_set_d_null_value(result, 1);
26 return;
27 }
28
29 total = 0.0;
30 for (i = 0; i < n; i++)
31 total += values[i][1];
32
33 k = 0.0;
34 for (i = 0; i < n; i++) {
35 k += values[i][1];
36 if (k >= total / 2)
37 break;
38 }
39
40 *result = values[i][0];
41}
args_t c_median
void Rast_set_d_null_value(DCELL *, int)
To set a number of DCELL raster values to NULL.
Definition null_val.c:153
int sort_cell(DCELL *, int)
Definition sort_cell.c:27
stat_func_w w_median
int sort_cell_w(DCELL(*)[2], int)
Definition sort_cell.c:46
double DCELL
Definition gis.h:635
#define UNUSED
A macro for an attribute, if attached to a variable, indicating that the variable is not used.
Definition gis.h:46