PostGIS 3.6.2dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ lwpoly_area()

double lwpoly_area ( const LWPOLY poly)

Find the area of the outer ring - sum (area of inner rings).

Definition at line 434 of file lwpoly.c.

435{
436 double poly_area = 0.0;
437 uint32_t i;
438
439 if ( ! poly )
440 lwerror("lwpoly_area called with null polygon pointer!");
441
442 for ( i=0; i < poly->nrings; i++ )
443 {
444 POINTARRAY *ring = poly->rings[i];
445 double ringarea = 0.0;
446
447 /* Empty or messed-up ring. */
448 if ( ring->npoints < 3 )
449 continue;
450
451 ringarea = fabs(ptarray_signed_area(ring));
452 if ( i == 0 ) /* Outer ring, positive area! */
453 poly_area += ringarea;
454 else /* Inner ring, negative area! */
455 poly_area -= ringarea;
456 }
457
458 return poly_area;
459}
double ptarray_signed_area(const POINTARRAY *pa)
Returns the area in cartesian units.
Definition ptarray.c:1143
void void lwerror(const char *fmt,...) __attribute__((format(printf
Write a notice out to the error handler.
POINTARRAY ** rings
Definition liblwgeom.h:519
uint32_t nrings
Definition liblwgeom.h:524
uint32_t npoints
Definition liblwgeom.h:427

References lwerror(), POINTARRAY::npoints, LWPOLY::nrings, ptarray_signed_area(), and LWPOLY::rings.

Referenced by lwcurvepoly_area(), lwgeom_area(), lwmpoly_to_points(), and lwpoly_to_points().

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