問題:
您有一個包含帶有緯度和經度的城市數據的表座標。您需要從此表計算兩個特定城市之間的距離。指導我們完成整個過程。
答案:
要用緯度和經度計算兩點之間的距離,我們可以利用 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
在此查詢中,我們對城市表執行自聯接以檢索兩個城市的坐標對。然後,我們應用球餘弦定律公式來計算它們之間的距離,單位為公里。
注意:
如果您喜歡法定距離英里而不是公里,將常數111.111 替換為69.0.
或者,對於更現代的方法:
根據Alexio Vay的建議,您可以使用 MySQL 中的 ST_Distance_Sphere() 函數,它提供了一個簡潔且計算兩點之間距離的有效方法:
select ST_Distance_Sphere( point(-87.6770458, 41.9631174), point(-73.9898293, 40.7628267))
以上是如何使用MySQL計算兩個城市之間的距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!