MySQL 空間拡張を使用した円内の点の配置
背景
MySQL 空間拡張により、次のことが可能になります。ユーザーは、MySQL データベースに保存されている空間データを操作および分析できます。一般的なタスクの 1 つは、指定された円内にある点を特定することです。このシナリオは、位置ベースのサービスや地理空間分析などのアプリケーションでよく発生します。
緯度と経度に対する MySQL 距離関数の使用
非推奨の情報:
質問では当初、MySQL の空間拡張機能について述べられていました。緯度と経度の距離計算はサポートされていませんでした。ただし、この情報は古いです。 MySQL 5.7 の時点では、空間拡張は緯度と経度の座標を使用して定義された点間のユークリッド距離の計算をサポートしています。
実装例
MySQL 空間を使用して円内の点を選択するには拡張機能を使用すると、ST_Distance() 関数を使用できます。この関数は、2 点間の距離をメートル単位で計算します。ユーザーの位置の周囲に半径 100 メートルの仮想円を作成し、「フラグ」座標と円の中心の間の距離がこの半径内にあるかどうかを確認することで、円内の点をフィルタリングできます。
サンプル クエリは次のとおりです。
SELECT id, name, ST_Distance(coordinates, ST_PointFromGeoJSON('{ "type": "Point", "coordinates": [<user_longitude>, <user_latitude>] })) AS distance_in_meters FROM flags HAVING distance_in_meters <= 100 ORDER BY distance_in_meters ASC;
このクエリは、半径 100 メートルの円内のすべての「フラグ」をその順序で取得します。
追加の注意:
以上がMySQL 空間拡張機能を使用して円内の点を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。