ホームページ >データベース >mysql チュートリアル >MySQL 空間拡張機能を使用して円内の点を効率的に見つけるにはどうすればよいですか?
MySQL 空間拡張機能を使用した円内の点の検索
ユーザーの位置が緯度と経度によって決定されるシナリオでは、一般的なタスクは次のとおりです。特定の半径内で近くのフラグを取得します。 MySQL の空間拡張機能を使用すると、地理空間データに対して近接クエリを実行できます。
Circle クエリ用の空間関数
MySQL には当初、緯度/経度の距離を計算するための空間関数がありませんでした。 、MySQL 5.7 のリリースでは、そのような地理空間サポートが導入されました。計算。円形近接クエリの場合、ST_Distance_Sphere 関数を使用できます。
SELECT * FROM flags WHERE ST_Distance_Sphere(coordinates, ST_GeomFromText('POINT(latpoint longpoint)')) < 100;
このクエリでは、座標は地理空間ポイントを含む列を表し、latpoint とlongpoint はユーザーの場所の緯度と経度の値です。円の半径はメートル単位で指定します。
代替アプローチ
MySQL 5.7 より前では、ユーザーは代替アプローチを使用できました:
使用例
幾何学模様として「座標」を持つ「フラグ」テーブルを想定point 列では、次のクエリはユーザーの 100 メートル以内にあるすべてのフラグを取得します。 location:
SELECT * FROM flags WHERE ST_Distance_Sphere(coordinates, ST_GeomFromText('POINT(42.81 -70.81)')) < 100;
結論
MySQL の空間拡張機能は、緯度に基づいて円内の点を検索する機能など、地理空間データに対する効率的な近接クエリのための強力なツールを提供します。と経度の位置。
以上がMySQL 空間拡張機能を使用して円内の点を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。