mysql計算經緯度亮點之間的距離

jopen 9年前發布 | 2K 次閱讀 SQL Android Studio

1、計算距離的公式比較長(網上查找),建一個mysql函數:

delimiter $$
CREATE FUNCTION FUN_JW_DIST(lng1 double(15,9), lat1 double(15, 9), lng2 double(15,9), lat2 double(15,9))
  RETURNS int
BEGIN
 DECLARE dist int;

SET dist = round(6378.1382asin(sqrt(pow(sin((lat1pi()/180-lat2pi()/180)/2),2)+cos(lat1pi()/180)cos(lat2pi()/180) pow(sin((lng1pi()/180-lng2pi()/180)/2),2)))*1000);

RETURN (dist); END$$ delimiter ;</pre>

測試:

例如:

第一點(116.359751000, 39.936868000)    第二點(117.291179000, 35.657141000)
在數據庫中執行 select  round(6378.138*2*asin(sqrt(pow(sin((39.936868000*pi()/180-35.657141000*pi()/180)/2),2)+cos(39.936868000*pi()/180)*cos(35.657141000*pi()/180)* pow(sin( (116.359751000*pi()/180-117.291179000*pi()/180)/2),2)))*1000)

執行結果: 483402

執行: select FUN_JW_DIST(116.359751000, 39.936868000, 117.291179000, 35.657141000);

執行結果:483402


===========

如果不想使用這個函數可以刪除:

drop function FUN_JW_DIST;

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!