sql 语句 怎样实习 查找出坐标最相似的一条数据呢

2016-10-10 17:14:43 +08:00
 wanderingFaker
1727 次点击
所在节点    问与答
5 条回复
wesley
2016-10-10 17:18:11 +08:00
计算距离最近的
wanderingFaker
2016-10-10 17:27:44 +08:00
@wesley 嗯 我也是这样想的 但怎样实现呢,数据全部取出来再计算比较吗?
shlabc
2016-10-10 17:30:41 +08:00
CREATE FUNCTION GetDistance
(
@GPSLng DECIMAL(12,6),
@GPSLat DECIMAL(12,6),
@Lng DECIMAL(12,6),
@Lat DECIMAL(12,6)
)
RETURNS DECIMAL(12,4)
AS
BEGIN
DECLARE @result DECIMAL(12,4)
SELECT @result = 6378137.0*ACOS(SIN(@GPSLat/180*PI())*SIN(@Lat/180*PI())+COS(@GPSLat/180*PI())*COS(@Lat/180*PI())*COS((@GPSLng-@Lng)/180*PI()))
RETURN @result
END
GO

这是一个在网上找的 SQL Server 的 2 个地图标记距离计算函数,实测有效,具体调用这个函数的 SQL 语句自己写即可, mysql 版、 oracle 版都可类似修改
akira
2016-10-10 17:33:48 +08:00
mysql 5.6 以后 支持坐标类型和坐标距离计算了
mcfog
2016-10-10 19:26:19 +08:00
补充楼上,

mysql 版本老的话,存 geohash 字符串前缀 like
不限 mysql 的话, redis / mongo 都支持

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/311668

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX