/** Function initialazing max distance calculation */ double lwgeom_maxdistance2d(LWGEOM *lw1, LWGEOM *lw2) { LWDEBUG(2, "lwgeom_maxdistance2d is called"); return lwgeom_maxdistance2d_tolerance( lw1, lw2, 0.0 ); }
/** Function handling 3d max distance calculations and dfullywithin calculations. The difference is just the tolerance. */ double lwgeom_maxdistance3d_tolerance(const LWGEOM *lw1, const LWGEOM *lw2, double tolerance) { if(!lwgeom_has_z(lw1) || !lwgeom_has_z(lw2)) { lwnotice("One or both of the geometries is missing z-value. The unknown z-value will be regarded as \"any value\""); return lwgeom_maxdistance2d_tolerance(lw1, lw2, tolerance); } /*double thedist;*/ DISTPTS3D thedl; LWDEBUG(2, "lwgeom_maxdistance3d_tolerance is called"); thedl.mode = DIST_MAX; thedl.distance= -1; thedl.tolerance = tolerance; if (lw_dist3d_recursive(lw1, lw2, &thedl)) { return thedl.distance; } /*should never get here. all cases ought to be error handled earlier*/ lwerror("Some unspecified error."); return -1; }