您的位置:首页 > 其它

根据经纬度,计算亮点之间的距离

2014-09-16 14:22 302 查看
代码片段

BEGIN
#根据两点的经、纬度值获取两点距离
#返回值为米
#eg.28.199607, 112.983135 28.199559, 112.98556 两点距离大约为237米
DECLARE R,distance,dLat,dLon,a double;
SET R = 6371.0,distance = 0.0,dLat = (lat2 - lat1)*PI() /180,dLon = (lon2 - lon1)*PI() /180;

SET a = SIN(dLat/2)*SIN(dLat/2) + COS(lat1*PI()/180) *COS(lat2*PI()/180) *sin(dLon/2)*SIN(dLon/2);
SET distance = floor((2*ATAN(SQRT(a),SQRT(1-a)))*R*1000);
RETURN distance;
END


根据距离限制进行排序

SELECT
id,
name,
lat,
lon,
szm,
kpy,
type,
getDistatce(lat,:lat,lon,:lon) AS meters
FROM
region
WHERE
status = '0' AND
getDistatce(
lat,
:lat,
lon,
:lon
) < :meters

ORDER BY
meters
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: