PostGIS  2.2.8dev-r@@SVN_REVISION@@

◆ lwgeom_maxdistance3d_tolerance()

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 302 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().

303 {
304  if(!lwgeom_has_z(lw1) || !lwgeom_has_z(lw2))
305  {
306  lwnotice("One or both of the geometries is missing z-value. The unknown z-value will be regarded as \"any value\"");
307  return lwgeom_maxdistance2d_tolerance(lw1, lw2, tolerance);
308  }
309  /*double thedist;*/
310  DISTPTS3D thedl;
311  LWDEBUG(2, "lwgeom_maxdistance3d_tolerance is called");
312  thedl.mode = DIST_MAX;
313  thedl.distance= -1;
314  thedl.tolerance = tolerance;
315  if (lw_dist3d_recursive(lw1, lw2, &thedl))
316  {
317  return thedl.distance;
318  }
319  /*should never get here. all cases ought to be error handled earlier*/
320  lwerror("Some unspecified error.");
321  return -1;
322 }
double distance
Definition: measures3d.h:27
void lwnotice(const char *fmt,...)
Write a notice out to the notice handler.
Definition: lwutil.c:61
double lwgeom_maxdistance2d_tolerance(const LWGEOM *lw1, const LWGEOM *lw2, double tolerance)
Function handling max distance calculations and dfyllywithin calculations.
Definition: measures.c:167
#define LWDEBUG(level, msg)
Definition: lwgeom_log.h:50
Structure used in distance-calculations.
Definition: measures3d.h:25
int lwgeom_has_z(const LWGEOM *geom)
Return LW_TRUE if geometry has Z ordinates.
Definition: lwgeom.c:836
int mode
Definition: measures3d.h:30
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:375
double tolerance
Definition: measures3d.h:32
#define DIST_MAX
Definition: measures.h:16
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:74
Here is the call graph for this function:
Here is the caller graph for this function: