PostGIS中的几何SRID问题


11

我在PostGIS中选择了我的桌子(实地)

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

我成功使用更改了表的SRID

select UpdateGeometrySRID('public', 'borne', 'shape_borne', 26191) ;

旧的SRID为0。

问题是,当我尝试向表中添加新元素时,borne出现此消息错误:

geometry srid (0) does not match column srid (26191)

在此处输入图片说明

那是我的问题!SRID已更新,但是当我尝试添加新点时,出现此消息。


2
在尝试插入数据之前,请确保为数据提供与表匹配的SRID。
伊恩·特顿

我不明白,我的数据就是我的桌子!是一样的,不是吗?
Yahia El Haddad 2014年

1
您可以向我们展示您的插入语句之一吗?
伊恩·特顿

像这样:INSERT INTO borne(num_borne,shape_borne)VALUES(1,POINT(25800,256000));
Yahia El Haddad 2014年

1
您的插入语句中的几何没有srid。这就是错误的原因
Devdatta Tengshe 2014年

Answers:


14

发生的情况是,您尝试插入的数据未分配SRID。要分配一个几何图形,请尝试使用ST_SetSRID()将插入的几何图形包装在insert语句中。例如,

INSERT INTO public.borne (num_borne, shape_borne) 
    (SELECT num_borne, ST_SetSRID(shape_borne, 26191)
     FROM public.sometable);

要么

INSERT INTO public.borne (num_borne, shape_borne) 
VALUES (1, ST_SetSRID(ST_MakePoint(25800 , 256000), 26191));

我没有桌子
Yahia El Haddad 2014年

更新以包括您的用例。
MakinFlippyFloppy 2014年

那没起效 !
Yahia El Haddad 2014年

错误消息是什么?另外,尝试运行:select find_srid('public', 'borne', 'shape_borne');确保已在字段上实际设置了srid。
MakinFlippyFloppy 2014年

没关系!它正在使用INSERT INTO public.borne(num_borne,shape_borne)VALUES(1,ST_SetSRID(ST_MakePoint(25800,256000),26191))工作;强制使用ST_SetSRID(ST_MakePoint(... 0 0,1 0,1 1,0 1,0 0))));
Yahia El Haddad 2014年

6

如果要在pgAdmin III中输入几何的WKT,则需要使用EWKT语法指定SRID,否则默认为0。

在pgAdmin III的geometry字段中输入以下内容:

SRID=26191;POINT(25800 256000)

否则,@ MakinFlippyFloppy使用ST_SetSRID具有正确的SQL方式。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.