GRASS GIS 7 Programmer's Manual  7.5.svn(2018)-r72097
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
c_intr.c
Go to the documentation of this file.
1 #include <grass/gis.h>
2 #include <grass/raster.h>
3 #include <grass/stats.h>
4 
5 void c_intr(DCELL * result, DCELL * values, int n, const void *closure)
6 {
7  DCELL center;
8  int count;
9  int diff;
10  int i;
11 
12  if (Rast_is_d_null_value(&values[n / 2])) {
13  Rast_set_d_null_value(result, 1);
14  return;
15  }
16 
17  center = values[n / 2];
18  count = 0;
19  diff = 0;
20 
21  for (i = 0; i < n; i++) {
22  if (Rast_is_d_null_value(&values[i]))
23  continue;
24 
25  count++;
26  if (values[i] != center)
27  diff++;
28  }
29 
30  count--;
31 
32  if (count <= 0)
33  *result = 0;
34  else
35  *result = (diff * 100.0 + (count / 2)) / count + 1;
36 }
double DCELL
Definition: gis.h:581
int count
void c_intr(DCELL *result, DCELL *values, int n, const void *closure)
Definition: c_intr.c:5
void Rast_set_d_null_value(DCELL *dcellVals, int numVals)
To set a number of DCELL raster values to NULL.
Definition: null_val.c:155
int Rast_is_d_null_value(const DCELL *dcellVal)
To check if a DCELL raster value is set to NULL.
Definition: null_val.c:261