Sql Postgres 8.3.1质心

Sql Postgres 8.3.1质心,sql,postgresql,postgis,centroid,Sql,Postgresql,Postgis,Centroid,我正在尝试使用英国国家栅格坐标为多边形创建质心 下面是我的代码 CREATE TABLE PROJECT.CINEMAS (CINEMA_ID INTEGER NOT NULL, CINEMA_NAME VARCHAR(25) NOT NULL, ADDRESS_NUMBER INTEGER NOT NULL, POST_CODE VARCHAR(8) NOT NULL, STREET VARCHAR (25) NOT NULL, TOWN VARCHAR (25) NOT NULL, OPEN

我正在尝试使用英国国家栅格坐标为多边形创建质心 下面是我的代码

CREATE TABLE PROJECT.CINEMAS
(CINEMA_ID INTEGER NOT NULL,
CINEMA_NAME VARCHAR(25) NOT NULL,
ADDRESS_NUMBER INTEGER NOT NULL,
POST_CODE VARCHAR(8) NOT NULL,
STREET VARCHAR (25) NOT NULL,
TOWN VARCHAR (25) NOT NULL,
OPENING_TIME TIME NOT NULL,
CLOSING_TIME TIME NOT NULL,
);

/* Add a geometry column containing point coordinates*/ 

SELECT ADDGEOMETRYCOLUMN('project','cinemas', 'COORDINATES_GEOM', '27700','POLYGON',2);

/* Create a cinema centroid geometry column

SELECT ADDGEOMETRYCOLUMN('project','cinemas', 'CENTROID', '27700','POINT',2);

INSERT INTO PROJECT.CINEMAS 
VALUES
(1,'ODEON LEICESTER SQUARE', 24, 'WC2H 7LQ', 'LEICESTER SQUARE', 'LONDON', '11:00:00 AM','11:00:00 PM',GeometryFromText('POLYGON((529901 180738,529944 180745, 529947 180717, 529906 180710, 529905 180719,529902 180718,529900 180727,529903 180729,529901 180738)',27700),ST_Centroid('POLYGON((529901 180738,529944 180745, 529947 180717, 529906 180710, 529905 180719,529902 180718,529900 180727,529903 180729,529901 180738)'));
你知道为什么这不起作用吗?

如果错误是“解析错误-无效几何体”,那么你有一个无效的几何体定义,需要修复它

尝试分离出几何体并执行“选择”以查看哪一个是错误的。我猜这是ST_形心的参数

哦-然后,将PostgreSQL升级到至少8.3.23-这仍然不受支持,但至少它已经修复了所有的错误。最好升级到9.2

如果您无法升级,请查看是否无法从此项目中删除您-如果数据库损坏,那么您可能最终要为此负责。

两件事

您忘记了多边形字符串中的一个结束符)

应该是

GeometryFromText('POLYGON((529901 180738,529944 180745, 529947 180717, 529906 180710, 529905 180719,529902 180718,529900 180727,529903 180729,529901 180738))',27700)
在将值传递到st_形心函数之前,需要将多边形字符串转换为几何体

ST_Centroid(GeometryFromText('POLYGON((529901 180738,529944 180745, 529947 180717, 529906 180710, 529905 180719,529902 180718,529900 180727,529903 180729,529901 180738))'))
所以


1.什么不起作用。你会犯错误,抽烟,外星人入侵吗?2.请不要告诉我你真的在使用一个版本的PostgreSQL,它不仅是生命的终结,而且缺少22个bug修复更新?谢谢回复!我得到的错误是:error:parse error-无效几何体对于我正在使用的版本,我被强制通过虚拟机将其用于此项目,因此无法更改它。另外:8.3现在不受支持。你真的应该计划升级到一个更新的版本。非常感谢。现在效果很好。现在回想起来,这是一个明显的错误!
INSERT INTO PROJECT.CINEMAS 
VALUES (1,'ODEON LEICESTER SQUARE', 24, 'WC2H 7LQ', 'LEICESTER SQUARE', 'LONDON', '11:00:00 AM','11:00:00 PM',
GeometryFromText('POLYGON((529901 180738,529944 180745, 529947 180717, 529906 180710, 529905 180719,529902 180718,529900 180727,529903 180729,529901 180738))',27700), 
ST_Centroid(GeometryFromText('POLYGON((529901 180738,529944 180745, 529947 180717, 529906 180710, 529905 180719,529902 180718,529900 180727,529903 180729,529901 180738))')));