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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部