ホームページ >データベース >mysql チュートリアル >MySQL を使用して 2 つの都市間の距離を計算するにはどうすればよいですか?
質問:
緯度と経度を含む都市データを含むテーブルがあります。コーディネート。この表から、特定の 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 サイトの他の関連記事を参照してください。