MySQL是一種流行的關系型數據庫管理系統,可以通過它來計算兩個坐標點之間的距離。在MySQL中,我們可以使用以下公式來計算兩點之間的距離。
distance = 6371 * acos(cos(radians(lat1)) * cos(radians(lat2)) * cos(radians(long2) - radians(long1)) + sin(radians(lat1)) * sin(radians(lat2)))
上述公式中,lat1
,long1
表示第一個坐標點的緯度和經度,lat2
,long2
表示第二個坐標點的緯度和經度。該公式基于球形地球模型,使用了Haversine公式。
為了更好地使用MySQL計算兩點之間的距離,我們可以將上述公式轉化為可復用的函數。
CREATE FUNCTION `distance`(lat1 DECIMAL(9,6), lon1 DECIMAL(9,6), lat2 DECIMAL(9,6), lon2 DECIMAL(9,6)) RETURNS double DETERMINISTIC BEGIN DECLARE dist double; SET dist = 6371 * ACOS(COS(RADIANS(lat1))*COS(RADIANS(lat2))*COS(RADIANS(lon2)-RADIANS(lon1))+SIN(RADIANS(lat1))*SIN(RADIANS(lat2))); RETURN dist; END
該函數接受四個參數,分別是兩個坐標點的經緯度。經度和緯度都是小數值,DECIMAL(9,6)
指定了小數點后最多有6位數字。
當需要計算兩點之間的距離時,我們可以調用該函數并傳遞經緯度參數。
SELECT distance(40.712776, -74.005974, 30.267153, -97.743057);
上述查詢將返回兩點之間的距離,單位為千米。