ホームページ > バックエンド開発 > PHPチュートリアル > MySQL のみを使用して大圏距離を計算するにはどうすればよいですか?

MySQL のみを使用して大圏距離を計算するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-26 14:18:11
オリジナル
559 人が閲覧しました

How Can I Calculate Great Circle Distance Using Only MySQL?

MySQL 大圏距離 (Haversine Formula)

この記事では、MySQL のみを使用して 2 つの地理座標間の大圏距離を計算するという課題について説明します。 。従来の PHP 実装は、複数の SQL クエリと複雑な計算を必要とし、煩雑になる場合があります。

解決策

PHP コードを純粋な MySQL に変換するには、Haversine 公式を利用します。 、球上の 2 点間の距離を計算する数式。この式は、MySQL ACOS() 関数と RADIANS() 関数でサポートされています。

対応する MySQL クエリは次のとおりです:

SELECT id, (
  3959 * ACOS(
    COS(RADIANS(37)) * COS(RADIANS(lat))
    * COS(RADIANS(lon) - RADIANS(-122)) + SIN(RADIANS(37)) * SIN(RADIANS(lat))
  )
) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;
ログイン後にコピー

説明

  • クエリは ID とマーカーからの計算された距離を選択しますtable.
  • ACOS() 関数は 2 点間の角度を計算し、その角度に 3959 (マイル単位の地球の半径、キロメートル単位の場合は 6371) を掛けます。
  • The RADIANS()関数は、座標をラジアンに変換します。
  • HAVING 句は、距離が以下の結果を除外します。 25 マイル (またはキロメートル)。
  • ORDER BY 句は、結果を距離の昇順に並べ替えます。
  • LIMIT 句は、結果の数を 20 に制限します。

この MySQL ベースのアプローチを使用すると、外部の PHP 計算や追加の SQL を必要とせずに、座標間の大圏距離を効率的に計算できます。クエリ。

以上がMySQL のみを使用して大圏距離を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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