ホームページ > データベース > mysql チュートリアル > MySQL で緯度と経度を使用して 2 つの場所間の距離を計算するにはどうすればよいですか?

MySQL で緯度と経度を使用して 2 つの場所間の距離を計算するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-05 10:49:11
オリジナル
344 人が閲覧しました

How Can I Calculate the Distance Between Two Locations Using Latitude and Longitude in MySQL?

MySQL で緯度と経度を使用して点間距離を計算する

多くの場合、緯度と経度に基づいて 2 つの場所間の距離を決定することが必要になります。経度座標。これは、近くの施設の検索や移動距離の計算など、多くのシナリオで一般的なタスクです。この距離を正確に計算するために、MySQL は強力なソリューションを提供します。

都市名、緯度、経度の値を含むテーブルがあるシナリオを考えてみましょう。

--------------------------------------------
| id  |  city  |  Latitude  |  Longitude  |
--------------------------------------------
| 1   |   3    |   34.44444 |   84.3434   |
--------------------------------------------
| 2   |   4    | 42.4666667 | 1.4666667   |
--------------------------------------------
| 3   |   5    |  32.534167 | 66.078056   |
--------------------------------------------
| 4   |   6    |  36.948889 | 66.328611   |
--------------------------------------------
| 5   |   7    |  35.088056 | 69.046389   |
--------------------------------------------
| 6   |   8    |  36.083056 |   69.0525   |
--------------------------------------------
| 7   |   9    |  31.015833 | 61.860278   |
--------------------------------------------
ログイン後にコピー
次のようにしたいとします。都市 3 と都市 7 の間の距離を計算します。提供された SQL クエリを使用して、距離を取得できます。 km:

SELECT a.city AS from_city, b.city AS to_city, 
   111.111 *
    DEGREES(ACOS(LEAST(1.0, COS(RADIANS(a.Latitude))
         * COS(RADIANS(b.Latitude))
         * COS(RADIANS(a.Longitude - b.Longitude))
         + SIN(RADIANS(a.Latitude))
         * SIN(RADIANS(b.Latitude))))) AS distance_in_km
  FROM city AS a
  JOIN city AS b ON a.id <> b.id
 WHERE a.city = 3 AND b.city = 7
ログイン後にコピー
クエリは球面余弦則を利用して距離を計算します。距離はキロメートルで表されます。

効率と精度を高めるために、次のような最新のアプローチを使用することをお勧めします。以下のように:

  select ST_Distance_Sphere(
    point(-87.6770458, 41.9631174),
    point(-73.9898293, 40.7628267)) 
ログイン後にコピー
適切な MySQL 関数を採用することで、地球上の 2 点間の距離を正確に決定でき、地理位置情報関連の幅広い要件に対応します。

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

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