mysql length 返回类型_MySQL GLength方法返回的单位是什么?

我猜这个OP约3年太晚了,但是在研究一个类似的话题的时候我遇到了这个问题,所以这里是我的tuppence的价值.

根据www.movable-type.co.uk/scripts/latlong.html,有三种计算地球表面距离的方法,这些方法从最简单到最复杂(从而从最小到最准确):等角近似法,余弦球形法和高速公式.该网站还提供JavaScript.这是等角近似的函数:

function _lineDistanceC(lat1, lon1, lat2, lon2) {

var R = 6371; // km

lat1 = lat1.toRad();

lon1 = lon1.toRad();

lat2 = lat2.toRad();

lon2 = lon2.toRad();

var x = (lon2-lon1) * Math.cos((lat1+lat2)/2);

var y = (lat2-lat1);

return Math.sqrt(x*x + y*y) * R;

}

这是我尝试使用SQL等价物:

drop function if exists lineDistanceC;

delimiter //

CREATE FUNCTION lineDistanceC (la1 DOUBLE, lo1 DOUBLE, la2 DOUBLE, lo2 DOUBLE) RETURNS DOUBLE

BEGIN

SET @r = 6371;

SET @lat1 = RADIANS(la1);

SET @lon1 = RADIANS(lo1);

SET @lat2 = RADIANS(la2);

SET @lon2 = RADIANS(lo2);

SET @x = (@lon2-@lon1) * COS((@lat1+@lat2)/2);

SET @y = (@lat2 - @lat1);

RETURN (SQRT((@x*@x) + (@y*@y)) * @r);

END

//

delimiter ;

我不知道这个公式是多么准确,但是这个网站似乎非常可信,绝对值得一游.使用问题中的坐标,上述JavaScript和SQL的结果(单位为公里)为0.14834420231840376和0.1483442023182845,这使得它们相差不到一毫米,但不好奇的是,OP所期望的147米.请享用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值