ホームページ > データベース > mysql チュートリアル > MySQL 空間拡張機能を使用して円内の点を見つけるにはどうすればよいですか?

MySQL 空間拡張機能を使用して円内の点を見つけるにはどうすればよいですか?

DDD
リリース: 2025-01-06 12:27:41
オリジナル
783 人が閲覧しました

How Can I Find Points Within a Circle Using MySQL Spatial Extensions?

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 バージョンが空間拡張子をサポートしていることを確認してください。 SHOW VARIABLES の出力。
  • 空間インデックスにより、空間のクエリ パフォーマンスが大幅に向上します。操作。 「座標」列に空間インデックスを作成することを検討してください。
  • 非ユークリッド距離計算を含むより複雑なシナリオの場合は、球面計算をサポートする追加のツールまたは外部ライブラリを使用する必要がある場合があります。

以上がMySQL 空間拡張機能を使用して円内の点を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート