PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ geos_envelope_surrogate()

static GEOSGeometry* geos_envelope_surrogate ( const LWGEOM g)
static

Definition at line 60 of file lwgeom_geos_cluster.c.

61 {
62  if (lwgeom_is_empty(g))
63  return GEOSGeom_createEmptyPolygon();
64 
65  if (lwgeom_get_type(g) == POINTTYPE) {
66  const POINT2D* pt = getPoint2d_cp(lwgeom_as_lwpoint(g)->point, 0);
67  return make_geos_point(pt->x, pt->y);
68  } else {
69  const GBOX* box = lwgeom_get_bbox(g);
70  if (!box)
71  return NULL;
72 
73  return make_geos_segment(box->xmin, box->ymin, box->xmax, box->ymax);
74  }
75 }
GEOSGeometry * make_geos_point(double x, double y)
GEOSGeometry * make_geos_segment(double x1, double y1, double x2, double y2)
#define POINTTYPE
LWTYPE numbers, used internally by PostGIS.
Definition: liblwgeom.h:102
const GBOX * lwgeom_get_bbox(const LWGEOM *lwgeom)
Get a non-empty geometry bounding box, computing and caching it if not already there.
Definition: lwgeom.c:743
static const POINT2D * getPoint2d_cp(const POINTARRAY *pa, uint32_t n)
Returns a POINT2D pointer into the POINTARRAY serialized_ptlist, suitable for reading from.
Definition: lwinline.h:101
static uint32_t lwgeom_get_type(const LWGEOM *geom)
Return LWTYPE number.
Definition: lwinline.h:145
static int lwgeom_is_empty(const LWGEOM *geom)
Return true or false depending on whether a geometry is an "empty" geometry (no vertices members)
Definition: lwinline.h:203
static LWPOINT * lwgeom_as_lwpoint(const LWGEOM *lwgeom)
Definition: lwinline.h:131
double ymax
Definition: liblwgeom.h:357
double xmax
Definition: liblwgeom.h:355
double ymin
Definition: liblwgeom.h:356
double xmin
Definition: liblwgeom.h:354
double y
Definition: liblwgeom.h:390
double x
Definition: liblwgeom.h:390

References getPoint2d_cp(), lwgeom_as_lwpoint(), lwgeom_get_bbox(), lwgeom_get_type(), lwgeom_is_empty(), make_geos_point(), make_geos_segment(), POINTTYPE, POINT2D::x, GBOX::xmax, GBOX::xmin, POINT2D::y, GBOX::ymax, and GBOX::ymin.

Here is the call graph for this function: