PostGIS 3.0.6dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ geography_dwithin_cache()

int geography_dwithin_cache ( FunctionCallInfo  fcinfo,
const GSERIALIZED g1,
const GSERIALIZED g2,
const SPHEROID s,
double  tolerance,
int *  dwithin 
)

Definition at line 262 of file geography_measurement_trees.c.

268{
269 double distance;
270 /* Ticket #2422, difference between sphere and spheroid distance can trip up the */
271 /* threshold shortcircuit (stopping a calculation before the spheroid distance is actually */
272 /* below the threshold. Lower in the code line, we actually reduce the threshold a little to */
273 /* avoid this. */
274 /* Correct fix: propogate the spheroid information all the way to the bottom of the calculation */
275 /* so the "right thing" can be done in all cases. */
276 if ( LW_SUCCESS == geography_distance_cache_tolerance(fcinfo, g1, g2, s, tolerance, &distance) )
277 {
278 *dwithin = (distance <= (tolerance + FP_TOLERANCE) ? LW_TRUE : LW_FALSE);
279 return LW_SUCCESS;
280 }
281 return LW_FAILURE;
282}
char * s
Definition cu_in_wkt.c:23
static int geography_distance_cache_tolerance(FunctionCallInfo fcinfo, const GSERIALIZED *g1, const GSERIALIZED *g2, const SPHEROID *s, double tolerance, double *distance)
#define LW_FALSE
Definition liblwgeom.h:108
#define LW_FAILURE
Definition liblwgeom.h:110
#define LW_SUCCESS
Definition liblwgeom.h:111
#define LW_TRUE
Return types for functions with status returns.
Definition liblwgeom.h:107
#define FP_TOLERANCE
Floating point comparators.
static double distance(double x1, double y1, double x2, double y2)
Definition lwtree.c:1032

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

Referenced by geography_dwithin().

Here is the call graph for this function:
Here is the caller graph for this function: