mysql 两点距离_MySQL计算两点距离函数st_distance
最近在做基于GPS定位的业务,要求根据当前位置点,计算距离该点最近的某个位置(如根据当前位置,计算距离最近充电桩位置)。搜索后,发现MySQL提供了一个计算距离的函数st_distance ,具体的使用如下。
st_distance 函数
st_distance 函数是从mysql5.6.1才加入的。
举例1,如下:SET @g1 = POINT(1,1), @g2 = POINT(2,2);
select st_distance (@g1, @g2);
输出结果:1.4142135623730951
另外,st_distance 函数计算结果的单位是度,需要乘111195(地球半径6371000*PI/180)将值转化为米。
举例2,如下:SELECT st_distance (point (1, 1),point(2,2) ) * 111195
输出结果(单位:米):157253.47706807632
当然,我们也可以自定义距离计算函数:CREATE FUNCTION slc (
lat1 DOUBLE,
lon1 DOUBLE,
lat2 DOUBLE,
lon2 DOUBLE
) RETURNS DOUBLE RETURN 6371 * acos(
cos(radians(lat1)) * cos(radians(lat2)) * cos(
radians(lon2) - radians(lon1)
) + sin(radians(lat1)) * sin(radians(lat2))
);
举例3,如下:SELECT slc(1,1,2,2) from DUAL
输出结果(km):157.22543203804852
应用场景:
假设我当时的坐标:117.069,35.86 需要查询我附近50KM内服务区,并按照距离由近及远排列SELECT
s.id,s.name,s.lng,s.lat,
(st_distance (point (lng, lat),point(117.069,35.86) ) *111195) AS distance
FROM
road_servicearea s
HAVING distance<50
ORDER BY distanc
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
