介紹MySQL計(jì)算經(jīng)緯度距離相差的方法和步驟。
1. 準(zhǔn)備工作
在開始計(jì)算經(jīng)緯度距離之前,需要準(zhǔn)備以下工作:
- 數(shù)據(jù)庫中存儲(chǔ)了需要計(jì)算距離的經(jīng)緯度信息;
- MySQL版本應(yīng)該在5.7.6以上,因?yàn)樵摪姹局С值厍蚯蝮w計(jì)算函數(shù);
- 應(yīng)該使用存儲(chǔ)過程來計(jì)算距離。
2. 創(chuàng)建存儲(chǔ)過程
創(chuàng)建存儲(chǔ)過程是計(jì)算經(jīng)緯度距離的關(guān)鍵步驟。以下是創(chuàng)建存儲(chǔ)過程的步驟:
- 創(chuàng)建存儲(chǔ)過程并定義輸入?yún)?shù),例如,需要輸入兩個(gè)地點(diǎn)的經(jīng)緯度信息;
- 定義臨時(shí)變量,例如,需要定義經(jīng)緯度之間的差值;ce_Sphere()來計(jì)算兩個(gè)地點(diǎn)之間的距離;
- 返回計(jì)算結(jié)果。
3. 調(diào)用存儲(chǔ)過程
調(diào)用存儲(chǔ)過程是計(jì)算經(jīng)緯度距離的最后一步。以下是調(diào)用存儲(chǔ)過程的步驟:
- 使用CALL語句來調(diào)用存儲(chǔ)過程;
- 傳遞輸入?yún)?shù);
- 獲得返回結(jié)果。
4. 示例代碼
以下是使用MySQL計(jì)算經(jīng)緯度距離相差的示例代碼:
-- 創(chuàng)建存儲(chǔ)過程
DELIMITER $$ce12` DOUBLE)
BEGIN` DOUBLE;
DECLARE `dlat` DOUBLE;
DECLARE `a` DOUBLE;
DECLARE `c` DOUBLE;ce` DOUBLE;21`);
SET `dlat` = RADIANS(`lat2` - `lat1`);` / 2);
SET `c` = 2 * ATAN2(SQRT(`a`), SQRT(1 - `a`));ce` = 6371 * `c`;ce`;
END$$
-- 調(diào)用存儲(chǔ)過程ce`(31.230416, 121.473701, 39.904211, 116.407395);
5. 總結(jié)
ce_Sphere()的使用。