MySQL - 地理空間オブジェクト
-
14-09-2019 - |
質問
私はポリゴン内のポイントをPostgisで作業しており、この関数があります。
select * from table_name where st_contains(column, st_setsrid(st_makepoint(-92.095109, 46.804100),4326));
列は multipoly(((points))) です
私は MySQL で同様の演習を行う方法を見つけようとしていますが、それを行うための同様の関数があるかどうか疑問に思いました。MySQL の開発サイトには、Multipolys に関する説明とドキュメントが非常に限られています。
誰かがこのようなことをしたことがありますか?
解決
MySQL は多くの空間クエリを実装していません。contains についてはよくわかりませんが、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 機能の実装者が一般に作業する時間が短い理由をさらに理解したい場合は、