9

ポリゴンの地理座標を MySQL データベースに挿入しようとしています。タイプ POLYGON の polygon という名前のフィールドがあり、これらすべてのクエリを実行しようとしましたが、SQL 構文エラーが引き続き発生します。

SET @g = 'POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))';
INSERT INTO 'zones' ('polygon') VALUES (PolyFromText(@g));

INSERT INTO 'zones' ('polygon') VALUES (PolyFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))'));

INSERT INTO 'zones' ('polygon') VALUES (PolyFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327))', 0));

最後のクエリは、phpmyadmins 独自の地理空間ツールを使用して生成され、「Column 'polygon' cannot be null」を返します。どんな助けでも大歓迎です!

4

2 に答える 2

31

その理由は、最後のポイントを終了する null が最初のポイントと等しくないためです。これは、OSGeo の標準 WKT を満たすための条件です。一部の実装ではこれが許容されますが、mysql はこれに厳密です。SQL Server のドキュメントでは、条件。

これを見る

SELECT  Dimension(GeomFromText('POLYGON((-74.13591384887695 40.93750722242824,-74.13522720336914 40.929726129575016,-74.15102005004883 40.9329683629703,-74.14329528808594 40.94256444133327,-74.13591384887695 40.93750722242824)))'));

mysqlのドキュメント

http://dev.mysql.com/doc/refman/5.0/en/gis-class-polygon.html

sqlserver のドキュメント

http://msdn.microsoft.com/en-us/library/bb964739(v=sql.105).aspx

于 2013-03-16T19:07:15.753 に答える