在MySQL 中使用緯度和經度計算兩點之間的距離
為了確定給定緯度和經度的兩點之間的距離,MySQL 提供了一個強大的公式。在這種情況下,一個使用者位於城市 3,並尋求找到與其他城市(例如城市 7)的使用者的距離。
解在於利用以下查詢:
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
此查詢採用球面餘弦定律公式,計算球體上兩點之間的距離(以公里為單位)。它將表連接到自身,允許檢索兩個座標對進行計算。
此查詢的結果將提供城市 3 和城市 7 之間的距離(以公里為單位)。要取得以法定英里為單位的距離,只需將常數 111.1111 替換為 69.0。
為了提高定位附近點的效率,請考慮使用 ST_Distance_Sphere 函數:
select ST_Distance_Sphere( point(-87.6770458, 41.9631174), point(-73.9898293, 40.7628267))
或者,邊界框計算可以用於進一步最佳化搜尋。
以上是如何在MySQL中使用經緯度計算兩點之間的距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!