ST_DumpPoints — Returns a set of geometry_dump (geom,path) rows of all points that make up a geometry.
geometry_dump[]ST_DumpPoints(
geometry geom)
;
This set-returning function (SRF) returns a set of geometry_dump
rows formed
by a geometry (geom
) and an array of integers (path
).
The geom
component of geometry_dump
are
all the POINT
s that make up the supplied geometry
The path
component of geometry_dump
(an integer[]
)
is an index reference enumerating the POINT
s of the supplied geometry.
For example, if a LINESTRING
is supplied, a path of {i}
is
returned where i
is the nth
coordinate in the LINESTRING
.
If a POLYGON
is supplied, a path of {i,j}
is returned where
i
is the outer ring followed by the inner rings and j
enumerates the POINT
s.
Availability: 1.5.0
This function supports 3d and will not drop the z-index.
Throws an error if curved geometries or other unsupported geometries are used.
SELECT path, ST_AsText(geom) FROM ( SELECT (ST_DumpPoints(g.geom)).* FROM (SELECT 'GEOMETRYCOLLECTION( POINT ( 0 1 ), LINESTRING ( 0 3, 3 4 ), POLYGON (( 2 0, 2 3, 0 2, 2 0 )), POLYGON (( 3 0, 3 3, 6 3, 6 0, 3 0 ), ( 5 1, 4 2, 5 2, 5 1 )), MULTIPOLYGON ( (( 0 5, 0 8, 4 8, 4 5, 0 5 ), ( 1 6, 3 6, 2 7, 1 6 )), (( 5 4, 5 8, 6 7, 5 4 )) ) )'::geometry AS geom ) AS g ) j; path | st_astext -----------+------------ {1,1} | POINT(0 1) {2,1} | POINT(0 3) {2,2} | POINT(3 4) {3,1,1} | POINT(2 0) {3,1,2} | POINT(2 3) {3,1,3} | POINT(0 2) {3,1,4} | POINT(2 0) {4,1,1} | POINT(3 0) {4,1,2} | POINT(3 3) {4,1,3} | POINT(6 3) {4,1,4} | POINT(6 0) {4,1,5} | POINT(3 0) {4,2,1} | POINT(5 1) {4,2,2} | POINT(4 2) {4,2,3} | POINT(5 2) {4,2,4} | POINT(5 1) {5,1,1,1} | POINT(0 5) {5,1,1,2} | POINT(0 8) {5,1,1,3} | POINT(4 8) {5,1,1,4} | POINT(4 5) {5,1,1,5} | POINT(0 5) {5,1,2,1} | POINT(1 6) {5,1,2,2} | POINT(3 6) {5,1,2,3} | POINT(2 7) {5,1,2,4} | POINT(1 6) {5,2,1,1} | POINT(5 4) {5,2,1,2} | POINT(5 8) {5,2,1,3} | POINT(6 7) {5,2,1,4} | POINT(5 4) (29 rows)