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

◆ circ_tree_distance_tree()

double circ_tree_distance_tree ( const CIRC_NODE n1,
const CIRC_NODE n2,
const SPHEROID spheroid,
double  threshold 
)

Definition at line 608 of file lwgeodetic_tree.c.

609{
610 double min_dist = FLT_MAX;
611 double max_dist = FLT_MAX;
612 GEOGRAPHIC_POINT closest1, closest2;
613 /* Quietly decrease the threshold just a little to avoid cases where */
614 /* the actual spheroid distance is larger than the sphere distance */
615 /* causing the return value to be larger than the threshold value */
616 double threshold_radians = 0.95 * threshold / spheroid->radius;
617
618 circ_tree_distance_tree_internal(n1, n2, threshold_radians, &min_dist, &max_dist, &closest1, &closest2);
619
620 /* Spherical case */
621 if ( spheroid->a == spheroid->b )
622 {
623 return spheroid->radius * sphere_distance(&closest1, &closest2);
624 }
625 else
626 {
627 return spheroid_distance(&closest1, &closest2, spheroid);
628 }
629}
double sphere_distance(const GEOGRAPHIC_POINT *s, const GEOGRAPHIC_POINT *e)
Given two points on a unit sphere, calculate their distance apart in radians.
Definition lwgeodetic.c:896
double spheroid_distance(const GEOGRAPHIC_POINT *a, const GEOGRAPHIC_POINT *b, const SPHEROID *spheroid)
Computes the shortest distance along the surface of the spheroid between two points,...
Definition lwspheroid.c:79
double circ_tree_distance_tree_internal(const CIRC_NODE *n1, const CIRC_NODE *n2, double threshold, double *min_dist, double *max_dist, GEOGRAPHIC_POINT *closest1, GEOGRAPHIC_POINT *closest2)
Point in spherical coordinates on the world.
Definition lwgeodetic.h:54
double radius
Definition liblwgeom.h:380
double a
Definition liblwgeom.h:375
double b
Definition liblwgeom.h:376

References SPHEROID::a, SPHEROID::b, circ_tree_distance_tree_internal(), SPHEROID::radius, sphere_distance(), and spheroid_distance().

Referenced by geography_distance_cache_tolerance(), geography_tree_distance(), test_tree_circ_distance(), and test_tree_circ_distance_threshold().

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