#postgresql #postgis
Вопрос:
Интересно, как создавать полилинейные геометрии в Postgis.
CREATE TABLE tabm (oid integer primary key);
SELECT AddGeometryColumn ('public','tabm','geom',25832,'MULTILINESTRING',3);
insert into tabm(oid,geom) values(
1,
ST_GeomFromText('MULTILINESTRINGM ((572929 5831262 300, 572929 5831562 400))')
);
Приведенный выше код приводит к
ERROR: FEHLER: Column has Z dimension but geometry does not
SQL state: 22023
(PosgreSQL 13.3)
Ответ №1:
geom
Столбец не относится к типу MULTILINESTRINGM
. Измените столбец, и вы сможете выполнять вставки:
SELECT AddGeometryColumn ('public','tabm','geom',25832,'MULTILINESTRINGM',3);
ДЕМОНСТРАЦИЯ: db<>fiddle
CREATE TABLE tabm (oid integer primary key);
SELECT AddGeometryColumn ('public','tabm','geom',25832,'MULTILINESTRINGM',3);
INSERT INTO tabm(oid,geom) VALUES
(1,'SRID=25832;MULTILINESTRINGM ((572929 5831262 300, 572929 5831562 400))'::geometry);
SELECT ST_AsText(i.geom),ST_M(i.geom) FROM tabm,
LATERAL ST_DumpPoints(geom) i(j);
st_astext st_m
-----------------------------------
POINT M (572929 5831262 300) 300
POINT M (572929 5831562 400) 400
Комментарии:
1. Спасибо! Идеальный ответ.