PostGIS  2.5.0dev-r@@SVN_REVISION@@
double lwgeom_maxdistance3d_tolerance ( const LWGEOM lw1,
const LWGEOM lw2,
double  tolerance 

Function handling 3d max distance calculations and dfullywithin calculations.

The difference is just the tolerance.

Definition at line 326 of file measures3d.c.

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

Referenced by LWGEOM_dfullywithin3d(), and lwgeom_maxdistance3d().

327 {
328  if(!lwgeom_has_z(lw1) || !lwgeom_has_z(lw2))
329  {
330  lwnotice("One or both of the geometries is missing z-value. The unknown z-value will be regarded as \"any value\"");
331  return lwgeom_maxdistance2d_tolerance(lw1, lw2, tolerance);
332  }
333  /*double thedist;*/
334  DISTPTS3D thedl;
335  LWDEBUG(2, "lwgeom_maxdistance3d_tolerance is called");
336  thedl.mode = DIST_MAX;
337  thedl.distance= -1;
338  thedl.tolerance = tolerance;
339  if (lw_dist3d_recursive(lw1, lw2, &thedl))
340  {
341  return thedl.distance;
342  }
343  /*should never get here. all cases ought to be error handled earlier*/
344  lwerror("Some unspecified error.");
345  return -1;
346 }
double distance
Definition: measures3d.h:41
void lwnotice(const char *fmt,...)
Write a notice out to the notice handler.
Definition: lwutil.c:177
double lwgeom_maxdistance2d_tolerance(const LWGEOM *lw1, const LWGEOM *lw2, double tolerance)
Function handling max distance calculations and dfyllywithin calculations.
Definition: measures.c:181
#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:923
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
#define DIST_MAX
Definition: measures.h:40
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:190

Here is the call graph for this function:

Here is the caller graph for this function: