風雲論壇后台开发 → 浏览:帖子主题
* 帖子主题:MySQL 内置的坐标距离计算方法
風雲 (ID: 3)
头衔:论坛版主
等级:光明使者
积分:449
发帖:29
来自:保密
注册:2022/3/30 15:28:53
造访:2022/12/6 10:24:37
[ 第 1 楼 ] 回复
普通计算两点之间距离:
st_distance(point(x1, y1), point(x2, y2))
如果需要转为米,需要 *111195,而且由于地球是球形,实际结果会有偏差

计算GEO坐标之间的距离(单位:米):
st_distance_sphere(point(lon1, lat1), point(lon2, lat2))

注意,GEO 坐标顺序为 lon, lat
2022/11/24 13:34:22 IP:已设置保密
pojin (ID: 2)
等级:精灵
积分:117
发帖:1
来自:保密
注册:2022/3/30 11:42:27
造访:2022/12/5 23:24:22
[ 第 2 楼 ] 回复
MySQL 还干这事?
站长回复:是的,功能还很强大😁
2022/11/24 13:51:43 IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:光明使者
积分:449
发帖:29
来自:保密
注册:2022/3/30 15:28:53
造访:2022/12/6 10:24:37
[ 第 3 楼 ] 回复
补充说明:
关于 point(x, y) 的参数,有的认为应该是 lat, lon,也有的人认为应该是 lon, lat。
如果是矩形的坐标系,两个参数的顺序其实没什么区别,但用在球面上就可能会产生一些误差了。
实际编程中,大多使用 LatLon 的顺序,但是我翻阅了 MySQL 官方文档,找到了这么一句话:
Point X and Y coordinates are interpreted as longitude and latitude
所以,正确的顺序应该是 lon(经度),lat(纬度)
2022/11/24 13:55:05 IP:已设置保密
風雲 (ID: 3)
头衔:论坛版主
等级:光明使者
积分:449
发帖:29
来自:保密
注册:2022/3/30 15:28:53
造访:2022/12/6 10:24:37
[ 第 4 楼 ] 回复
外卖配送类应用有个距离计算,用这个就很合适。
2022/11/24 13:56:32 IP:已设置保密
分页: 1, 共 1 页
快速回复主题
账号/密码
用户: 没有注册? 密码:
评论内容