0

mysql データベースに多角形を挿入しようとしています。Polygon シェイプの頂点は double 値で構成されます。値を挿入するには、次のクエリで試しました。しかし、私は私のエラーとして次のようになりました。

INSERT INTO HIBERNATE_SPATIAL 
(PRD_GEO_REGION_ID,OWNER_ID,GEO_REGION_NAME,GEO_REGION_DESCRIPTION,GEO_REGION_DEFINITION) 
VALUES (8,1,'POLYGON8','SHAPE8',Polygon(LineString(10.12345612341243,11.12345612341234),LineString(10.34512341246,11.4123423456),LineString(10.31423424456,11.34123423456),LineString(10.341234256,11.3412342456),LineString(10.11423423456,11.123424)));

表の説明

+------------------------+--------------+------+-----+---------+----------------+
| Field                  | Type         | Null | Key | Default | Extra          |
+------------------------+--------------+------+-----+---------+----------------+
| PRD_GEO_REGION_ID      | int(11)      | NO   | PRI | NULL    | auto_increment |
| OWNER_ID               | decimal(3,0) | NO   |     | NULL    |                |
| GEO_REGION_NAME        | varchar(50)  | NO   | UNI | NULL    |                |
| GEO_REGION_DESCRIPTION | varchar(70)  | YES  |     | NULL    |                |
| GEO_REGION_DEFINITION  | geometry     | YES  |     | NULL    |                |
+------------------------+--------------+------+-----+---------+----------------+

エラー :_:

エラー 1367 (22007): 解析中に不正な非ジオメトリ '10.12345612341243' 値が見つかりました

よろしく、アルンラージ。

4

1 に答える 1

1

問題を解決しました。Decimal 値が正常に格納されました。私は2つの間違いを犯しました。

1 ) LineString は Points データ型のみを格納できます (10 進値や座標ではありません)。修正された構文は次のとおりです。

INSERT INTO HIBERNATE_SPATIAL 
(PRD_GEO_REGION_ID,OWNER_ID,GEO_REGION_NAME,GEO_REGION_DESCRIPTION,GEO_REGION_DEFINITION) 
VALUES (8,1,'POLYGON8','SHAPE8',Polygon(LineString(POINT(10.12345612341243,11.12345612341234)),LineString(POINT(10.34512341246,11.4123423456)),LineString(POINT(10.31423424456,11.34123423456)),LineString(POINT(10.341234256,11.3412342456)),LineString(POINT(10.11423423456,11.123424))));

2 ) 多角形の場合。形状は閉じている必要があります (始点と終点は同じである必要があります)。 それが問題でした。

ワーキングクエリ

INSERT INTO HIBERNATE_SPATIAL 
(PRD_GEO_REGION_ID,OWNER_ID,GEO_REGION_NAME,GEO_REGION_DESCRIPTION,GEO_REGION_DEFINITION) 
VALUES (8,1,'POLYGON8','SHAPE8',Polygon(LineString(POINT(10.12345612341243,11.12345612341234)),LineString(POINT(10.34512341246,11.4123423456)),LineString(POINT(10.31423424456,11.34123423456)),LineString(POINT(10.341234256,11.3412342456)),LineString(POINT(10.12345612341243,11.12345612341234))));
于 2014-03-05T04:58:23.003 に答える