我有一个名为 sta 的表。我想再添加一个列。我是这样使用以下语句:
SELECT AddGeometryColumn ('public','station','the_geom',4326,'POINT',2);
the_geom 列已添加以下关键字:
CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326)
我想在 the_geom 列中插入值。我尝试了:
update station set the_geom = ST_GeomFromEWKT('SRID=4326;POINT(65.6471666666667 25.0368333333333)');
但是我收到了错误:
ERROR: new row for relation "station" violates check constraint "enforce_geotype_the_geom"
这个约束意味着什么?如何将值插入到同一个??
答案 0 :(得分:1)
您不需要约束来检查尺寸,地理位置及其SRID。 postgis / postgres的typmod已经为你做了。
函数AddGeometryColumn
强制使用typmod(因为use_typmod参数是默认true
,您可以在addgeometrycolumn documentation中看到。
并且,我建议使用ALTER TABLE
语句将几何列添加到表
ALTER TABLE station ADD COLUMN the_geom geometry(Point,4326);
你不需要关心检查(SRID,几何类型)。
答案 1 :(得分:0)
不确定为什么st_geom_fromewkt不起作用,但你可以尝试不同的东西:update station set the_geom = st_setSRID(st_point(65.6471666666667,25.0368333333333),4326);这可能是Point类型的更好保证。