ST_Force3DM
Signature
GEOMETRY ST_Force3DM(GEOMETRY geom);
GEOMETRY ST_Force3DM(GEOMETRY geom, DOUBLE mValue);
Description
Forces a geometry geom to be in XYM mode.
If geom has no M component, then a M value is tacked on.
User can set a default M value (mValue). If not specified, mValue is set to zero.
If geom has already a Z value, then it is removed.
Already XYM geometries are returned untouched.
Examples
No effect on XYM geometries
SELECT ST_Force3DM('POINT M(-10 10 6)');
-- Answer: POINT M(-10 10 6)
Adding M dimension
SELECT ST_Force3DM('POINT(-10 10)');
-- Answer: POINT M(-10 10 0)
SELECT ST_Force3DM('LINESTRING(-10 10, 10 10)');
-- Answer: LINESTRING M(-10 10 0, 10 10 0)
SELECT ST_Force3DM('GEOMETRYCOLLECTION(
POINT(1 1),
LINESTRING(-10 10, 10 10),
POLYGON((2 2, 10 0, 10 5, 0 5, 2 2)))');
-- Answer: GEOMETRYCOLLECTION M (
-- POINT M (1 1 0),
-- LINESTRING M (-10 10 0, 10 10 0),
-- POLYGON M ((2 2 0, 10 0 0, 10 5 0, 0 5 0, 2 2 0)))
Specifying mValue
SELECT ST_Force3DM('POLYGON((2 2, 10 0, 10 5, 0 5, 2 2))', 5);
-- Answer: POLYGON M((2 2 5, 10 0 5, 10 5 5, 0 5 5, 2 2 5))
SELECT ST_Force3DM('MULTIPOINT((2 2), (10 0))', 5);
-- Answer: MULTIPOINT M ((2 2 5), (10 0 5))
Removing Z dimension and adding the M one
SELECT ST_Force3DM('POINT Z(-10 10 12)',10);
-- Answer: POINT M(-10 10 10)
SELECT ST_Force3DM('LINESTRING Z(-10 10 4, 10 10 6)', 3);
-- Answer: LINESTRING M(-10 10 3, 10 10 3)
SELECT ST_Force3DM('POLYGON Z((2 2 4, 10 0 3, 10 5 2, 0 5 1, 2 2 4))', 5);
-- Answer: POLYGON M((2 2 5, 10 0 5, 10 5 5, 0 5 5, 2 2 5))