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機能の実装者が一般的に鍬に短い行を持っている理由について詳しく知りたい場合。