PostGIS  2.2.7dev-r@@SVN_REVISION@@
int lw_dist2d_pt_ptarray ( const POINT2D p,
POINTARRAY pa,
DISTPTS dl 
)

search all the segments of pointarray to see which one is closest to p1 Returns minimum distance between point and pointarray

Definition at line 1035 of file measures.c.

References DIST_MIN, DISTPTS::distance, getPoint2d_cp(), lw_dist2d_pt_pt(), lw_dist2d_pt_seg(), LW_FALSE, LW_TRUE, LWDEBUG, DISTPTS::mode, POINTARRAY::npoints, DISTPTS::tolerance, and DISTPTS::twisted.

Referenced by lw_dist2d_point_line(), and lw_dist2d_point_poly().

1036 {
1037  int t;
1038  const POINT2D *start, *end;
1039  int twist = dl->twisted;
1040 
1041  LWDEBUG(2, "lw_dist2d_pt_ptarray is called");
1042 
1043  start = getPoint2d_cp(pa, 0);
1044 
1045  if ( !lw_dist2d_pt_pt(p, start, dl) ) return LW_FALSE;
1046 
1047  for (t=1; t<pa->npoints; t++)
1048  {
1049  dl->twisted=twist;
1050  end = getPoint2d_cp(pa, t);
1051  if (!lw_dist2d_pt_seg(p, start, end, dl)) return LW_FALSE;
1052 
1053  if (dl->distance<=dl->tolerance && dl->mode == DIST_MIN) return LW_TRUE; /*just a check if the answer is already given*/
1054  start = end;
1055  }
1056 
1057  return LW_TRUE;
1058 }
int npoints
Definition: liblwgeom.h:355
int mode
Definition: measures.h:27
#define LWDEBUG(level, msg)
Definition: lwgeom_log.h:50
double tolerance
Definition: measures.h:29
#define DIST_MIN
Definition: measures.h:17
#define LW_FALSE
Definition: liblwgeom.h:62
const POINT2D * getPoint2d_cp(const POINTARRAY *pa, int n)
Returns a POINT2D pointer into the POINTARRAY serialized_ptlist, suitable for reading from...
Definition: lwgeom_api.c:472
#define LW_TRUE
Return types for functions with status returns.
Definition: liblwgeom.h:61
int lw_dist2d_pt_seg(const POINT2D *p, const POINT2D *A, const POINT2D *B, DISTPTS *dl)
lw_dist2d_comp from p to line A->B This one is now sending every occation to lw_dist2d_pt_pt Before i...
Definition: measures.c:2189
int twisted
Definition: measures.h:28
double distance
Definition: measures.h:24
int lw_dist2d_pt_pt(const POINT2D *thep1, const POINT2D *thep2, DISTPTS *dl)
Compares incomming points and stores the points closest to each other or most far away from each othe...
Definition: measures.c:2265

Here is the call graph for this function:

Here is the caller graph for this function: