【发布时间】:2011-12-06 09:40:32
【问题描述】:
我在 mysql 中工作。
我想做一个返回两个坐标之间距离的函数。
我想以英里为单位计算这个距离。
这是我的代码:-
DROP FUNCTION `checkDistance`//
CREATE DEFINER=`root`@`localhost` FUNCTION `checkDistance`(
lat1 DOUBLE(18,15),
lon1 DOUBLE(18,15),
lat2 DOUBLE(18,15),
lon2 DOUBLE(18,15)
) RETURNS double(18,15)
DETERMINISTIC
BEGIN
DECLARE delta_lat DOUBLE(18,15);
DECLARE delta_lon DOUBLE(18,15);
DECLARE temp1 DOUBLE(18,15);
DECLARE EARTH_RADIUS DOUBLE(18,15);
DECLARE distance DOUBLE(18,15);
SET lat1 = RADIANS(lat1);
SET lon1 = RADIANS(lon1);
SET lat2 = RADIANS(lat2);
SET lon2 = RADIANS(lon2);
SET delta_lat = lat2 - lat1;
SET delta_lon = lon2 - lon1;
SET temp1 = POW(SIN(delta_lat/2.0),2) + COS(lat1) * COS(lat2) *
POW(SIN(delta_lon/2.0),2);
SET EARTH_RADIUS = 3956.0;
SET distance = EARTH_RADIUS * 2 * ATAN2(SQRT(temp1),SQRT(1-temp1));
RETURN distance;
END
每当我提供这些参数进行测试时:-
lat1=26.860524000000000 lon1=75.762005000000000
lat2= 26.860084000000000 lon2=75.761745000000000
然后生成此输出:- 0.008681244150493
但是当我提供上述参数时,我会得到其他一些公式,如下所示:- 英里 = 0.034364904109861
请告诉我哪个是正确的? 我在网上搜索了很多次,计算这个距离的公式有很多。请检查我上面的代码,如果有问题,请建议我。我想要非常准确的结果。
提前谢谢你。欢迎您发表您的建议。
【问题讨论】:
标签: mysql