PostGIS  2.5.2dev-r@@SVN_REVISION@@

◆ geography_dwithin_cache()

int geography_dwithin_cache ( FunctionCallInfoData *  fcinfo,
const SPHEROID s,
double  tolerance,
int *  dwithin 

Definition at line 253 of file geography_measurement_trees.c.

References distance(), FP_TOLERANCE, geography_distance_cache_tolerance(), LW_FAILURE, LW_FALSE, LW_SUCCESS, and LW_TRUE.

Referenced by geography_dwithin().

254 {
255  double distance;
256  /* Ticket #2422, difference between sphere and spheroid distance can trip up the */
257  /* threshold shortcircuit (stopping a calculation before the spheroid distance is actually */
258  /* below the threshold. Lower in the code line, we actually reduce the threshold a little to */
259  /* avoid this. */
260  /* Correct fix: propogate the spheroid information all the way to the bottom of the calculation */
261  /* so the "right thing" can be done in all cases. */
262  if ( LW_SUCCESS == geography_distance_cache_tolerance(fcinfo, g1, g2, s, tolerance, &distance) )
263  {
264  *dwithin = (distance <= (tolerance + FP_TOLERANCE) ? LW_TRUE : LW_FALSE);
265  return LW_SUCCESS;
266  }
267  return LW_FAILURE;
268 }
static int geography_distance_cache_tolerance(FunctionCallInfoData *fcinfo, const GSERIALIZED *g1, const GSERIALIZED *g2, const SPHEROID *s, double tolerance, double *distance)
#define LW_SUCCESS
Definition: liblwgeom.h:79
#define LW_FAILURE
Definition: liblwgeom.h:78
#define LW_FALSE
Definition: liblwgeom.h:76
#define LW_TRUE
Return types for functions with status returns.
Definition: liblwgeom.h:75
Floating point comparators.
Datum distance(PG_FUNCTION_ARGS)
Here is the call graph for this function:
Here is the caller graph for this function: