PostGIS  2.3.7dev-r@@SVN_REVISION@@
double lwgeom_mindistance3d_tolerance ( const LWGEOM lw1,
const LWGEOM lw2,
double  tolerance 

Function handling 3d min distance calculations and dwithin calculations.

The difference is just the tolerance.

Definition at line 363 of file measures3d.c.

References DIST_MIN, DISTPTS3D::distance, lw_dist3d_recursive(), LWDEBUG, lwerror(), lwgeom_has_z(), lwgeom_mindistance2d_tolerance(), lwnotice(), DISTPTS3D::mode, and DISTPTS3D::tolerance.

Referenced by intersects3d_dwithin(), LWGEOM_dwithin3d(), and lwgeom_mindistance3d().

364 {
365  if(!lwgeom_has_z(lw1) || !lwgeom_has_z(lw2))
366  {
367  lwnotice("One or both of the geometries is missing z-value. The unknown z-value will be regarded as \"any value\"");
369  return lwgeom_mindistance2d_tolerance(lw1, lw2, tolerance);
370  }
371  DISTPTS3D thedl;
372  LWDEBUG(2, "lwgeom_mindistance3d_tolerance is called");
373  thedl.mode = DIST_MIN;
374  thedl.distance= FLT_MAX;
375  thedl.tolerance = tolerance;
376  if (lw_dist3d_recursive(lw1, lw2, &thedl))
377  {
378  return thedl.distance;
379  }
380  /*should never get here. all cases ought to be error handled earlier*/
381  lwerror("Some unspecified error.");
382  return FLT_MAX;
383 }
double distance
Definition: measures3d.h:41
void lwnotice(const char *fmt,...)
Write a notice out to the notice handler.
Definition: lwutil.c:89
double lwgeom_mindistance2d_tolerance(const LWGEOM *lw1, const LWGEOM *lw2, double tolerance)
Function handling min distance calculations and dwithin calculations.
Definition: measures.c:213
#define LWDEBUG(level, msg)
Definition: lwgeom_log.h:83
Structure used in distance-calculations.
Definition: measures3d.h:39
int lwgeom_has_z(const LWGEOM *geom)
Return LW_TRUE if geometry has Z ordinates.
Definition: lwgeom.c:849
#define DIST_MIN
Definition: measures.h:41
int mode
Definition: measures3d.h:44
int lw_dist3d_recursive(const LWGEOM *lwg1, const LWGEOM *lwg2, DISTPTS3D *dl)
This is a recursive function delivering every possible combination of subgeometries.
Definition: measures3d.c:399
double tolerance
Definition: measures3d.h:46
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:102

Here is the call graph for this function:

Here is the caller graph for this function: