GRASS GIS 7 Programmer's Manual  7.5.svn(2018)-r72274
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
c_thresh.c
Go to the documentation of this file.
1 #include <math.h>
2 
3 #include <grass/gis.h>
4 #include <grass/raster.h>
5 
6 void c_thresh(DCELL * result, DCELL * values, int n, const void *closure)
7 {
8  DCELL thresh, threshx;
9  double tval = *(const double *)closure;
10  double epsilon = GRASS_EPSILON;
11  int i;
12 
13  Rast_set_d_null_value(&thresh, 1);
14  Rast_set_d_null_value(&threshx, 1);
15 
16  for (i = 0; i < n; i++) {
17  /* already found */
18  if (! Rast_is_d_null_value(&threshx))
19  continue;
20 
21  if (Rast_is_d_null_value(&values[i]))
22  continue;
23 
24  G_debug(2, "values[%d] %f, tval %f", i, values[i], tval);
25  /* for GDD */
26  epsilon = 10.;
27  if (fabs(tval - values[i]) < epsilon ) {
28  thresh = values[i];
29  threshx = i + 1;
30  G_debug(2, "values[%d] %f, thresh %f, threshx %f, diff %f", i, values[i], thresh, threshx, tval - values[i]);
31  }
32  }
33 
34  if (Rast_is_d_null_value(&threshx))
35  Rast_set_d_null_value(result, 1);
36  else
37  *result = threshx;
38 }
#define GRASS_EPSILON
Definition: gis.h:130
double DCELL
Definition: gis.h:581
int G_debug(int level, const char *msg,...)
Print debugging message.
Definition: debug.c:65
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
void c_thresh(DCELL *result, DCELL *values, int n, const void *closure)
Definition: c_thresh.c:6
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