2

私はPolyのポイントのためにPostgisで働いてきました、そして私はこの機能を持っています:

select * from table_name where st_contains(column, st_setsrid(st_makepoint(-92.095109, 46.804100),4326));

列はmultipoly(((points)))です

MySQLで同様の演習を行う方法を見つけようとしていますが、同様の機能があるかどうか疑問に思いました。MySQLの開発サイトは、Multipolysに関する説明とドキュメントで非常に制限されています。

誰かがこのようなことをしましたか?

4

1 に答える 1

2

MySQLは多くの空間クエリを実装していません-containsについてはよくわかりませんが、それや他の関数を概算する方法はあります。たとえば、特定の長方形の座標ですべての結果を取得し、ここで説明するように距離を計算することで、ポイント間の距離を計算できます。 問題の近似に長方形を使用することもできますcontains。まず、選択したもののより一般的なWKT構文:

select * from table_name where contains(the_polygon, GeomFromText('POINT(12.3 45.6)');

のオープン仕様は実装されていないと思いますが、最小の外接長方形を使用して、ポイントがポリゴン内にあるかどうかを概算するcontainsためのMySQL関数があります。

select * from table_name where MBRContains(the_polygon, GeomFromText('POINT(12.3 45.6)');

座標セットの外側の境界を計算するのは簡単なので、MySQLでは一般的に多くの長方形を使用することになりました。全体的なPostGISははるかに優れていますが、必要に応じてデータベース間でいくつかのことを行うことができます。

更新:この質問がされた後、素晴らしい要約がopengeo.orgに投稿されました; 明らかでない、または述べられていない場合でも、MySQLはMBRを使用することが多いようです。また、ネイティブのpostgresタイプpoint, lseg, box, path, polygon,を確認しcircle、PostGISがどのように機能するか、およびその2d機能の実装者が一般的に鍬に短い行を持っている理由について詳しく知りたい場合。

于 2009-06-16T01:32:32.943 に答える