11 Mysql DML DDL 语法
地理位置
计算距离
语法
对于两坐标(a,b),(c,d)
,距离计算如下
1 | st_distance(POINT(a,b),POINT(c,d))*111195 |
说明
MySQL支持地理位置的计算及查询,其主要通过 st_distance 和 st_distance_sphere 两个函数来实现的
- st_distance 计算两个坐标之间的弧度,如果要转换成米,则需要乘111195(地球半径6371000*PI/180)
- st_distance_sphere 计算连个坐标之间在圆上的距离,单位米
需要注意的是两个计算的结果是不同的,原因是不同的纬度每一度的长度不相同,就导致了弧度不一致
分别拿 (1,1),(2,2) 间隔1度
和 ((121.59034, 31.38808),(121.59035, 31.38809) 间隔约一米
两个坐标举例
1 | SELECT st_distance(POINT(1,1),POINT(2,2))*111195 AS distant from dual; -- 得到结果 157253.47706807632 米 |
根据第三四对比可以看出来,间隔1米st_distance_sphere更接近 $\sqrt[]2$ =1.414213562373095
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 KewenBlogs!
评论