0

British National Grid 座標を使用してポリゴンの重心を作成しようとしています 以下は私のコードです

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)'));

これが機能しない理由はありますか?

4

2 に答える 2

1

いくつかのこと、

POLYGON 文字列の末尾の ) を忘れました

する必要があります

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

値を st_centroid 関数に渡す前に、ポリゴン文字列をジオメトリに変換する必要があります

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

それで...

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))')));
于 2013-02-15T17:49:51.563 に答える
0

エラーが「解析エラー-無効なジオメトリ」である場合は、無効なジオメトリ定義があり、それを修正する必要があります。

ジオメトリを分離し、SELECTを実行して、どちらが間違っているかを確認してください。ST_Centroidのパラメータだと思います。

ああ-そして、PostgreSQLを少なくとも8.3.23にアップグレードします-それはまだサポートされていませんが、少なくともそれはすべてのバグ修正を持っています。理想的には9.2にアップグレードします。

アップグレードできない場合は、このプロジェクトから削除できないかどうかを確認してください。データベースが破損している場合は、おそらくあなたが責任を負うことになります。

于 2013-02-15T17:41:41.153 に答える