PostGIS  3.1.6dev-r@@SVN_REVISION@@

◆ ptarray_nudge_geodetic()

static int ptarray_nudge_geodetic ( POINTARRAY pa)
static

When features are snapped or sometimes they are just this way, they are very close to the geodetic bounds but slightly over.

This routine nudges those points, and only those points, back over to the bounds. http://trac.osgeo.org/postgis/ticket/1292

Definition at line 3342 of file lwgeodetic.c.

3343 {
3344 
3345  uint32_t i;
3346  POINT4D p;
3347  int altered = LW_FALSE;
3348  int rv = LW_FALSE;
3349  static double tolerance = 1e-10;
3350 
3351  if ( ! pa )
3352  lwerror("ptarray_nudge_geodetic called with null input");
3353 
3354  for(i = 0; i < pa->npoints; i++ )
3355  {
3356  getPoint4d_p(pa, i, &p);
3357  if ( p.x < -180.0 && (-180.0 - p.x < tolerance) )
3358  {
3359  p.x = -180.0;
3360  altered = LW_TRUE;
3361  }
3362  if ( p.x > 180.0 && (p.x - 180.0 < tolerance) )
3363  {
3364  p.x = 180.0;
3365  altered = LW_TRUE;
3366  }
3367  if ( p.y < -90.0 && (-90.0 - p.y < tolerance) )
3368  {
3369  p.y = -90.0;
3370  altered = LW_TRUE;
3371  }
3372  if ( p.y > 90.0 && (p.y - 90.0 < tolerance) )
3373  {
3374  p.y = 90.0;
3375  altered = LW_TRUE;
3376  }
3377  if ( altered == LW_TRUE )
3378  {
3379  ptarray_set_point4d(pa, i, &p);
3380  altered = LW_FALSE;
3381  rv = LW_TRUE;
3382  }
3383  }
3384  return rv;
3385 }
#define LW_FALSE
Definition: liblwgeom.h:108
int getPoint4d_p(const POINTARRAY *pa, uint32_t n, POINT4D *point)
Definition: lwgeom_api.c:126
#define LW_TRUE
Return types for functions with status returns.
Definition: liblwgeom.h:107
void ptarray_set_point4d(POINTARRAY *pa, uint32_t n, const POINT4D *p4d)
Definition: lwgeom_api.c:370
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:190
double x
Definition: liblwgeom.h:428
double y
Definition: liblwgeom.h:428
uint32_t npoints
Definition: liblwgeom.h:441

References getPoint4d_p(), LW_FALSE, LW_TRUE, lwerror(), POINTARRAY::npoints, ptarray_set_point4d(), POINT4D::x, and POINT4D::y.

Referenced by lwgeom_nudge_geodetic().

Here is the call graph for this function:
Here is the caller graph for this function: