ST_PointOnSurface

Signature

POINT ST_InteriorPoint(GEOMETRY geom);

Description

Returns an interior point of geom, if it possible to calculate such a point. Otherwise, returns a point on the boundary of geom.

The point returned is always the same for the same input Geometry.

Note

Implements the OpenGIS Simple Features Implementation Specification for SQL version 1.2.1

Examples

SELECT ST_PointOnSurface('POINT(1 5)');
-- Answer: POINT(1 5)
SELECT ST_PointOnSurface('MULTIPOINT((4 4), (1 1), (1 0), (0 3)))');
-- Answer: POINT(1 1)
SELECT ST_PointOnSurface('LINESTRING(-1 5, 0 10)');
-- Answer: POINT(0 10)
SELECT ST_PointOnSurface('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))');
-- Answer: POINT(2.5 2.5)

SELECT ST_PointOnSurface('GEOMETRYCOLLECTION(
                             POLYGON((1 2, 4 2, 4 6, 1 6, 1 2)),
                             LINESTRING(2 6, 6 2),
                             MULTIPOINT((4 4), (1 1), (0 3)))');
-- Answer: POINT(2.5 4)

Comparison with ST_Centroid

CREATE TABLE input(geom GEOMETRY);
INSERT INTO input VALUES (
    'POLYGON((0 0, 5 0, 5 1, 1 1, 1 4, 5 4, 5 5, 0 5, 0 0))');
SELECT ST_PointOnSurface(geom) POINT,
       ST_Centroid(geom) CENTROID FROM input;

Answer:

POINT

CENTROID

POINT(0.5 2.5)

POINT(2.0384615384615383 2.5)

See also