ホームページ >バックエンド開発 >PHPチュートリアル >Haversine 公式を使用して MySQL で大圏距離を計算する方法?

Haversine 公式を使用して MySQL で大圏距離を計算する方法?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-19 22:23:09595ブラウズ

How to Calculate Great Circle Distance in MySQL Using the Haversine Formula?

ハーバーサイン式を使用した MySQL 大圏距離

MySQL でハーバーサイン距離とも呼ばれる大圏距離を計算するには、次の手順を実行します。

1.経度と緯度の値を取得する

まず、関連するデータ ソース (PHP スクリプトなど) から経度と緯度の座標を取得します。

2.ハーバーサイン公式を使用して距離を計算する

ハーバーサイン公式は、球上の 2 点間の大円距離を計算するために使用されます。 MySQL では、次の SQL ステートメントは次の式を実装します。

(
    3959 * acos(
        cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
        sin( radians(origin_lat) ) * sin( radians(lat) )
    )
)
    origin_lat: 原点の緯度
  • origin_lon: 原点の経度
  • lat: ターゲットの緯度
  • lon: ターゲット経度

3.距離範囲内のクエリ

指定した距離範囲内の位置を検索するには、次の SQL ステートメントを使用します:

SELECT id,
    (
        3959 * acos(
            cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
            sin( radians(origin_lat) ) * sin( radians(lat) )
        )
    ) AS distance
FROM locations
HAVING distance < distance_range
ORDER BY distance
LIMIT num_results;
    locations: 緯度と経度の列を含むテーブル
  • distance_range: マイル単位の最大距離 (6371 を使用する場合はキロメートル)定数)
  • num_results: 返される結果の数

4。 SQL クエリの例

これは、座標 (37, -122) から 25 マイル以内で最も近い 20 の場所を検索するために使用できる SQL クエリの例です。

SELECT id,
    (
        3959 * acos(
            cos( radians(37) ) * cos( radians(lat) ) * cos( radians(lon) - radians(-122) ) +
            sin( radians(37) ) * sin( radians(lat) )
        )
    ) AS distance
FROM locations
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;
Byこれらの手順に従って、Haversine 式を使用して MySQL 内で大圏距離の計算を完全に実行できます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。