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

MySQL を使用して 2 つの都市間の距離を計算するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-15 01:13:17364ブラウズ

How to Calculate the Distance Between Two Cities Using MySQL?

MySQL を使用して地理座標間の距離を計算する

質問:

緯度と経度を含む都市データを含むテーブルがあります。コーディネート。この表から、特定の 2 つの都市間の距離を計算する必要があります。プロセスをガイドします。

答え:

緯度と経度を使用して 2 点間の距離を計算するには、MySQL の球面余弦則の式を利用できます。詳細な解決策は次のとおりです。

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
このクエリでは、都市テーブルで自己結合を実行して、2 つの都市の座標ペアを取得します。次に、球面余弦則の公式を適用して、距離をキロメートル単位で計算します。

注:

法定の距離を使用したい場合は、キロメートルの代わりにマイルの場合は、定数 111.111 を次のように置き換えます。 69.0.

あるいは、より現代的なアプローチの場合:

Alexio Vay が提案しているように、MySQL で ST_Distance_Sphere() 関数を使用できます。 2 点間の距離を計算する効率的な方法:

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

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