2009-06-15 5 views
2

私はポリの中でポイントのためのPostGISに取り組んできましたし、私はこの機能を持っている:のMySQL - 地理空間オブジェクト

はTABLE_NAME st_contains(列、st_setsrid(st_makepoint(-92.095109、46.804100)、4326から選択* ));

列には、私は、MySQLと同様の運動を行うための方法を見つけようとしている

multipoly(((ポイント)))であり、同様の機能がそうすることがあった場合は疑問に思いました。 MySQLの開発サイトは、Multipolysの説明とドキュメントで非常に制限されています。

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

答えて

2

MySQLには多くの空間クエリが実装されていません - 私は含まれているかどうかはわかりませんが、それと他の関数を近似する方法があります。たとえば、指定された矩形内の座標を使用してすべての結果を引っ張り、距離を計算することによって、点間の距離を計算できます。here.contains問題の近似に長方形を使用することもできます。まず、あなたの選択のためのより一般的なWKTの構文は:select * from table_name where contains(the_polygon, GeomFromText('POINT(12.3 45.6)');

は私がcontainsためのオープン仕様が実装されていないと思いますが、MySQLの機能は、あなたのポイントがポリゴン内にあるかどうかを近似するminimum bounding rectangleを使用してのためにそこにあります:

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

座標セットの外側の境界を計算することは容易であるので、私は、MySQL上で、一般的に長方形の多くを使用して終了しました。全体的なPostGISははるかに優れていますが、必要があればいくつかのクロスデータベースを行うことができます。

更新:この質問の後に、nice summaryがopengeo.orgに投稿されました。それが明らかでないか、MySQLがMBRを使用することが多いとさえ言われています。また、PostGISがどのように動作するのか、なぜ2dフィーチャーの実装者が一般的に短い行を持つのかを理解したい場合は、ネイティブpostgresタイプpoint, lseg, box, path, polygon,circleを見てください。

+0

ありがとうございます、これは完全に機能しています。あなたの助けと知恵をありがとう! – Petrogad

関連する問題