mysql 两点距离_MySQL实现计算两点之间的距离

DELIMITER $$

CREATE FUNCTION `calculateLineDistance`(startLng double, startLat double, endLng double, endLat double) RETURNS double

BEGIN

declare d2 DOUBLE;

declare d3 DOUBLE;

declare d4 DOUBLE;

declare d5 DOUBLE;

declare d6 DOUBLE;

declare d7 DOUBLE;

declare d8 DOUBLE;

declare d9 DOUBLE;

declare d10 DOUBLE;

declare d11 DOUBLE;

declare d12 DOUBLE;

declare d13 DOUBLE;

declare d14 DOUBLE;

declare arrayOfDouble10 DOUBLE;

declare arrayOfDouble11 DOUBLE;

declare arrayOfDouble12 DOUBLe;

declare arrayOfDouble20 DOUBLE;

declare arrayOfDouble21 DOUBLE;

declare arrayOfDouble22 DOUBLE;

set d2 = startLng * 0.01745329251994329;

set d3 = startLat * 0.01745329251994329;

set d4 = endLng * 0.01745329251994329;

set d5 = endLat * 0.01745329251994329;

set d6 = sin(d2);

set d7 = sin(d3);

set d8 = cos(d2);

set d9 = cos(d3);

set d10 = sin(d4);

set d11 = sin(d5);

set d12 = cos(d4);

set d13 = cos(d5);

set arrayOfDouble10 = (d9 * d8);

set arrayOfDouble11 = (d9 * d6);

set arrayOfDouble12 = d7;

set arrayOfDouble20 = (d13 * d12);

set arrayOfDouble21 = (d13 * d10);

set arrayOfDouble22 = d11;

set d14 = sqrt((arrayOfDouble10 - arrayOfDouble20) * (arrayOfDouble10 - arrayOfDouble20)

+ (arrayOfDouble11 - arrayOfDouble21) * (arrayOfDouble11 - arrayOfDouble21)

+ (arrayOfDouble12 - arrayOfDouble22) * (arrayOfDouble12 - arrayOfDouble22));

return (asin(d14 / 2.0) * 12742001.579854401);

END $$

DELIMITER ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值