postgis -ERROR为“enforce_geotype_the_geom”

时间:2012-03-05 12:58:28

标签: postgresql postgis

我有一个名为 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"

这个约束意味着什么?如何将值插入到同一个??

2 个答案:

答案 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类型的更好保证。