PostGIS  2.5.7dev-r@@SVN_REVISION@@

◆ 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 594 of file lwgeodetic_tree.c.

595 {
596  double min_dist = FLT_MAX;
597  double max_dist = FLT_MAX;
598  GEOGRAPHIC_POINT closest1, closest2;
599  /* Quietly decrease the threshold just a little to avoid cases where */
600  /* the actual spheroid distance is larger than the sphere distance */
601  /* causing the return value to be larger than the threshold value */
603
604  circ_tree_distance_tree_internal(n1, n2, threshold_radians, &min_dist, &max_dist, &closest1, &closest2);
605
606  /* Spherical case */
607  if ( spheroid->a == spheroid->b )
608  {
609  return spheroid->radius * sphere_distance(&closest1, &closest2);
610  }
611  else
612  {
613  return spheroid_distance(&closest1, &closest2, spheroid);
614  }
615 }
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:948
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:191
static 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:53