ST_Force3D

Signature

GEOMETRY ST_Force3D(GEOMETRY geom);
GEOMETRY ST_Force3D(GEOMETRY geom, zValue DOUBLE);

Description

Converts geom to a 3D Geometry by setting its nonexistent z-values to 0.

User can set a default Z value (zValue). If not specified, zValue is set to zero.

If geom has already a M value, then it is removed.

Already 3D (XYZ) geometries are returned untouched.

Examples

No effect on XYZ geometries

SELECT ST_Force3D('POINT Z(-10 10 6)');
-- Answer:         POINT Z(-10 10 6)

Adding Z dimension

SELECT ST_Force3D('POINT(-10 10)');
-- Answer:         POINT Z(-10 10 0)
SELECT ST_Force3D('LINESTRING(-10 10, 10 10)');
-- Answer:         LINESTRING Z(-10 10 0, 10 10)
SELECT ST_Force3D('POLYGON((2 2, 10 0, 10 5, 0 5, 2 2))');
-- Answer:         POLYGON Z ((2 2 0, 10 0 0, 10 5 0, 0 5 0, 2 2 0))
SELECT ST_Force3D('GEOMETRYCOLLECTION(
                       POINT(1 1), 
                       LINESTRING(-10 10, 10 10), 
                       POLYGON((2 2, 10 0, 10 5, 0 5, 2 2)))');
-- Answer:         GEOMETRYCOLLECTION Z (
--                     POINT Z (1 1 0), 
--                     LINESTRING Z (-10 10 0, 10 10 0), 
--                     POLYGON Z ((2 2 0, 10 0 0, 10 5 0, 0 5 0, 2 2 0)))

Specifying zValue

SELECT ST_Force3D('POLYGON((2 2, 10 0, 10 5, 0 5, 2 2))', 5);
-- Answer:         POLYGON Z((2 2 5, 10 0 5, 10 5 5, 0 5 5, 2 2 5))
SELECT ST_Force3D('MULTIPOINT((2 2), (10 0))', 5);
-- Answer:         MULTIPOINT Z ((2 2 5), (10 0 5))

Removing M dimension and adding the Z one

SELECT ST_Force3D('POINT M(-10 10 12)',10);
-- Answer:         POINT Z(-10 10 10)

SELECT ST_Force3D('LINESTRING M(-10 10 4, 10 10 6)', 3);
-- Answer:         LINESTRING Z(-10 10 3, 10 10 3)

SELECT ST_Force3D('POLYGON M((2 2 4, 10 0 3, 10 5 2, 0 5 1, 2 2 4))', 5);
-- Answer:         POLYGON Z((2 2 5, 10 0 5, 10 5 5, 0 5 5, 2 2 5))

See also